blob: 0859f06680081b1f1d6dd37be3fa9ed8ae019847 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
|
<?php
/**
* Creates a ReCaptcha widget. Does not return any data; handling the data submitted by the
* widget is callers' responsibility.
*/
class HTMLReCaptchaField extends HTMLFormField {
/** @var string Public key parameter to be passed to ReCaptcha. */
protected $key;
/** @var string Theme parameter to be passed to ReCaptcha. */
protected $theme;
/** @var bool Use secure connection to ReCaptcha. */
protected $secure;
/** @var string Error returned by ReCaptcha in the previous round. */
protected $error;
/**
* Parameters:
* - key: (string, required) ReCaptcha public key
* - theme: (string, required) ReCaptcha theme
* - secure: (bool) Use secure connection to ReCaptcha
* - error: (string) ReCaptcha error from previous round
* @param array $params
*/
public function __construct( array $params ) {
$params += [
'secure' => true,
'error' => null,
];
parent::__construct( $params );
$this->key = $params['key'];
$this->theme = $params['theme'];
$this->secure = $params['secure'];
$this->error = $params['error'];
}
public function getInputHTML( $value ) {
$attribs = $this->getAttributes( [ 'tabindex' ] ) + [ 'theme' => $this->theme ];
$js = 'var RecaptchaOptions = ' . Xml::encodeJsVar( $attribs );
$widget = recaptcha_get_html( $this->key, $this->error, $this->secure );
return Html::inlineScript( $js ) . $widget;
}
public function skipLoadData( $request ) {
return true;
}
}
|