mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-09-24 10:48:17 +00:00
Merge "Add a new method and hook for static variables"
This commit is contained in:
commit
90796123a8
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
|
Loading…
Reference in a new issue