As an admin,
When I visit Special:AbuseLog
And an entry has a revision associated with it that is revision-deleted at admin level
Expected result: as an admin, I can see the filter entry
Actual result: I don't
Notes:
public function formatRow( $row, $isListItem = true ) { $user = $this->getUser(); [...] $isHidden = self::isHidden( $row ); // @todo T224203 Try to show the details if the revision is deleted but the AbuseLog entry // is not. However, watch out to avoid showing too much stuff. if ( !self::canSeeHidden( $user ) && $isHidden ) { return ''; } [...]
/** * Given a log entry row, decides whether or not it can be viewed by the public. * * @param stdClass $row The abuse_filter_log row object. * * @return bool|string true if the item is explicitly hidden, false if it is not. * The string 'implicit' if it is hidden because the corresponding revision is hidden. */ public static function isHidden( $row ) { // First, check if the entry is hidden. Since this is an oversight-level deletion, // it's more important than the associated revision being deleted. if ( $row->afl_deleted ) { return true; } if ( $row->afl_rev_id ) { $revision = MediaWikiServices::getInstance() ->getRevisionLookup() ->getRevisionById( $row->afl_rev_id ); if ( $revision && $revision->getVisibility() !== 0 ) { return 'implicit'; } } return false; }
Since the revision's visibility is not 0, it is implicitly hidden, which is silently converted to true in the check for whether the user can view the revision.