jenkins-bot has submitted this change and it was merged. Change subject: Migrate (un)block logging to new system ......................................................................
Migrate (un)block logging to new system Also * Fix a bug where action-reverts doesn't work for anons since the userid is always 0 for them, instead use the username. * Start adding block log flags consistently with core Bug: T124789 Change-Id: Ic6680dad891e2169b392fcfefc1e313af85bc92f --- M AbuseFilter.class.php M Views/AbuseFilterViewRevert.php 2 files changed, 78 insertions(+), 73 deletions(-) Approvals: Alex Monk: Looks good to me, approved jenkins-bot: Verified diff --git a/AbuseFilter.class.php b/AbuseFilter.class.php index b2db560..7fd453a 100755 --- a/AbuseFilter.class.php +++ b/AbuseFilter.class.php @@ -1193,23 +1193,7 @@ break; case 'block': - global $wgUser, $wgAbuseFilterBlockDuration, $wgAbuseFilterAnonBlockDuration; - $filterUser = AbuseFilter::getFilterUser(); - - // Create a block. - $block = new Block; - $block->setTarget( $wgUser->getName() ); - $block->setBlocker( $filterUser ); - $block->mReason = wfMessage( - 'abusefilter-blockreason', - $rule_desc, - $rule_number - )->inContentLanguage()->text(); - $block->isHardblock( false ); - $block->isAutoblocking( true ); - $block->prevents( 'createaccount', true ); - $block->prevents( 'editownusertalk', false ); - + global $wgAbuseFilterBlockDuration, $wgAbuseFilterAnonBlockDuration, $wgUser; if ( $wgUser->isAnon() && $wgAbuseFilterAnonBlockDuration !== null ) { // The user isn't logged in and the anon block duration // doesn't default to $wgAbuseFilterBlockDuration. @@ -1218,25 +1202,16 @@ $expiry = $wgAbuseFilterBlockDuration; } - $block->mExpiry = SpecialBlock::parseExpiryInput( $expiry ); - if ( $block->insert() ) { - // Log it if successful - # Prepare log parameters - $logParams = array(); - if ( $block->mExpiry == 'infinity' ) { - $logParams[] = 'indefinite'; - } else { - $logParams[] = $expiry; - } - $logParams[] = 'nocreate'; + self::doAbuseFilterBlock( + array( + 'desc' => $rule_desc, + 'number' => $rule_number + ), + $wgUser->getName(), + $expiry, + true + ); - $log = new LogPage( 'block' ); - $log->addEntry( 'block', - Title::makeTitle( NS_USER, $wgUser->getName() ), - wfMessage( 'abusefilter-blockreason', $rule_desc, $rule_number )->inContentLanguage()->text(), - $logParams, self::getFilterUser() - ); - } $message = array( 'abusefilter-blocked-display', $rule_desc, @@ -1244,37 +1219,16 @@ ); break; case 'rangeblock': - $filterUser = AbuseFilter::getFilterUser(); + self::doAbuseFilterBlock( + array( + 'desc' => $rule_desc, + 'number' => $rule_number + ), + IP::sanitizeRange( $wgRequest->getIP() . '/16' ), + '1 week', + false + ); - $range = IP::sanitizeRange( $wgRequest->getIP() . '/16' ); - - // Create a block. - $block = new Block; - $block->setTarget( $range ); - $block->setBlocker( $filterUser ); - $block->mReason = wfMessage( - 'abusefilter-blockreason', - $rule_desc, - $rule_number - )->inContentLanguage()->text(); - $block->isHardblock( false ); - $block->prevents( 'createaccount', true ); - $block->prevents( 'editownusertalk', false ); - $block->mExpiry = SpecialBlock::parseExpiryInput( '1 week' ); - - if ( $block->insert() ) { - // Log it if the block was successful - # Prepare log parameters - $logParams = array(); - $logParams[] = 'indefinite'; - $logParams[] = 'nocreate'; - - $log = new LogPage( 'block' ); - $log->addEntry( 'block', Title::makeTitle( NS_USER, $range ), - wfMessage( 'abusefilter-blockreason', $rule_desc, $rule_number )->inContentLanguage()->text(), - $logParams, self::getFilterUser() - ); - } $message = array( 'abusefilter-blocked-display', $rule_desc, @@ -1385,6 +1339,56 @@ } /** + * Perform a block by the AbuseFilter system user + * @param array $rule should have 'desc' and 'number' + * @param string $target + * @param string $expiry + * @param bool $isAutoBlock + */ + protected static function doAbuseFilterBlock( array $rule, $target, $expiry, $isAutoBlock ) { + $filterUser = AbuseFilter::getFilterUser(); + $reason = wfMessage( + 'abusefilter-blockreason', + $rule['desc'], $rule['number'] + )->inContentLanguage()->text(); + + $block = new Block(); + $block->setTarget( $target ); + $block->setBlocker( $filterUser ); + $block->mReason = $reason; + $block->isHardblock( false ); + $block->isAutoblocking( $isAutoBlock ); + $block->prevents( 'createaccount', true ); + $block->prevents( 'editownusertalk', false ); + $block->mExpiry = SpecialBlock::parseExpiryInput( $expiry ); + + $success = $block->insert(); + + if ( $success ) { + // Log it only if the block was successful + $logParams = array(); + $logParams['5::duration'] = ( $block->mExpiry === 'infinity' ) + ? 'indefinite' + : $expiry; + $flags = array( 'anononly' , 'nocreate' ); + if ( !$block->isAutoblocking() && !IP::isIPAddress( $target ) ) { + // Conditionally added same as SpecialBlock + $flags[] = 'noautoblock'; + } + $logParams['6::flags'] = implode( ',', $flags ); + + $logEntry = new ManualLogEntry( 'block', 'block' ); + $logEntry->setTarget( Title::makeTitle( NS_USER, $target ) ); + $logEntry->setComment( $reason ); + $logEntry->setPerformer( $filterUser ); + $logEntry->setParameters( $logParams ); + $blockIds = array_merge( array( $success['id'] ), $success['autoIds'] ); + $logEntry->setRelations( array( 'ipb_id' => $blockIds ) ); + $logEntry->publish( $logEntry->insert() ); + } + } + + /** * @param $throttleId * @param $types * @param $title diff --git a/Views/AbuseFilterViewRevert.php b/Views/AbuseFilterViewRevert.php index b360e90..4e39998 100755 --- a/Views/AbuseFilterViewRevert.php +++ b/Views/AbuseFilterViewRevert.php @@ -193,20 +193,21 @@ function revertAction( $action, $result ) { switch ( $action ) { case 'block': - $block = Block::newFromTarget( User::whoIs( $result['userid'] ) ); - if ( !$block || $block->getBy() != AbuseFilter::getFilterUser()->getId() ) { - return false; // Not blocked by abuse filter. + $block = Block::newFromTarget( $result['user'] ); + if ( !( $block && $block->getBy() == AbuseFilter::getFilterUser()->getId() ) ) { + // Not blocked by abuse filter + return false; } - $block->delete(); - $log = new LogPage( 'block' ); - $log->addEntry( - 'unblock', - Title::makeTitle( NS_USER, $result['user'] ), + $logEntry = new ManualLogEntry( 'block', 'unblock' ); + $logEntry->setTarget( Title::makeTitle( NS_USER, $result['user'] ) ); + $logEntry->setComment( $this->msg( 'abusefilter-revert-reason', $this->mPage->mFilter, $this->mReason )->inContentLanguage()->text() ); + $logEntry->setPerformer( $this->getUser() ); + $logEntry->publish( $logEntry->insert() ); return true; case 'blockautopromote': ObjectCache::getMainStashInstance()->delete( -- To view, visit https://gerrit.wikimedia.org/r/277286 To unsubscribe, visit https://gerrit.wikimedia.org/r/settings Gerrit-MessageType: merged Gerrit-Change-Id: Ic6680dad891e2169b392fcfefc1e313af85bc92f Gerrit-PatchSet: 3 Gerrit-Project: mediawiki/extensions/AbuseFilter Gerrit-Branch: master Gerrit-Owner: Glaisher <glaisher.w...@gmail.com> Gerrit-Reviewer: Alex Monk <kren...@gmail.com> Gerrit-Reviewer: Glaisher <glaisher.w...@gmail.com> Gerrit-Reviewer: Jackmcbarn <jackmcb...@gmail.com> Gerrit-Reviewer: Se4598 <se4...@gmx.de> Gerrit-Reviewer: jenkins-bot <> _______________________________________________ MediaWiki-commits mailing list MediaWiki-commits@lists.wikimedia.org https://lists.wikimedia.org/mailman/listinfo/mediawiki-commits