diff --git a/extension.json b/extension.json index fbeec8b80..ec0649fa4 100644 --- a/extension.json +++ b/extension.json @@ -133,7 +133,8 @@ "MediaWiki\\Extension\\AbuseFilter\\Hooks\\": "includes/Hooks/", "MediaWiki\\Extension\\AbuseFilter\\LogFormatter\\": "includes/LogFormatter/", "MediaWiki\\Extension\\AbuseFilter\\Parser\\": "includes/ParserNS/", - "MediaWiki\\Extension\\AbuseFilter\\Filter\\": "includes/Filter/" + "MediaWiki\\Extension\\AbuseFilter\\Filter\\": "includes/Filter/", + "MediaWiki\\Extension\\AbuseFilter\\Watcher\\": "includes/Watcher/" }, "AutoloadClasses": { "AbuseFilter": "includes/AbuseFilter.php", @@ -167,7 +168,6 @@ "MediaWiki\\Extension\\AbuseFilter\\FilterLookup": "includes/FilterLookup.php", "MediaWiki\\Extension\\AbuseFilter\\KeywordsManager": "includes/KeywordsManager.php", "MediaWiki\\Extension\\AbuseFilter\\AbuseFilterPermissionManager": "includes/AbuseFilterPermissionManager.php", - "MediaWiki\\Extension\\AbuseFilter\\EmergencyWatcher": "includes/EmergencyWatcher.php", "MediaWiki\\Extension\\AbuseFilter\\AbuseFilterServices": "includes/AbuseFilterServices.php", "MediaWiki\\Extension\\AbuseFilter\\FilterProfiler": "includes/FilterProfiler.php", "MediaWiki\\Extension\\AbuseFilter\\ChangeTagger": "includes/ChangeTagger.php", diff --git a/includes/AbuseFilterRunner.php b/includes/AbuseFilterRunner.php index 8fa5dd4b8..9ce59b0d6 100644 --- a/includes/AbuseFilterRunner.php +++ b/includes/AbuseFilterRunner.php @@ -2,12 +2,12 @@ use MediaWiki\Extension\AbuseFilter\AbuseFilterServices; use MediaWiki\Extension\AbuseFilter\ChangeTagger; -use MediaWiki\Extension\AbuseFilter\EmergencyWatcher; use MediaWiki\Extension\AbuseFilter\Filter\Filter; use MediaWiki\Extension\AbuseFilter\FilterLookup; use MediaWiki\Extension\AbuseFilter\FilterProfiler; use MediaWiki\Extension\AbuseFilter\Hooks\AbuseFilterHookRunner; use MediaWiki\Extension\AbuseFilter\VariableGenerator\VariableGenerator; +use MediaWiki\Extension\AbuseFilter\Watcher\Watcher; use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; use MediaWiki\Session\SessionManager; @@ -80,8 +80,8 @@ class AbuseFilterRunner { /** @var FilterLookup */ private $filterLookup; - /** @var EmergencyWatcher */ - private $emergencyWatcher; + /** @var Watcher[] */ + private $watchers; /** * @param User $user The user who performed the action being filtered @@ -110,7 +110,8 @@ class AbuseFilterRunner { $this->changeTagger = AbuseFilterServices::getChangeTagger(); $this->filterUser = AbuseFilterServices::getFilterUser()->getUser(); $this->filterLookup = AbuseFilterServices::getFilterLookup(); - $this->emergencyWatcher = AbuseFilterServices::getEmergencyWatcher(); + // TODO Inject, add a hook for custom watchers + $this->watchers = [ AbuseFilterServices::getEmergencyWatcher() ]; } /** @@ -1123,7 +1124,9 @@ class AbuseFilterRunner { 'global' => $globalLogIDs ]; - $this->emergencyWatcher->checkFilters( $loggedLocalFilters, $this->group ); + foreach ( $this->watchers as $watcher ) { + $watcher->run( $loggedLocalFilters, $this->group ); + } } /** diff --git a/includes/AbuseFilterServices.php b/includes/AbuseFilterServices.php index 2aca9463d..e74596b36 100644 --- a/includes/AbuseFilterServices.php +++ b/includes/AbuseFilterServices.php @@ -3,6 +3,7 @@ namespace MediaWiki\Extension\AbuseFilter; use MediaWiki\Extension\AbuseFilter\Parser\ParserFactory; +use MediaWiki\Extension\AbuseFilter\Watcher\EmergencyWatcher; use MediaWiki\MediaWikiServices; class AbuseFilterServices { diff --git a/includes/ServiceWiring.php b/includes/ServiceWiring.php index 98fa77d62..26952f948 100644 --- a/includes/ServiceWiring.php +++ b/includes/ServiceWiring.php @@ -6,7 +6,6 @@ use MediaWiki\Extension\AbuseFilter\BlockAutopromoteStore; use MediaWiki\Extension\AbuseFilter\CentralDBManager; use MediaWiki\Extension\AbuseFilter\ChangeTagger; use MediaWiki\Extension\AbuseFilter\ChangeTagsManager; -use MediaWiki\Extension\AbuseFilter\EmergencyWatcher; use MediaWiki\Extension\AbuseFilter\FilterCompare; use MediaWiki\Extension\AbuseFilter\FilterImporter; use MediaWiki\Extension\AbuseFilter\FilterLookup; @@ -16,6 +15,7 @@ use MediaWiki\Extension\AbuseFilter\FilterValidator; use MediaWiki\Extension\AbuseFilter\Hooks\AbuseFilterHookRunner; use MediaWiki\Extension\AbuseFilter\KeywordsManager; use MediaWiki\Extension\AbuseFilter\Parser\ParserFactory; +use MediaWiki\Extension\AbuseFilter\Watcher\EmergencyWatcher; use MediaWiki\Logger\LoggerFactory; use MediaWiki\MediaWikiServices; diff --git a/includes/EmergencyWatcher.php b/includes/Watcher/EmergencyWatcher.php similarity index 94% rename from includes/EmergencyWatcher.php rename to includes/Watcher/EmergencyWatcher.php index 1f325587b..3ed23a59d 100644 --- a/includes/EmergencyWatcher.php +++ b/includes/Watcher/EmergencyWatcher.php @@ -1,11 +1,13 @@ getFiltersToThrottle( $filters, $group ); if ( !$throttleFilters ) { return; diff --git a/includes/Watcher/Watcher.php b/includes/Watcher/Watcher.php new file mode 100644 index 000000000..0214824a1 --- /dev/null +++ b/includes/Watcher/Watcher.php @@ -0,0 +1,14 @@ +