Fix batch-testing (follow-up to r48855)

This commit is contained in:
Andrew Garrett 2009-03-26 04:41:05 +00:00
parent 3458bf1a7a
commit 920f04d4fa
5 changed files with 34 additions and 9 deletions

View file

@ -336,14 +336,15 @@ class AbuseFilter {
return htmlspecialchars( self::evaluateExpression( $expr ) );
}
public static function checkConditions( $conds, $vars, $ignoreError = true ) {
public static function checkConditions( $conds, $vars, $ignoreError = true,
$keepVars = 'resetvars' ) {
global $wgAbuseFilterParserClass;
static $parser;
wfProfileIn( __METHOD__ );
if ( is_null($parser) ) {
if ( is_null($parser) || $keepVars == 'resetvars' ) {
$parser = new $wgAbuseFilterParserClass;
$parser->setVars( $vars );
@ -388,7 +389,8 @@ class AbuseFilter {
// Check conditions...
$pattern = trim($row->af_pattern);
if ( self::checkConditions( $pattern, $vars ) ) {
if ( self::checkConditions( $pattern, $vars, true /* ignore errors */,
'keepvars' ) ) {
// Record match.
$filter_matched[$row->af_id] = true;
} else {

View file

@ -118,6 +118,7 @@ Filter description: $7 ($8) ($9)',
'abusefilter-tools' => 'Abuse filter tools',
'abusefilter-loglink' => 'View the abuse log',
'abusefilter-return' => 'Return to filter management',
'abusefilter-status-global' => 'Global',
// Options form
'abusefilter-list-options' => 'Options',
@ -204,6 +205,7 @@ Please ask a user with permission to add restricted actions to make the change f
'abusefilter-edit-revert' => 'Revert actions taken by this filter',
'abusefilter-edit-tools' => 'Tools:',
'abusefilter-edit-test-link' => 'Test this filter against recent edits',
'abusefilter-edit-global' => 'Apply this filter globally',
// Filter editing helpers
'abusefilter-edit-builder-select' => 'Select an option to add it at the cursor',

View file

@ -107,3 +107,8 @@ $wgAbuseFilterRestrictedActions = array( 'block', 'degroup' );
$wgAbuseFilterUDPPrefix = 'abusefilter:';
$wgAbuseFilterUDPAddress = null;
$wgAbuseFilterUDPPort = null;
// Centralised filters
$wgAbuseFilterCentralDB = null;
$wgAbuseFilterIsCentral = false;

View file

@ -280,6 +280,10 @@ class AbuseFilterViewEdit extends AbuseFilterView {
// Build checkboxen
$checkboxes = array( 'hidden', 'enabled', 'deleted' );
$flags = '';
global $wgAbuseFilterIsCentral;
if ($wgAbuseFilterIsCentral)
$checkboxes[] = 'global';
if (isset($row->af_throttled) && $row->af_throttled) {
global $wgAbuseFilterEmergencyDisableThreshold;
@ -582,6 +586,7 @@ class AbuseFilterViewEdit extends AbuseFilterView {
$obj->af_pattern = '';
$obj->af_enabled = 1;
$obj->af_hidden = 0;
$obj->af_global = 0;
return array( $obj, array() );
}
@ -641,6 +646,8 @@ class AbuseFilterViewEdit extends AbuseFilterView {
$row->af_deleted = $wgRequest->getBool( 'wpFilterDeleted' );
$row->af_enabled = $wgRequest->getBool( 'wpFilterEnabled' ) && !$row->af_deleted;
$row->af_hidden = $wgRequest->getBool( 'wpFilterHidden' );
global $wgAbuseFilterIsCentral;
$row->af_global = $wgRequest->getBool( 'wpFilterGlobal' ) && $wgAbuseFilterIsCentral;
// Actions
global $wgAbuseFilterAvailableActions;

View file

@ -153,7 +153,9 @@ class AbuseFilterPager extends TablePager {
'tables' => array('abuse_filter', 'abuse_filter_action'),
'fields' => array(
'af_id',
'(af_enabled | af_deleted << 1) AS status',
'af_enabled',
'af_deleted',
'af_global',
'af_public_comments',
'af_hidden',
'af_hit_count',
@ -220,12 +222,19 @@ class AbuseFilterPager extends TablePager {
}
return htmlspecialchars( implode( ', ', $displayActions ) );
case 'status':
if ($value & 2)
return wfMsgExt( 'abusefilter-deleted', 'parseinline' );
elseif ($value & 1)
return wfMsgExt( 'abusefilter-enabled', 'parseinline' );
$statuses = array();
if ($row->af_deleted)
$statuses[] = wfMsgExt( 'abusefilter-deleted', 'parseinline' );
elseif ($row->af_enabled)
$statuses[] = wfMsgExt( 'abusefilter-enabled', 'parseinline' );
else
return wfMsgExt( 'abusefilter-disabled', 'parseinline' );
$statuses[] = wfMsgExt( 'abusefilter-disabled', 'parseinline' );
global $wgAbuseFilterIsCentral;
if ($row->af_global && $wgAbuseFilterIsCentral)
$statuses[] = wfMsgExt( 'abusefilter-status-global', 'parseinline' );
return $wgLang->semicolonList( $statuses );
case 'af_hidden':
$msg = $value ? 'abusefilter-hidden' : 'abusefilter-unhidden';
return wfMsgExt( $msg, 'parseinline' );