Merge "Add a new method and hook for static variables"

This commit is contained in:
jenkins-bot 2018-12-30 22:50:35 +00:00 committed by Gerrit Code Review
commit 90796123a8
2 changed files with 26 additions and 2 deletions

View file

@ -28,7 +28,8 @@ $content: The Content object
&$text: Set this to the desired text.
'AbuseFilter-filterAction': Allows overwriting of abusefilter variables in AbuseFilter::filterAction just
before they're checked against filters.
before they're checked against filters. Note that you may specify custom variables in a saner way using other hooks:
AbuseFilter-generateTitleVars, AbuseFilter-generateUserVars and AbuseFilter-generateStaticVars.
$vars: AbuseFilterVariableHolder with variables
$title: Title object
@ -41,6 +42,9 @@ $prefix: Variable name prefix
$vars: AbuseFilterVariableHolder
$user: User object
'AbuseFilter-generateStaticVars': Allows altering static variables, i.e. independent from page and user
$vars: AbuseFilterVariableHolder
'AbuseFilter-interceptVariable': Called before a variable is set in AFComputedVariable::compute to be able to set
it before the core code runs. Return false to make the function return right after.
$method: Method to generate the variable

View file

@ -468,6 +468,20 @@ class AbuseFilter {
return $vars;
}
/**
* Computes all variables unrelated to title and user. In general, these variables are known
* even without an ongoing action.
*
* @return AbuseFilterVariableHolder
*/
public static function generateStaticVars() {
$vars = new AbuseFilterVariableHolder();
// For now, we don't have variables to add; other extensions could.
Hooks::run( 'AbuseFilter-generateStaticVars', [ $vars ] );
return $vars;
}
/**
* @param string $filter
* @return true|array True when successful, otherwise a two-element array with exception message
@ -493,8 +507,11 @@ class AbuseFilter {
return 'BADSYNTAX';
}
// Static vars are the only ones available
$vars = self::generateStaticVars();
$vars->setVar( 'timestamp', wfTimestamp( TS_UNIX ) );
/** @var $parser AbuseFilterParser */
$parser = new $wgAbuseFilterParserClass;
$parser = new $wgAbuseFilterParserClass( $vars );
return $parser->evaluateExpression( $expr );
}
@ -1114,6 +1131,8 @@ class AbuseFilter {
// Add vars from extensions
Hooks::run( 'AbuseFilter-filterAction', [ &$vars, $title ] );
$vars->addHolders( self::generateStaticVars() );
$vars->setVar( 'context', 'filter' );
$vars->setVar( 'timestamp', time() );
@ -2737,6 +2756,7 @@ class AbuseFilter {
if ( $vars ) {
$vars->setVar( 'context', 'generated' );
$vars->setVar( 'timestamp', wfTimestamp( TS_UNIX, $row->rc_timestamp ) );
$vars->addHolders( self::generateStaticVars() );
}
return $vars;