Okay brion, this patch actually /works/. Thanks to the miracles of testing, I can...
authorAndrew Garrett <werdna@users.mediawiki.org>
Sun, 7 Jan 2007 06:58:21 +0000 (06:58 +0000)
committerAndrew Garrett <werdna@users.mediawiki.org>
Sun, 7 Jan 2007 06:58:21 +0000 (06:58 +0000)
includes/Block.php
includes/User.php

index ff813ba..644fd9c 100644 (file)
@@ -126,6 +126,12 @@ class Block
                        if ( $this->loadFromResult( $res, $killExpired ) ) {
                                return true;
                        }
+
+                       $userObject = User::newFromId($user);
+
+                       if ($userObject->isAllowed('ipblock-exempt') ) {
+                               $address = '';
+                       }
                }
 
                # Try IP block
index 079e103..c66c2d7 100644 (file)
@@ -836,15 +836,10 @@ class User {
                $this->mBlockedby = 0;
                $ip = wfGetIP();
 
-               if (!$this->isAllowed( 'ipblock-exempt' ) ) {
-                       # Check for IP blocks - ipblock-exempt is exempt from all types of IP block.
-                       $check_ip = $ip;
-               }
-
                # User/IP blocking
                $this->mBlock = new Block();
                $this->mBlock->fromMaster( !$bFromSlave );
-               if ( $this->mBlock->load( $check_ip , $this->mId ) ) {
+               if ( $this->mBlock->load( $ip , $this->mId ) ) {
                        wfDebug( __METHOD__.": Found block.\n" );
                        $this->mBlockedby = $this->mBlock->mBy;
                        $this->mBlockreason = $this->mBlock->mReason;
@@ -860,14 +855,14 @@ class User {
                if ( !$this->isAllowed('proxyunbannable') && !in_array( $ip, $wgProxyWhitelist ) ) {
 
                        # Local list
-                       if ( wfIsLocallyBlockedProxy( $check_ip ) ) {
+                       if ( wfIsLocallyBlockedProxy( $ip ) ) {
                                $this->mBlockedby = wfMsg( 'proxyblocker' );
                                $this->mBlockreason = wfMsg( 'proxyblockreason' );
                        }
 
                        # DNSBL
                        if ( !$this->mBlockedby && $wgEnableSorbs && !$this->getID() ) {
-                               if ( $this->inSorbsBlacklist( $check_ip ) ) {
+                               if ( $this->inSorbsBlacklist( $ip ) ) {
                                        $this->mBlockedby = wfMsg( 'sorbs' );
                                        $this->mBlockreason = wfMsg( 'sorbsreason' );
                                }