mirror of
https://gerrit.wikimedia.org/r/mediawiki/extensions/AbuseFilter.git
synced 2024-09-23 10:18:22 +00:00
Add a new method and hook for static variables
This is for adding variables which can be computed even without an ongoing action. Currently, we don't have any, except for timestamp (but that's a bit special). Other extensions could. For instance, we'll be able to expose the content of the spam blacklist. Bug: T211680 Change-Id: Iba59fe8d190dd338ecc8cfd682205bce33c9738b
This commit is contained in:
parent
e7684d8925
commit
b0c5b97b28
|
@ -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() );
|
||||
|
||||
|
@ -2735,6 +2754,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