X-Git-Url: https://git.toastfreeware.priv.at/toast/cookiecaptcha.git/blobdiff_plain/98c3f7ce569f37d0c746a0986d7a6a77cbe246b1..beb6a182ebf8245b424314c4d622930d0ded221c:/ReCaptcha.php
diff --git a/ReCaptcha.php b/ReCaptcha.php
index 4d65700..a875527 100644
--- a/ReCaptcha.php
+++ b/ReCaptcha.php
@@ -1,139 +1,145 @@
-
- * @copyright Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
- * @licence MIT/X11
- */
-
-if( !defined( 'MEDIAWIKI' ) ) {
- exit;
-}
-
-$wgExtensionMessagesFiles['ReCaptcha'] = dirname( __FILE__ ) . '/ReCaptcha.i18n.php';
-
-require_once( 'recaptchalib.php' );
-
-// Set these in LocalSettings.php
-$wgReCaptchaPublicKey = '';
-$wgReCaptchaPrivateKey = '';
-// For backwards compatibility
-$recaptcha_public_key = '';
-$recaptcha_private_key = '';
-
-
-/**
- * Make sure the keys are defined.
- */
-function efReCaptcha() {
- global $wgReCaptchaPublicKey, $wgReCaptchaPrivateKey;
- global $recaptcha_public_key, $recaptcha_private_key;
- global $wgServerName;
-
- // Backwards compatibility
- $wgReCaptchaPublicKey == '' ) {
- $wgReCaptchaPublicKey = $recaptcha_public_key;
- }
- if ( $wgReCaptchaPrivateKey == '' ) {
- $wgReCaptchaPrivateKey = $recaptcha_private_key;
- }
-
- if ($wgReCaptchaPublicKey == '' || $wgReCaptchaPrivateKey == '') {
- die ('You need to set $wgReCaptchaPrivateKey and $wgReCaptchaPublicKey in LocalSettings.php to ' .
- "use the reCAPTCHA plugin. You can sign up for a key here.");
- }
-}
-
-
-class ReCaptcha extends SimpleCaptcha {
-
- //reCAPTHCA error code returned from recaptcha_check_answer
- private $recaptcha_error = null;
-
-
- /**
- * Displays the reCAPTCHA widget.
- * If $this->recaptcha_error is set, it will display an error in the widget.
- *
- */
- function getForm() {
- global $wgReCaptchaPublicKey;
- return " " .
- recaptcha_get_html($wgReCaptchaPublicKey, $this->recaptcha_error);
- }
-
-
-
- /**
- * Calls the library function recaptcha_check_answer to verify the users input.
- * Sets $this->recaptcha_error if the user is incorrect.
- * @return boolean
- *
- */
- function passCaptcha() {
- global $wgReCaptchaPrivateKey;
- $recaptcha_response = recaptcha_check_answer ($wgReCaptchaPrivateKey,
- wfGetIP (),
- $_POST['recaptcha_challenge_field'],
- $_POST['recaptcha_response_field']);
- if (!$recaptcha_response->is_valid) {
- $this->recaptcha_error = $recaptcha_response->error;
- return false;
- }
- $recaptcha_error = null;
- return true;
-
- }
-
-
-
- /**
- * Called on all edit page saves. (EditFilter events)
- * @return boolean - true if page save should continue, false if should display Captcha widget.
- */
- function confirmEdit( $editPage, $newtext, $section ) {
- if( $this->shouldCheck( $editPage, $newtext, $section ) ) {
-
- if (!isset($_POST['recaptcha_response_field'])) {
- //User has not yet been presented with Captcha, show the widget.
- $editPage->showEditForm( array( &$this, 'editCallback' ) );
- return false;
- }
-
- if( $this->passCaptcha() ) {
- return true;
- } else {
- //Try again - show the widget
- $editPage->showEditForm( array( &$this, 'editCallback' ) );
- return false;
- }
-
- } else {
- wfDebug( "ConfirmEdit: no need to show captcha.\n" );
- return true;
- }
- }
-
-
-
- /**
- * Show a message asking the user to enter a captcha on edit
- * The result will be treated as wiki text
- *
- * @param $action Action being performed
- * @return string
- */
- function getMessage( $action ) {
- $name = 'recaptcha-' . $action;
- $text = wfMsg( $name );
- # Obtain a more tailored message, if possible, otherwise, fall back to
- # the default for edits
- return wfEmptyMsg( $name, $text ) ? wfMsg( 'recaptcha-edit' ) : $text;
- }
-
-}
+
+ * @copyright Copyright (c) 2007 reCAPTCHA -- http://recaptcha.net
+ * @licence MIT/X11
+ */
+
+if ( !defined( 'MEDIAWIKI' ) ) {
+ exit;
+}
+
+require_once dirname( __FILE__ ) . '/ConfirmEdit.php';
+$wgCaptchaClass = 'ReCaptcha';
+
+$wgExtensionMessagesFiles['ReCaptcha'] = dirname( __FILE__ ) . '/ReCaptcha.i18n.php';
+
+require_once( 'recaptchalib.php' );
+
+// Set these in LocalSettings.php
+$wgReCaptchaPublicKey = '';
+$wgReCaptchaPrivateKey = '';
+// For backwards compatibility
+$recaptcha_public_key = '';
+$recaptcha_private_key = '';
+
+/**
+ * Sets the theme for ReCaptcha
+ *
+ * See http://code.google.com/apis/recaptcha/docs/customization.html
+ */
+$wgReCaptchaTheme = 'red';
+
+$wgExtensionFunctions[] = 'efReCaptcha';
+
+/**
+ * Make sure the keys are defined.
+ */
+function efReCaptcha() {
+ global $wgReCaptchaPublicKey, $wgReCaptchaPrivateKey;
+ global $recaptcha_public_key, $recaptcha_private_key;
+ global $wgServerName;
+
+ // Backwards compatibility
+ if ( $wgReCaptchaPublicKey == '' ) {
+ $wgReCaptchaPublicKey = $recaptcha_public_key;
+ }
+ if ( $wgReCaptchaPrivateKey == '' ) {
+ $wgReCaptchaPrivateKey = $recaptcha_private_key;
+ }
+
+ if ($wgReCaptchaPublicKey == '' || $wgReCaptchaPrivateKey == '') {
+ die ('You need to set $wgReCaptchaPrivateKey and $wgReCaptchaPublicKey in LocalSettings.php to ' .
+ "use the reCAPTCHA plugin. You can sign up for a key here.");
+ }
+}
+
+
+class ReCaptcha extends SimpleCaptcha {
+
+ //reCAPTHCA error code returned from recaptcha_check_answer
+ private $recaptcha_error = null;
+
+ /**
+ * Displays the reCAPTCHA widget.
+ * If $this->recaptcha_error is set, it will display an error in the widget.
+ *
+ */
+ function getForm() {
+ global $wgReCaptchaPublicKey, $wgReCaptchaTheme;
+ $useHttps = ( isset( $_SERVER['HTTPS'] ) && $_SERVER['HTTPS'] == 'on' );
+ $js = 'var RecaptchaOptions = ' . Xml::encodeJsVar( array( 'theme' => $wgReCaptchaTheme, 'tabindex' => 1 ) );
+
+ return Html::inlineScript( $js ) . recaptcha_get_html($wgReCaptchaPublicKey, $this->recaptcha_error, $useHttps);
+ }
+
+ /**
+ * Calls the library function recaptcha_check_answer to verify the users input.
+ * Sets $this->recaptcha_error if the user is incorrect.
+ * @return boolean
+ *
+ */
+ function passCaptcha() {
+ global $wgReCaptchaPrivateKey;
+ $recaptcha_response = recaptcha_check_answer ($wgReCaptchaPrivateKey,
+ wfGetIP (),
+ $_POST['recaptcha_challenge_field'],
+ $_POST['recaptcha_response_field']);
+ if (!$recaptcha_response->is_valid) {
+ $this->recaptcha_error = $recaptcha_response->error;
+ return false;
+ }
+ $recaptcha_error = null;
+ return true;
+
+ }
+
+ /**
+ * Called on all edit page saves. (EditFilter events)
+ * @return boolean - true if page save should continue, false if should display Captcha widget.
+ */
+ function confirmEdit( $editPage, $newtext, $section, $merged = false ) {
+ if( $this->shouldCheck( $editPage, $newtext, $section ) ) {
+
+ if (!isset($_POST['recaptcha_response_field'])) {
+ //User has not yet been presented with Captcha, show the widget.
+ $editPage->showEditForm( array( &$this, 'editCallback' ) );
+ return false;
+ }
+
+ if( $this->passCaptcha() ) {
+ return true;
+ } else {
+ //Try again - show the widget
+ $editPage->showEditForm( array( &$this, 'editCallback' ) );
+ return false;
+ }
+
+ } else {
+ wfDebug( "ConfirmEdit: no need to show captcha.\n" );
+ return true;
+ }
+ }
+
+ /**
+ * Show a message asking the user to enter a captcha on edit
+ * The result will be treated as wiki text
+ *
+ * @param $action Action being performed
+ * @return string
+ */
+ function getMessage( $action ) {
+ $name = 'recaptcha-' . $action;
+ $text = wfMsg( $name );
+ # Obtain a more tailored message, if possible, otherwise, fall back to
+ # the default for edits
+ return wfEmptyMsg( $name, $text ) ? wfMsg( 'recaptcha-edit' ) : $text;
+ }
+
+}