#15577: Moved spreading of autoblocks from User::isBlocked() et al to ::setCookies...
authorFran Rogers <krimpet@users.mediawiki.org>
Sat, 13 Sep 2008 05:48:11 +0000 (05:48 +0000)
committerFran Rogers <krimpet@users.mediawiki.org>
Sat, 13 Sep 2008 05:48:11 +0000 (05:48 +0000)
includes/User.php

index bc4b131..b7819e5 100644 (file)
@@ -834,6 +834,11 @@ class User {
                } else if ( isset( $_COOKIE["{$wgCookiePrefix}Token"] ) ) {
                        $passwordCorrect = $this->mToken == $_COOKIE["{$wgCookiePrefix}Token"];
                        $from = 'cookie';
                } else if ( isset( $_COOKIE["{$wgCookiePrefix}Token"] ) ) {
                        $passwordCorrect = $this->mToken == $_COOKIE["{$wgCookiePrefix}Token"];
                        $from = 'cookie';
+
+                       if ( ( $sName == $this->mName ) && $passwordCorrect ) {
+                               # New session from old cookie - spread any applicable autoblocks
+                               $this->spreadBlock();
+                       }
                } else {
                        # No session or persistent login cookie
                        $this->loadDefaults();
                } else {
                        # No session or persistent login cookie
                        $this->loadDefaults();
@@ -1049,9 +1054,6 @@ class User {
                        $this->mBlockedby = $this->mBlock->mBy;
                        $this->mBlockreason = $this->mBlock->mReason;
                        $this->mHideName = $this->mBlock->mHideName;
                        $this->mBlockedby = $this->mBlock->mBy;
                        $this->mBlockreason = $this->mBlock->mReason;
                        $this->mHideName = $this->mBlock->mHideName;
-                       if ( $this->isLoggedIn() ) {
-                               $this->spreadBlock();
-                       }
                } else {
                        $this->mBlock = null;
                        wfDebug( __METHOD__.": No block.\n" );
                } else {
                        $this->mBlock = null;
                        wfDebug( __METHOD__.": No block.\n" );
@@ -2236,6 +2238,9 @@ class User {
                } else {
                        $cookies['Token'] = false;
                }
                } else {
                        $cookies['Token'] = false;
                }
+
+               # Spread any applicable autoblocks
+               $this->spreadBlock();
                
                wfRunHooks( 'UserSetCookies', array( $this, &$session, &$cookies ) );
                $_SESSION = $session + $_SESSION;
                
                wfRunHooks( 'UserSetCookies', array( $this, &$session, &$cookies ) );
                $_SESSION = $session + $_SESSION;