]> ToastFreeware Gitweb - toast/cookiecaptcha.git/blobdiff - ConfirmEdit_body.php
Localisation updates for extension messages from translatewiki.net (2009-07-17 22...
[toast/cookiecaptcha.git] / ConfirmEdit_body.php
index 2e7fd048304da42aac10cc38b062edb7b933674e..2d2124623a46a17146954c266d39476bd9d00098 100644 (file)
@@ -54,7 +54,8 @@ class CaptchaSpecialPage extends UnlistedSpecialPage {
                $instance = ConfirmEditHooks::getInstance();
                switch( $par ) {
                case "image":
-                       return $instance->showImage();
+                       if( method_exists($instance,'showImage') )
+                               return $instance->showImage();
                case "help":
                default:
                        return $instance->showHelp();
@@ -212,6 +213,22 @@ class SimpleCaptcha {
                return intval( $wgMemc->get( $this->badLoginKey() ) ) >= $wgCaptchaBadLoginAttempts;
        }
        
+       /**
+        * Check if the IP is allowed to skip captchas
+        */
+       function isIPWhitelisted() {
+               global $wgCaptchaWhitelistIP;
+               if( $wgCaptchaWhitelistIP ) {
+                       $ip = wfGetIp();
+                       foreach ( $wgCaptchaWhitelistIP as $range ) {
+                               if ( IP::isInRange( $ip, $range ) ) {
+                                       return true;
+                               }
+                       }
+               }
+               return false;
+       }
+       
        /**
         * Internal cache key for badlogin checks.
         * @return string
@@ -267,15 +284,8 @@ class SimpleCaptcha {
                        wfDebug( "ConfirmEdit: user group allows skipping captcha\n" );
                        return false;
                }
-               global $wgCaptchaWhitelistIP;
-               if( !empty( $wgCaptchaWhitelistIP ) ) {
-                       $ip = wfGetIp();
-                       foreach ( $wgCaptchaWhitelistIP as $range ) {
-                               if ( IP::isInRange( $ip, $range ) ) {
-                                       return false;
-                               }
-                       }
-               }
+               if( $this->isIPWhitelisted() )
+                       return false;
 
 
                global $wgEmailAuthentication, $ceAllowConfirmedEmail;
@@ -339,7 +349,7 @@ class SimpleCaptcha {
                }
 
                global $wgCaptchaRegexes;
-               if( !empty( $wgCaptchaRegexes ) ) {
+               if( $wgCaptchaRegexes ) {
                        // Custom regex checks
                        $oldtext = $this->loadText( $editPage, $section );
 
@@ -479,8 +489,7 @@ class SimpleCaptcha {
         * @return bool true to continue saving, false to abort and show a captcha form
         */
        function confirmEdit( &$editPage, $newtext, $section, $merged = false ) {
-               global $wgTitle;
-               if( is_null( $wgTitle ) ) {
+               if( defined('MW_API') ) {
                        # API mode
                        # The CAPTCHA was already checked and approved 
                        return true;
@@ -523,6 +532,9 @@ class SimpleCaptcha {
                                wfDebug( "ConfirmEdit: user group allows skipping captcha on account creation\n" );
                                return true;
                        }
+                       if( $this->isIPWhitelisted() )
+                               return true;
+                               
                        $this->trigger = "new account '" . $u->getName() . "'";
                        if( !$this->passCaptcha() ) {
                                $message = wfMsg( 'captcha-createaccount-fail' );
@@ -540,6 +552,9 @@ class SimpleCaptcha {
         */
        function confirmUserLogin( $u, $pass, &$retval ) {
                if( $this->isBadLoginTriggered() ) {
+                       if( $this->isIPWhitelisted() )
+                               return true;
+                       
                        $this->trigger = "post-badlogin login '" . $u->getName() . "'";
                        if( !$this->passCaptcha() ) {
                                $message = wfMsg( 'captcha-badlogin-fail' );