]> ToastFreeware Gitweb - toast/cookiecaptcha.git/blobdiff - ConfirmEdit_body.php
Localisation updates for extension messages from translatewiki.net (2009-07-31 17...
[toast/cookiecaptcha.git] / ConfirmEdit_body.php
index 00bea4c32d11dc8d04600a0fdc8d40cf1f4083a6..faedc2f46d4f70c71ed1267b0e479467ad6f8ec2 100644 (file)
@@ -15,14 +15,14 @@ class ConfirmEditHooks {
                return $wgCaptcha;
        }
 
                return $wgCaptcha;
        }
 
-       static function confirmEdit( &$editPage, $newtext, $section ) {
+       static function confirmEdit( $editPage, $newtext, $section ) {
                return self::getInstance()->confirmEdit( $editPage, $newtext, $section );
        }
 
                return self::getInstance()->confirmEdit( $editPage, $newtext, $section );
        }
 
-       static function confirmEditMerged( &$editPage, $newtext ) {
+       static function confirmEditMerged( $editPage, $newtext ) {
                return self::getInstance()->confirmEditMerged( $editPage, $newtext );
        }
                return self::getInstance()->confirmEditMerged( $editPage, $newtext );
        }
-       
+
        static function confirmEditAPI( &$editPage, $newtext, &$resultArr ) {
                return self::getInstance()->confirmEditAPI( $editPage, $newtext, $resultArr );
        }
        static function confirmEditAPI( &$editPage, $newtext, &$resultArr ) {
                return self::getInstance()->confirmEditAPI( $editPage, $newtext, $resultArr );
        }
@@ -54,7 +54,7 @@ class CaptchaSpecialPage extends UnlistedSpecialPage {
                $instance = ConfirmEditHooks::getInstance();
                switch( $par ) {
                case "image":
                $instance = ConfirmEditHooks::getInstance();
                switch( $par ) {
                case "image":
-                       if( method_exists($instance,'showImage') )
+                       if ( method_exists( $instance, 'showImage' ) )
                                return $instance->showImage();
                case "help":
                default:
                                return $instance->showImage();
                case "help":
                default:
@@ -63,24 +63,23 @@ class CaptchaSpecialPage extends UnlistedSpecialPage {
        }
 }
 
        }
 }
 
