More maintenance for ConfirmEdit extension.
[toast/cookiecaptcha.git] / ReCaptcha.php
index b7c3d27db74e8df7ed7ceb060cfa2299a4df5f14..8d44e6f6342798aa94d32565467f827319b43180 100644 (file)
@@ -1,8 +1,8 @@
 <?php
 
 /**
- * Captcha class using the reCAPTCHA widget. 
- * Stop Spam. Read Books.  
+ * Captcha class using the reCAPTCHA widget.
+ * Stop Spam. Read Books.
  *
  * @addtogroup Extensions
  * @author Mike Crawford <mike.crawford@gmail.com>
@@ -14,10 +14,13 @@ if ( !defined( 'MEDIAWIKI' ) ) {
        exit;
 }
 
-require_once dirname( __FILE__ ) . '/ConfirmEdit.php';
+$dir = __DIR__;
+require_once $dir . '/ConfirmEdit.php';
 $wgCaptchaClass = 'ReCaptcha';
 
-$wgExtensionMessagesFiles['ReCaptcha'] = dirname( __FILE__ ) . '/ReCaptcha.i18n.php';
+$wgExtensionMessagesFiles['ReCaptcha'] = $dir . '/ReCaptcha.i18n.php';
+
+$wgAutoloadClasses['ReCaptcha'] = $dir . '/ReCaptcha.class.php';
 
 require_once( 'recaptchalib.php' );
 
@@ -53,94 +56,9 @@ function efReCaptcha() {
                $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 <a href='" .
-                    htmlentities(recaptcha_get_signup_url ($wgServerName, "mediawiki")) . "'>here</a>.");
-       }       
-}
-
-
-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' );
-               $escapedTheme = Xml::escapeJsString( $wgReCaptchaTheme );
-
-               return "<script>var RecaptchaOptions = { theme : '$escapedTheme', tabindex : 1 }; </script> " .
-                       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;
-
+       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 <a href='" .
+                               htmlentities( recaptcha_get_signup_url ( $wgServerName, "mediawiki" ) ) . "'>here</a>." );
        }
-
-       /**
-        * 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;
-       }
-
 }