X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialLog.php;h=6a11bf4d949e7c76510948ae1b5b9df457e580f9;hb=9a37fb8e4851d13bfb208eb886c9947a7f21571c;hp=511cfbf5d0698ebf24d4c24c3f355b81181496d4;hpb=af420fe8b5e2f56346c58c3bdf8dcb7bd2b10f9b;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialLog.php b/includes/specials/SpecialLog.php index 511cfbf5d0..6a11bf4d94 100644 --- a/includes/specials/SpecialLog.php +++ b/includes/specials/SpecialLog.php @@ -32,6 +32,8 @@ class SpecialLog extends SpecialPage { } public function execute( $par ) { + global $wgActorTableSchemaMigrationStage; + $this->setHeaders(); $this->outputHeader(); $this->getOutput()->addModules( 'mediawiki.userSuggest' ); @@ -78,11 +80,34 @@ class SpecialLog extends SpecialPage { # Handle type-specific inputs $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() ]; + $offenderName = $opts->getValue( 'offender' ); + $offender = empty( $offenderName ) ? null : User::newFromName( $offenderName, false ); + if ( $offender ) { + if ( $wgActorTableSchemaMigrationStage === MIGRATION_NEW ) { + $qc = [ 'ls_field' => 'target_author_actor', 'ls_value' => $offender->getActorId() ]; + } else { + if ( $offender->getId() > 0 ) { + $field = 'target_author_id'; + $value = $offender->getId(); + } else { + $field = 'target_author_ip'; + $value = $offender->getName(); + } + if ( !$offender->getActorId() ) { + $qc = [ 'ls_field' => $field, 'ls_value' => $value ]; + } else { + $db = wfGetDB( DB_REPLICA ); + $qc = [ + 'ls_field' => [ 'target_author_actor', $field ], // So LogPager::getQueryInfo() works right + $db->makeList( [ + $db->makeList( + [ 'ls_field' => 'target_author_actor', 'ls_value' => $offender->getActorId() ], LIST_AND + ), + $db->makeList( [ 'ls_field' => $field, 'ls_value' => $value ], LIST_AND ), + ], LIST_OR ), + ]; + } + } } } else { // Allow extensions to add relations to their search types