-
 class SimpleCaptcha {
        function SimpleCaptcha() {
                global $wgCaptchaStorageClass;
                $this->storage = new $wgCaptchaStorageClass;
        }
 class SimpleCaptcha {
        function SimpleCaptcha() {
                global $wgCaptchaStorageClass;
                $this->storage = new $wgCaptchaStorageClass;
        }
-       
+
        function getCaptcha() {
        function getCaptcha() {
-               $a = mt_rand(0, 100);
-               $b = mt_rand(0, 10);
-               $op = mt_rand(0, 1) ? '+' : '-';
+               $a = mt_rand( 0, 100 );
+               $b = mt_rand( 0, 10 );
+               $op = mt_rand( 0, 1 ) ? '+' : '-';
 
                $test = "$a $op $b";
 
                $test = "$a $op $b";
-               $answer = ($op == '+') ? ($a + $b) : ($a - $b);
-               return array('question' => $test, 'answer' => $answer);
+               $answer = ( $op == '+' ) ? ( $a + $b ) : ( $a - $b );
+               return array( 'question' => $test, 'answer' => $answer );
        }
        }
-       
-       function addCaptchaAPI(&$resultArr) {
+
+       function addCaptchaAPI( &$resultArr ) {
                $captcha = $this->getCaptcha();
                $index = $this->storeCaptcha( $captcha );
                $resultArr['captcha']['type'] = 'simple';
                $captcha = $this->getCaptcha();
                $index = $this->storeCaptcha( $captcha );
                $resultArr['captcha']['type'] = 'simple';
@@ -88,7 +87,7 @@ class SimpleCaptcha {
                $resultArr['captcha']['id'] = $index;
                $resultArr['captcha']['question'] = $captcha['question'];
        }
                $resultArr['captcha']['id'] = $index;
                $resultArr['captcha']['question'] = $captcha['question'];
        }
-       
+
        /**
         * Insert a captcha prompt into the edit form.
         * This sample implementation generates a simple arithmetic operation;
        /**
         * Insert a captcha prompt into the edit form.
         * This sample implementation generates a simple arithmetic operation;
@@ -147,8 +146,8 @@ class SimpleCaptcha {
         */
        function injectUserCreate( &$template ) {
                global $wgCaptchaTriggers, $wgOut, $wgUser;
         */
        function injectUserCreate( &$template ) {
                global $wgCaptchaTriggers, $wgOut, $wgUser;
-               if( $wgCaptchaTriggers['createaccount'] ) {
-                       if( $wgUser->isAllowed( 'skipcaptcha' ) ) {
+               if ( $wgCaptchaTriggers['createaccount'] ) {
+                       if ( $wgUser->isAllowed( 'skipcaptcha' ) ) {
                                wfDebug( "ConfirmEdit: user group allows skipping captcha on account creation\n" );
                                return true;
                        }
                                wfDebug( "ConfirmEdit: user group allows skipping captcha on account creation\n" );
                                return true;
                        }
@@ -169,7 +168,7 @@ class SimpleCaptcha {
         * @return bool true to keep running callbacks
         */
        function injectUserLogin( &$template ) {
         * @return bool true to keep running callbacks
         */
        function injectUserLogin( &$template ) {
-               if( $this->isBadLoginTriggered() ) {
+               if ( $this->isBadLoginTriggered() ) {
                        global $wgOut;
                        $template->set( 'header',
                                "<div class='captcha'>" .
                        global $wgOut;
                        $template->set( 'header',
                                "<div class='captcha'>" .
@@ -179,7 +178,7 @@ class SimpleCaptcha {
                }
                return true;
        }
                }
                return true;
        }
-       
+
        /**
         * When a bad login attempt is made, increment an expiring counter
         * in the memcache cloud. Later checks for this may trigger a
        /**
         * When a bad login attempt is made, increment an expiring counter
         * in the memcache cloud. Later checks for this may trigger a
@@ -191,17 +190,17 @@ class SimpleCaptcha {
         */
        function triggerUserLogin( $user, $password, $retval ) {
                global $wgCaptchaTriggers, $wgCaptchaBadLoginExpiration, $wgMemc;
         */
        function triggerUserLogin( $user, $password, $retval ) {
                global $wgCaptchaTriggers, $wgCaptchaBadLoginExpiration, $wgMemc;
-               if( $retval == LoginForm::WRONG_PASS && $wgCaptchaTriggers['badlogin'] ) {
+               if ( $retval == LoginForm::WRONG_PASS && $wgCaptchaTriggers['badlogin'] ) {
                        $key = $this->badLoginKey();
                        $count = $wgMemc->get( $key );
                        $key = $this->badLoginKey();
                        $count = $wgMemc->get( $key );
-                       if( !$count ) {
+                       if ( !$count ) {
                                $wgMemc->add( $key, 0, $wgCaptchaBadLoginExpiration );
                        }
                        $count = $wgMemc->incr( $key );
                }
                return true;
        }
                                $wgMemc->add( $key, 0, $wgCaptchaBadLoginExpiration );
                        }
                        $count = $wgMemc->incr( $key );
                }
                return true;
        }
-       
+
        /**
         * Check if a bad login has already been registered for this
         * IP address. If so, require a captcha.
        /**
         * Check if a bad login has already been registered for this
         * IP address. If so, require a captcha.
@@ -212,7 +211,23 @@ class SimpleCaptcha {
                global $wgMemc, $wgCaptchaBadLoginAttempts;
                return intval( $wgMemc->get( $this->badLoginKey() ) ) >= $wgCaptchaBadLoginAttempts;
        }
                global $wgMemc, $wgCaptchaBadLoginAttempts;
                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
        /**
         * Internal cache key for badlogin checks.
         * @return string
@@ -221,7 +236,7 @@ class SimpleCaptcha {
        function badLoginKey() {
                return wfMemcKey( 'captcha', 'badlogin', 'ip', wfGetIP() );
        }
        function badLoginKey() {
                return wfMemcKey( 'captcha', 'badlogin', 'ip', wfGetIP() );
        }
-       
+
        /**
         * Check if the submitted form matches the captcha session data provided
         * by the plugin when the form was generated.
        /**
         * Check if the submitted form matches the captcha session data provided
         * by the plugin when the form was generated.
@@ -243,16 +258,15 @@ class SimpleCaptcha {
         * @param string $action (edit/create/addurl...)
         * @return bool true if action triggers captcha on editPage's namespace
         */
         * @param string $action (edit/create/addurl...)
         * @return bool true if action triggers captcha on editPage's namespace
         */
-       function captchaTriggers( &$editPage, $action) {
-               global $wgCaptchaTriggers, $wgCaptchaTriggersOnNamespace;       
-               //Special config for this NS?
-               if (isset( $wgCaptchaTriggersOnNamespace[$editPage->mTitle->getNamespace()][$action] ) )
+       function captchaTriggers( &$editPage, $action ) {
+               global $wgCaptchaTriggers, $wgCaptchaTriggersOnNamespace;
+               // Special config for this NS?
+               if ( isset( $wgCaptchaTriggersOnNamespace[$editPage->mTitle->getNamespace()][$action] ) )
                        return $wgCaptchaTriggersOnNamespace[$editPage->mTitle->getNamespace()][$action];
 
                        return $wgCaptchaTriggersOnNamespace[$editPage->mTitle->getNamespace()][$action];
 
-               return ( !empty( $wgCaptchaTriggers[$action] ) ); //Default
+               return ( !empty( $wgCaptchaTriggers[$action] ) ); // Default
        }
 
        }
 
-
        /**
         * @param EditPage $editPage
         * @param string $newtext
        /**
         * @param EditPage $editPage
         * @param string $newtext
@@ -264,29 +278,22 @@ class SimpleCaptcha {
                $title = $editPage->mArticle->getTitle();
 
                global $wgUser;
                $title = $editPage->mArticle->getTitle();
 
                global $wgUser;
-               if( $wgUser->isAllowed( 'skipcaptcha' ) ) {
+               if ( $wgUser->isAllowed( 'skipcaptcha' ) ) {
                        wfDebug( "ConfirmEdit: user group allows skipping captcha\n" );
                        return false;
                }
                        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;
 
 
                global $wgEmailAuthentication, $ceAllowConfirmedEmail;
-               if( $wgEmailAuthentication && $ceAllowConfirmedEmail &&
+               if ( $wgEmailAuthentication && $ceAllowConfirmedEmail &&
                        $wgUser->isEmailConfirmed() ) {
                        wfDebug( "ConfirmEdit: user has confirmed mail, skipping captcha\n" );
                        return false;
                }
 
                        $wgUser->isEmailConfirmed() ) {
                        wfDebug( "ConfirmEdit: user has confirmed mail, skipping captcha\n" );
                        return false;
                }
 
-               if( $this->captchaTriggers( $editPage, 'edit' ) ) {
+               if ( $this->captchaTriggers( $editPage, 'edit' ) ) {
                        // Check on all edits
                        global $wgUser;
                        $this->trigger = sprintf( "edit trigger by '%s' at [[%s]]",
                        // Check on all edits
                        global $wgUser;
                        $this->trigger = sprintf( "edit trigger by '%s' at [[%s]]",
@@ -297,8 +304,8 @@ class SimpleCaptcha {
                        return true;
                }
 
                        return true;
                }
 
-               if( $this->captchaTriggers( $editPage, 'create' )  && !$editPage->mTitle->exists() ) {
-                       //Check if creating a page
+               if ( $this->captchaTriggers( $editPage, 'create' )  && !$editPage->mTitle->exists() ) {
+                       // Check if creating a page
                        global $wgUser;
                        $this->trigger = sprintf( "Create trigger by '%s' at [[%s]]",
                                $wgUser->getName(),
                        global $wgUser;
                        $this->trigger = sprintf( "Create trigger by '%s' at [[%s]]",
                                $wgUser->getName(),
@@ -308,7 +315,7 @@ class SimpleCaptcha {
                        return true;
                }
 
                        return true;
                }
 
-               if( $this->captchaTriggers( $editPage, 'addurl' ) ) {
+               if ( $this->captchaTriggers( $editPage, 'addurl' ) ) {
                        // Only check edits that add URLs
                        if ( $merged ) {
                                // Get links from the database
                        // Only check edits that add URLs
                        if ( $merged ) {
                                // Get links from the database
@@ -327,7 +334,7 @@ class SimpleCaptcha {
                        $addedLinks = array_diff( $unknownLinks, $oldLinks );
                        $numLinks = count( $addedLinks );
 
                        $addedLinks = array_diff( $unknownLinks, $oldLinks );
                        $numLinks = count( $addedLinks );
 
-                       if( $numLinks > 0 ) {
+                       if ( $numLinks > 0 ) {
                                global $wgUser;
                                $this->trigger = sprintf( "%dx url trigger by '%s' at [[%s]]: %s",
                                        $numLinks,
                                global $wgUser;
                                $this->trigger = sprintf( "%dx url trigger by '%s' at [[%s]]: %s",
                                        $numLinks,
@@ -340,20 +347,20 @@ class SimpleCaptcha {
                }
 
                global $wgCaptchaRegexes;
                }
 
                global $wgCaptchaRegexes;
-               if( !empty( $wgCaptchaRegexes ) ) {
+               if ( $wgCaptchaRegexes ) {
                        // Custom regex checks
                        $oldtext = $this->loadText( $editPage, $section );
 
                        // Custom regex checks
                        $oldtext = $this->loadText( $editPage, $section );
 
-                       foreach( $wgCaptchaRegexes as $regex ) {
+                       foreach ( $wgCaptchaRegexes as $regex ) {
                                $newMatches = array();
                                $newMatches = array();
-                               if( preg_match_all( $regex, $newtext, $newMatches ) ) {
+                               if ( preg_match_all( $regex, $newtext, $newMatches ) ) {
                                        $oldMatches = array();
                                        preg_match_all( $regex, $oldtext, $oldMatches );
 
                                        $addedMatches = array_diff( $newMatches[0], $oldMatches[0] );
 
                                        $numHits = count( $addedMatches );
                                        $oldMatches = array();
                                        preg_match_all( $regex, $oldtext, $oldMatches );
 
                                        $addedMatches = array_diff( $newMatches[0], $oldMatches[0] );
 
                                        $numHits = count( $addedMatches );
-                                       if( $numHits > 0 ) {
+                                       if ( $numHits > 0 ) {
                                                global $wgUser;
                                                $this->trigger = sprintf( "%dx %s at [[%s]]: %s",
                                                        $numHits,
                                                global $wgUser;
                                                $this->trigger = sprintf( "%dx %s at [[%s]]: %s",
                                                        $numHits,
@@ -381,7 +388,7 @@ class SimpleCaptcha {
                global $wgCaptchaWhitelist;
                $source = wfMsgForContent( 'captcha-addurl-whitelist' );
 
                global $wgCaptchaWhitelist;
                $source = wfMsgForContent( 'captcha-addurl-whitelist' );
 
-               $whitelist = wfEmptyMsg( 'captcha-addurl-whitelist', $source ) 
+               $whitelist = wfEmptyMsg( 'captcha-addurl-whitelist', $source )
                        ? false
                        : $this->buildRegexes( explode( "\n", $source ) );
 
                        ? false
                        : $this->buildRegexes( explode( "\n", $source ) );
 
@@ -410,29 +417,29 @@ class SimpleCaptcha {
                } else {
                        # Make regex
                        # It's faster using the S modifier even though it will usually only be run once
                } else {
                        # Make regex
                        # It's faster using the S modifier even though it will usually only be run once
-                       //$regex = 'http://+[a-z0-9_\-.]*(' . implode( '|', $lines ) . ')';
-                       //return '/' . str_replace( '/', '\/', preg_replace('|\\\*/|', '/', $regex) ) . '/Si';
+                       // $regex = 'http://+[a-z0-9_\-.]*(' . implode( '|', $lines ) . ')';
+                       // return '/' . str_replace( '/', '\/', preg_replace('|\\\*/|', '/', $regex) ) . '/Si';
                        $regexes = '';
                        $regexStart = '/^https?:\/\/+[a-z0-9_\-.]*(';
                        $regexEnd = ')/Si';
                        $regexMax = 4096;
                        $build = false;
                        $regexes = '';
                        $regexStart = '/^https?:\/\/+[a-z0-9_\-.]*(';
                        $regexEnd = ')/Si';
                        $regexMax = 4096;
                        $build = false;
-                       foreach( $lines as $line ) {
+                       foreach ( $lines as $line ) {
                                // FIXME: not very robust size check, but should work. :)
                                // FIXME: not very robust size check, but should work. :)
-                               if( $build === false ) {
+                               if ( $build === false ) {
                                        $build = $line;
                                        $build = $line;
-                               } elseif( strlen( $build ) + strlen( $line ) > $regexMax ) {
+                               } elseif ( strlen( $build ) + strlen( $line ) > $regexMax ) {
                                        $regexes .= $regexStart .
                                        $regexes .= $regexStart .
-                                               str_replace( '/', '\/', preg_replace('|\\\*/|', '/', $build) ) .
+                                               str_replace( '/', '\/', preg_replace( '|\\\*/|', '/', $build ) ) .
                                                $regexEnd;
                                        $build = $line;
                                } else {
                                        $build .= '|' . $line;
                                }
                        }
                                                $regexEnd;
                                        $build = $line;
                                } else {
                                        $build .= '|' . $line;
                                }
                        }
-                       if( $build !== false ) {
+                       if ( $build !== false ) {
                                $regexes .= $regexStart .
                                $regexes .= $regexStart .
-                                       str_replace( '/', '\/', preg_replace('|\\\*/|', '/', $build) ) .
+                                       str_replace( '/', '\/', preg_replace( '|\\\*/|', '/', $build ) ) .
                                        $regexEnd;
                        }
                        return $regexes;
                                        $regexEnd;
                        }
                        return $regexes;
@@ -445,7 +452,7 @@ class SimpleCaptcha {
        function getLinksFromTracker( $title ) {
                $dbr =& wfGetDB( DB_SLAVE );
                $id = $title->getArticleId(); // should be zero queries
        function getLinksFromTracker( $title ) {
                $dbr =& wfGetDB( DB_SLAVE );
                $id = $title->getArticleId(); // should be zero queries
-               $res = $dbr->select( 'externallinks', array( 'el_to' ), 
+               $res = $dbr->select( 'externallinks', array( 'el_to' ),
                        array( 'el_from' => $id ), __METHOD__ );
                $links = array();
                while ( $row = $dbr->fetchObject( $res ) ) {
                        array( 'el_from' => $id ), __METHOD__ );
                $links = array();
                while ( $row = $dbr->fetchObject( $res ) ) {
@@ -453,14 +460,14 @@ class SimpleCaptcha {
                }
                return $links;
        }
                }
                return $links;
        }
-       
+
        /**
         * Backend function for confirmEdit() and confirmEditAPI()
         * @return bool false if the CAPTCHA is rejected, true otherwise
         */
        /**
         * Backend function for confirmEdit() and confirmEditAPI()
         * @return bool false if the CAPTCHA is rejected, true otherwise
         */
-       private function doConfirmEdit( &$editPage, $newtext, $section, $merged = false ) {
-               if( $this->shouldCheck( $editPage, $newtext, $section, $merged ) ) {
-                       if( $this->passCaptcha() ) {
+       private function doConfirmEdit( $editPage, $newtext, $section, $merged = false ) {
+               if ( $this->shouldCheck( $editPage, $newtext, $section, $merged ) ) {
+                       if ( $this->passCaptcha() ) {
                                return true;
                        } else {
                                return false;
                                return true;
                        } else {
                                return false;
@@ -479,14 +486,13 @@ class SimpleCaptcha {
         * @param bool $merged
         * @return bool true to continue saving, false to abort and show a captcha form
         */
         * @param bool $merged
         * @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 ) ) {
+       function confirmEdit( $editPage, $newtext, $section, $merged = false ) {
+               if ( defined( 'MW_API' ) ) {
                        # API mode
                        # API mode
-                       # The CAPTCHA was already checked and approved 
+                       # The CAPTCHA was already checked and approved
                        return true;
                }
                        return true;
                }
-               if( !$this->doConfirmEdit( $editPage, $newtext, $section, $merged ) ) {
+               if ( !$this->doConfirmEdit( $editPage, $newtext, $section, $merged ) ) {
                        $editPage->showEditForm( array( &$this, 'editCallback' ) );
                        return false;
                }
                        $editPage->showEditForm( array( &$this, 'editCallback' ) );
                        return false;
                }
@@ -498,14 +504,14 @@ class SimpleCaptcha {
         * @param EditPage $editPage
         * @param string $newtext
         */
         * @param EditPage $editPage
         * @param string $newtext
         */
-       function confirmEditMerged( &$editPage, $newtext ) {
+       function confirmEditMerged( $editPage, $newtext ) {
                return $this->confirmEdit( $editPage, $newtext, false, true );
        }
                return $this->confirmEdit( $editPage, $newtext, false, true );
        }
-       
-       
-       function confirmEditAPI( &$editPage, $newtext, &$resultArr) {
-               if( !$this->doConfirmEdit( $editPage, $newtext, false, false ) ) {
-                       $this->addCaptchaAPI($resultArr);
+
+
+       function confirmEditAPI( &$editPage, $newtext, &$resultArr ) {
+               if ( !$this->doConfirmEdit( $editPage, $newtext, false, false ) ) {
+                       $this->addCaptchaAPI( $resultArr );
                        return false;
                }
                return true;
                        return false;
                }
                return true;
@@ -519,20 +525,23 @@ class SimpleCaptcha {
         */
        function confirmUserCreate( $u, &$message ) {
                global $wgCaptchaTriggers, $wgUser;
         */
        function confirmUserCreate( $u, &$message ) {
                global $wgCaptchaTriggers, $wgUser;
-               if( $wgCaptchaTriggers['createaccount'] ) {
-                       if( $wgUser->isAllowed( 'skipcaptcha' ) ) {
+               if ( $wgCaptchaTriggers['createaccount'] ) {
+                       if ( $wgUser->isAllowed( 'skipcaptcha' ) ) {
                                wfDebug( "ConfirmEdit: user group allows skipping captcha on account creation\n" );
                                return true;
                        }
                                wfDebug( "ConfirmEdit: user group allows skipping captcha on account creation\n" );
                                return true;
                        }
+                       if ( $this->isIPWhitelisted() )
+                               return true;
+
                        $this->trigger = "new account '" . $u->getName() . "'";
                        $this->trigger = "new account '" . $u->getName() . "'";
-                       if( !$this->passCaptcha() ) {
+                       if ( !$this->passCaptcha() ) {
                                $message = wfMsg( 'captcha-createaccount-fail' );
                                return false;
                        }
                }
                return true;
        }
                                $message = wfMsg( 'captcha-createaccount-fail' );
                                return false;
                        }
                }
                return true;
        }
-       
+
        /**
         * Hook for user login form submissions.
         * @param User $u
        /**
         * Hook for user login form submissions.
         * @param User $u
@@ -540,9 +549,12 @@ class SimpleCaptcha {
         * @return bool true to continue, false to abort user creation
         */
        function confirmUserLogin( $u, $pass, &$retval ) {
         * @return bool true to continue, false to abort user creation
         */
        function confirmUserLogin( $u, $pass, &$retval ) {
-               if( $this->isBadLoginTriggered() ) {
+               if ( $this->isBadLoginTriggered() ) {
+                       if ( $this->isIPWhitelisted() )
+                               return true;
+
                        $this->trigger = "post-badlogin login '" . $u->getName() . "'";
                        $this->trigger = "post-badlogin login '" . $u->getName() . "'";
-                       if( !$this->passCaptcha() ) {
+                       if ( !$this->passCaptcha() ) {
                                $message = wfMsg( 'captcha-badlogin-fail' );
                                // Emulate a bad-password return to confuse the shit out of attackers
                                $retval = LoginForm::WRONG_PASS;
                                $message = wfMsg( 'captcha-badlogin-fail' );
                                // Emulate a bad-password return to confuse the shit out of attackers
                                $retval = LoginForm::WRONG_PASS;
@@ -559,9 +571,9 @@ class SimpleCaptcha {
         */
        function passCaptcha() {
                $info = $this->retrieveCaptcha();
         */
        function passCaptcha() {
                $info = $this->retrieveCaptcha();
-               if( $info ) {
+               if ( $info ) {
                        global $wgRequest;
                        global $wgRequest;
-                       if( $this->keyMatch( $wgRequest->getVal('wpCaptchaWord'), $info ) ) {
+                       if ( $this->keyMatch( $wgRequest->getVal( 'wpCaptchaWord' ), $info ) ) {
                                $this->log( "passed" );
                                $this->clearCaptcha( $info );
                                return true;
                                $this->log( "passed" );
                                $this->clearCaptcha( $info );
                                return true;
@@ -596,7 +608,7 @@ class SimpleCaptcha {
         * @return string captcha ID key
         */
        function storeCaptcha( $info ) {
         * @return string captcha ID key
         */
        function storeCaptcha( $info ) {
-               if( !isset( $info['index'] ) ) {
+               if ( !isset( $info['index'] ) ) {
                        // Assign random index if we're not udpating
                        $info['index'] = strval( mt_rand() );
                }
                        // Assign random index if we're not udpating
                        $info['index'] = strval( mt_rand() );
                }
@@ -631,11 +643,11 @@ class SimpleCaptcha {
         */
        function loadText( $editPage, $section ) {
                $rev = Revision::newFromTitle( $editPage->mTitle );
         */
        function loadText( $editPage, $section ) {
                $rev = Revision::newFromTitle( $editPage->mTitle );
-               if( is_null( $rev ) ) {
+               if ( is_null( $rev ) ) {
                        return "";
                } else {
                        $text = $rev->getText();
                        return "";
                } else {
                        $text = $rev->getText();
-                       if( $section != '' ) {
+                       if ( $section != '' ) {
                                return Article::getSection( $text, $section );
                        } else {
                                return $text;
                                return Article::getSection( $text, $section );
                        } else {
                                return $text;
@@ -669,22 +681,21 @@ class SimpleCaptcha {
                        $wgOut->addWikiText( wfMsg( 'captchahelp-cookies-needed' ) );
                }
        }
                        $wgOut->addWikiText( wfMsg( 'captchahelp-cookies-needed' ) );
                }
        }
-
 }
 
 class CaptchaSessionStore {
        function store( $index, $info ) {
                $_SESSION['captcha' . $info['index']] = $info;
        }
 }
 
 class CaptchaSessionStore {
        function store( $index, $info ) {
                $_SESSION['captcha' . $info['index']] = $info;
        }
-       
+
        function retrieve( $index ) {
        function retrieve( $index ) {
-               if( isset( $_SESSION['captcha' . $index] ) ) {
+               if ( isset( $_SESSION['captcha' . $index] ) ) {
                        return $_SESSION['captcha' . $index];
                } else {
                        return false;
                }
        }
                        return $_SESSION['captcha' . $index];
                } else {
                        return false;
                }
        }
-       
+
        function clear( $index ) {
                unset( $_SESSION['captcha' . $index] );
        }
        function clear( $index ) {
                unset( $_SESSION['captcha' . $index] );
        }
@@ -704,13 +715,13 @@ class CaptchaCacheStore {
        function retrieve( $index ) {
                global $wgMemc;
                $info = $wgMemc->get( wfMemcKey( 'captcha', $index ) );
        function retrieve( $index ) {
                global $wgMemc;
                $info = $wgMemc->get( wfMemcKey( 'captcha', $index ) );
-               if( $info ) {
+               if ( $info ) {
                        return $info;
                } else {
                        return false;
                }
        }
                        return $info;
                } else {
                        return false;
                }
        }
-       
+
        function clear( $index ) {
                global $wgMemc;
                $wgMemc->delete( wfMemcKey( 'captcha', $index ) );
        function clear( $index ) {
                global $wgMemc;
                $wgMemc->delete( wfMemcKey( 'captcha', $index ) );
@@ -720,4 +731,3 @@ class CaptchaCacheStore {
                return false;
        }
 }
                return false;
        }
 }
-