[ 'local' => [ids], 'global' => [ids] ] ]. * @fixme avoid global state */ public static $logIds = []; public const HISTORY_MAPPINGS = [ 'af_pattern' => 'afh_pattern', 'af_user' => 'afh_user', 'af_user_text' => 'afh_user_text', 'af_timestamp' => 'afh_timestamp', 'af_comments' => 'afh_comments', 'af_public_comments' => 'afh_public_comments', 'af_deleted' => 'afh_deleted', 'af_id' => 'afh_filter', 'af_group' => 'afh_group', ]; /** * Returns an associative array of filters which were tripped * * @param VariableHolder $vars * @param Title $title * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups) * @param string $mode 'execute' for edits and logs, 'stash' for cached matches * @return bool[] Map of (integer filter ID => bool) * @deprecated Since 1.34 See comment on FilterRunner::checkAllFilters */ public static function checkAllFilters( VariableHolder $vars, Title $title, $group = 'default', $mode = 'execute' ) { $parser = AbuseFilterServices::getParserFactory()->newParser( $vars ); $user = RequestContext::getMain()->getUser(); $runnerFactory = AbuseFilterServices::getFilterRunnerFactory(); $runner = $runnerFactory->newRunner( $user, $title, $vars, $group ); $runner->parser = $parser; return $runner->checkAllFilters(); } /** * @param VariableHolder $vars * @param Title $title * @param string $group The filter's group (as defined in $wgAbuseFilterValidGroups) * @param User $user The user performing the action * @return Status * @deprecated Since 1.34 Build a FilterRunner instance and call run() on that. */ public static function filterAction( VariableHolder $vars, Title $title, $group, User $user ) { $runnerFactory = AbuseFilterServices::getFilterRunnerFactory(); $runner = $runnerFactory->newRunner( $user, $title, $vars, $group ); return $runner->run(); } /** * Get the history ID of the first change to a given filter * * @param int $filterID Filter id * @return string */ public static function getFirstFilterChange( $filterID ) { static $firstChanges = []; if ( !isset( $firstChanges[$filterID] ) ) { $dbr = wfGetDB( DB_REPLICA ); $historyID = $dbr->selectField( 'abuse_filter_history', 'afh_id', [ 'afh_filter' => $filterID, ], __METHOD__, [ 'ORDER BY' => 'afh_timestamp ASC' ] ); $firstChanges[$filterID] = $historyID; } return $firstChanges[$filterID]; } /** * Shortcut for checking whether $user can view the given revision, with mask * SUPPRESSED_ALL. * * @note This assumes that a revision with the given ID exists * * @param RevisionRecord $revRec * @param User $user * @return bool */ public static function userCanViewRev( RevisionRecord $revRec, User $user ) : bool { return $revRec->audienceCan( RevisionRecord::SUPPRESSED_ALL, RevisionRecord::FOR_THIS_USER, $user ); } } class_alias( AbuseFilter::class, 'AbuseFilter' );