MediaWiki  1.34.0
HTMLReCaptchaNoCaptchaField.php
Go to the documentation of this file.
1 <?php
2 
7 class HTMLReCaptchaNoCaptchaField extends HTMLFormField {
9  protected $key;
10 
12  protected $error;
13 
20  public function __construct( array $params ) {
21  $params += [ 'error' => null ];
22  parent::__construct( $params );
23 
24  $this->key = $params['key'];
25  $this->error = $params['error'];
26 
27  $this->mName = 'g-recaptcha-response';
28  }
29 
30  public function getInputHTML( $value ) {
31  $out = $this->mParent->getOutput();
32  $lang = htmlspecialchars( urlencode( $this->mParent->getLanguage()->getCode() ) );
33 
34  // Insert reCAPTCHA script, in display language, if available.
35  // Language falls back to the browser's display language.
36  // See https://developers.google.com/recaptcha/docs/faq
37  $out->addHeadItem(
38  'g-recaptchascript',
39  "<script src=\"https://www.google.com/recaptcha/api.js?hl={$lang}\" async defer></script>"
40  );
41  $output = Html::element( 'div', [
42  'class' => [
43  'g-recaptcha',
44  'mw-confirmedit-captcha-fail' => (bool)$this->error,
45  ],
46  'data-sitekey' => $this->key,
47  ] );
48  $htmlUrlencoded = htmlspecialchars( urlencode( $this->key ) );
49  $output .= <<<HTML
50 <noscript>
51  <div>
52  <div style="width: 302px; height: 422px; position: relative;">
53  <div style="width: 302px; height: 422px; position: absolute;">
54  <iframe src="https://www.google.com/recaptcha/api/fallback?k={$htmlUrlencoded}&hl={$lang}"
55  frameborder="0" scrolling="no"
56  style="width: 302px; height:422px; border-style: none;">
57  </iframe>
58  </div>
59  </div>
60  <div style="width: 300px; height: 60px; border-style: none;
61  bottom: 12px; left: 25px; margin: 0px; padding: 0px; right: 25px;
62  background: #f9f9f9; border: 1px solid #c1c1c1; border-radius: 3px;">
63  <textarea id="g-recaptcha-response" name="g-recaptcha-response"
64  class="g-recaptcha-response"
65  style="width: 250px; height: 40px; border: 1px solid #c1c1c1;
66  margin: 10px 25px; padding: 0px; resize: none;" >
67  </textarea>
68  </div>
69  </div>
70 </noscript>
71 HTML;
72  return $output;
73  }
74 }
HTMLFormField\__construct
__construct( $params)
Initialise the object.
Definition: HTMLFormField.php:389
$lang
if(!isset( $args[0])) $lang
Definition: testCompression.php:33
HTMLFormField
The parent class to generate form fields.
Definition: HTMLFormField.php:7
$output
$output
Definition: SyntaxHighlight.php:335
HTMLFormField\getInputHTML
getInputHTML( $value)
This function must be implemented to return the HTML to generate the input object itself.