SpecialLog: Don't ignore offender when it's a nonexistent username
authorBrad Jorsch <bjorsch@wikimedia.org>
Wed, 17 Jan 2018 15:44:29 +0000 (10:44 -0500)
committerBrad Jorsch <bjorsch@wikimedia.org>
Wed, 17 Jan 2018 18:59:40 +0000 (13:59 -0500)
When viewing the suppression log, the 'offender' field is ignored if it
specifies a username that happens to not exist locally. It would make
more sense for it to filter by that name and return an empty list.

Ideally such searches would have the possibility of succeeding, since
imported log entries can be attributed to a nonexistent user, but the
necessary data isn't currently being stored. The actor table patch
(I8d825eb0) will start storing that data once migration begins, although
a maintenance script run would be needed to populate it for old log
entries.

Change-Id: I73ac78f7623178ab878135b910a22013723885d3

includes/specials/SpecialLog.php

index 511cfbf..de3fd19 100644 (file)
@@ -79,10 +79,12 @@ class SpecialLog extends SpecialPage {
                $qc = [];
                if ( $opts->getValue( 'type' ) == 'suppress' ) {
                        $offender = User::newFromName( $opts->getValue( 'offender' ), false );
-                       if ( $offender && $offender->getId() > 0 ) {
-                               $qc = [ 'ls_field' => 'target_author_id', 'ls_value' => $offender->getId() ];
-                       } elseif ( $offender && IP::isIPAddress( $offender->getName() ) ) {
-                               $qc = [ 'ls_field' => 'target_author_ip', 'ls_value' => $offender->getName() ];
+                       if ( $offender ) {
+                               if ( $offender->getId() > 0 ) {
+                                       $qc = [ 'ls_field' => 'target_author_id', 'ls_value' => $offender->getId() ];
+                               } else {
+                                       $qc = [ 'ls_field' => 'target_author_ip', 'ls_value' => $offender->getName() ];
+                               }
                        }
                } else {
                        // Allow extensions to add relations to their search types