Make the instantiation tests actually work.
[lhc/web/wiklou.git] / includes / User.php
index 2f2c631..688146a 100644 (file)
@@ -216,7 +216,7 @@ class User {
                $mBlockreason, $mBlock, $mEffectiveGroups, $mBlockedGlobally,
                $mLocked, $mHideName, $mOptions;
        //@}
-       
+
        static $idCacheByName = array();
 
        /**
@@ -636,12 +636,12 @@ class User {
         */
        function getPasswordValidity( $password ) {
                global $wgMinimalPasswordLength, $wgContLang;
-               
+
                $result = false; //init $result to false for the internal checks
-               
+
                if( !wfRunHooks( 'isValidPassword', array( $password, &$result, $this ) ) )
                        return $result;
-               
+
                if ( $result === false ) {
                        if( strlen( $password ) < $wgMinimalPasswordLength ) {
                                return 'passwordtooshort';
@@ -1055,7 +1055,7 @@ class User {
                        $defOpt['searchNs'.$nsnum] = !empty( $wgNamespacesToBeSearchedDefault[$nsnum] );
                }
                $defOpt['skin'] = $wgDefaultSkin;
-               
+
                return $defOpt;
        }
 
@@ -1100,7 +1100,7 @@ class User {
         *                    done against master.
         */
        function getBlockedStatus( $bFromSlave = true ) {
-               global $wgEnableSorbs, $wgProxyWhitelist, $wgUser;
+               global $wgProxyWhitelist, $wgUser;
 
                if ( -1 != $this->mBlockedby ) {
                        wfDebug( "User::getBlockedStatus: already loaded.\n" );
@@ -1168,8 +1168,8 @@ class User {
                        }
 
                        # DNSBL
-                       if ( !$this->mBlockedby && $wgEnableSorbs && !$this->getID() ) {
-                               if ( $this->inSorbsBlacklist( $ip ) ) {
+                       if ( !$this->mBlockedby && !$this->getID() ) {
+                               if ( $this->isDnsBlacklisted( $ip ) ) {
                                        $this->mBlockedby = wfMsg( 'sorbs' );
                                        $this->mBlockreason = wfMsg( 'sorbsreason' );
                                }
@@ -1183,16 +1183,24 @@ class User {
        }
 
        /**
-        * Whether the given IP is in the SORBS blacklist.
+        * Whether the given IP is in a DNS blacklist.
         *
         * @param $ip \string IP to check
+        * @param $checkWhitelist Boolean: whether to check the whitelist first
         * @return \bool True if blacklisted.
         */
-       function inSorbsBlacklist( $ip ) {
-               global $wgEnableSorbs, $wgSorbsUrl;
+       function isDnsBlacklisted( $ip, $checkWhitelist = false ) {
+               global $wgEnableSorbs, $wgEnableDnsBlacklist,
+                       $wgSorbsUrl, $wgDnsBlacklistUrls, $wgProxyWhitelist;
 
-               return $wgEnableSorbs &&
-                       $this->inDnsBlacklist( $ip, $wgSorbsUrl );
+               if ( !$wgEnableDnsBlacklist && !$wgEnableSorbs )
+                       return false;
+
+               if ( $checkWhitelist && in_array( $ip, $wgProxyWhitelist ) )
+                       return false;
+
+               $urls = array_merge( $wgDnsBlacklistUrls, (array)$wgSorbsUrl );
+               return $this->inDnsBlacklist( $ip, $urls );
        }
 
        /**
@@ -1340,11 +1348,11 @@ class User {
                                } else {
                                        wfDebug( __METHOD__ . ": ok. $key at $count $summary\n" );
                                }
-                               $wgMemc->incr( $key );
                        } else {
                                wfDebug( __METHOD__ . ": adding record for $key $summary\n" );
-                               $wgMemc->set( $key, 1, intval( $period ) ); // first ping
+                               $wgMemc->add( $key, 0, intval( $period ) ); // first ping
                        }
+                       $wgMemc->incr( $key );
                }
 
                wfProfileOut( __METHOD__ );
@@ -1384,9 +1392,9 @@ class User {
                        $blocked = false;
                        wfDebug( __METHOD__ . ": self-talk page, ignoring any blocks\n" );
                }
-               
+
                wfRunHooks( 'UserIsBlockedFrom', array( $this, $title, &$blocked, &$allowUsertalk ) );
-               
+
                wfProfileOut( __METHOD__ );
                return $blocked;
        }
@@ -2517,9 +2525,9 @@ class User {
                                'user_id' => $this->mId
                        ), __METHOD__
                );
-               
+
                $this->saveOptions();
-               
+
                wfRunHooks( 'UserSaveSettings', array( $this ) );
                $this->clearSharedCache();
                $this->getUserPage()->invalidateCache();
@@ -2618,7 +2626,7 @@ class User {
 
                // Clear instance cache other than user table data, which is already accurate
                $this->clearInstanceCache();
-               
+
                $this->saveOptions();
        }
 
@@ -3555,11 +3563,11 @@ class User {
         * @param $byEmail Boolean: account made by email?
         */
        public function addNewUserLogEntry( $byEmail = false ) {
-               global $wgUser, $wgContLang, $wgNewUserLog;
+               global $wgUser, $wgNewUserLog;
                if( empty( $wgNewUserLog ) ) {
                        return true; // disabled
                }
-               $talk = $wgContLang->getFormattedNsText( NS_TALK );
+
                if( $this->getName() == $wgUser->getName() ) {
                        $action = 'create';
                        $message = '';
@@ -3594,7 +3602,6 @@ class User {
        }
 
        protected function loadOptions() {
-               global $wgCookiePrefix;
                $this->load();
                if ( $this->mOptionsLoaded || !$this->getId() )
                        return;
@@ -3623,11 +3630,6 @@ class User {
                                $this->mOptionOverrides[$row->up_property] = $row->up_value;
                                $this->mOptions[$row->up_property] = $row->up_value;
                        }
-
-                       //null skin if User::mId is loaded out of session data without persistant credentials
-                       if ( !isset( $_SESSION['wsToken'] ) && !isset( $_COOKIE["{$wgCookiePrefix}Token"] ) )
-                               $this->mOptions['skin'] = null;
-
                }
 
                $this->mOptionsLoaded = true;
@@ -3642,11 +3644,11 @@ class User {
 
                $this->loadOptions();
                $dbw = wfGetDB( DB_MASTER );
-               
+
                $insert_rows = array();
-               
+
                $saveOptions = $this->mOptions;
-               
+
                // Allow hooks to abort, for instance to save to a global profile.
                // Reset options to default state before saving.
                if( !wfRunHooks( 'UserSaveOptions', array( $this, &$saveOptions ) ) )
@@ -3682,7 +3684,7 @@ class User {
        }
 
        /**
-        * Provide an array of HTML 5 attributes to put on an input element
+        * Provide an array of HTML5 attributes to put on an input element
         * intended for the user to enter a new password.  This may include
         * required, title, and/or pattern, depending on $wgMinimalPasswordLength.
         *