Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
59 / 59
100.00% covered (success)
100.00%
15 / 15
CRAP
100.00% covered (success)
100.00%
1 / 1
AbuseFilterHookRunner
100.00% covered (success)
100.00%
59 / 59
100.00% covered (success)
100.00%
15 / 15
15
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilter_builder
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilter_deprecatedVariables
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilter_computeVariable
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilter_contentToString
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilter_filterAction
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilterAlterVariables
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilter_generateTitleVars
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilter_generateUserVars
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilter_generateGenericVars
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilterGenerateVarsForRecentChange
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilter_interceptVariable
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilterShouldFilterAction
100.00% covered (success)
100.00%
4 / 4
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilterGetDangerousActions
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
 onAbuseFilterCustomActions
100.00% covered (success)
100.00%
5 / 5
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace MediaWiki\Extension\AbuseFilter\Hooks;
4
5use Content;
6use MediaWiki\Extension\AbuseFilter\VariableGenerator\RCVariableGenerator;
7use MediaWiki\Extension\AbuseFilter\Variables\VariableHolder;
8use MediaWiki\HookContainer\HookContainer;
9use MediaWiki\Title\Title;
10use MediaWiki\User\User;
11use RecentChange;
12
13/**
14 * Handle running AbuseFilter's hooks
15 * @author DannyS712
16 */
17class AbuseFilterHookRunner implements
18    AbuseFilterAlterVariablesHook,
19    AbuseFilterBuilderHook,
20    AbuseFilterComputeVariableHook,
21    AbuseFilterContentToStringHook,
22    AbuseFilterCustomActionsHook,
23    AbuseFilterDeprecatedVariablesHook,
24    AbuseFilterFilterActionHook,
25    AbuseFilterGenerateGenericVarsHook,
26    AbuseFilterGenerateTitleVarsHook,
27    AbuseFilterGenerateUserVarsHook,
28    AbuseFilterGenerateVarsForRecentChangeHook,
29    AbuseFilterInterceptVariableHook,
30    AbuseFilterShouldFilterActionHook,
31    AbuseFilterGetDangerousActionsHook
32{
33    public const SERVICE_NAME = 'AbuseFilterHookRunner';
34
35    /** @var HookContainer */
36    private $hookContainer;
37
38    /**
39     * @param HookContainer $hookContainer
40     */
41    public function __construct( HookContainer $hookContainer ) {
42        $this->hookContainer = $hookContainer;
43    }
44
45    /**
46     * @inheritDoc
47     */
48    public function onAbuseFilter_builder( array &$realValues ) {
49        return $this->hookContainer->run(
50            'AbuseFilter-builder',
51            [ &$realValues ]
52        );
53    }
54
55    /**
56     * @inheritDoc
57     */
58    public function onAbuseFilter_deprecatedVariables( array &$deprecatedVariables ) {
59        return $this->hookContainer->run(
60            'AbuseFilter-deprecatedVariables',
61            [ &$deprecatedVariables ]
62        );
63    }
64
65    /**
66     * @inheritDoc
67     */
68    public function onAbuseFilter_computeVariable(
69        string $method,
70        VariableHolder $vars,
71        array $parameters,
72        ?string &$result
73    ) {
74        return $this->hookContainer->run(
75            'AbuseFilter-computeVariable',
76            [ $method, $vars, $parameters, &$result ]
77        );
78    }
79
80    /**
81     * @inheritDoc
82     */
83    public function onAbuseFilter_contentToString(
84        Content $content,
85        ?string &$text
86    ) {
87        return $this->hookContainer->run(
88            'AbuseFilter-contentToString',
89            [ $content, &$text ]
90        );
91    }
92
93    /**
94     * @inheritDoc
95     */
96    public function onAbuseFilter_filterAction(
97        VariableHolder &$vars,
98        Title $title
99    ) {
100        return $this->hookContainer->run(
101            'AbuseFilter-filterAction',
102            [ &$vars, $title ]
103        );
104    }
105
106    /**
107     * @inheritDoc
108     */
109    public function onAbuseFilterAlterVariables(
110        VariableHolder &$vars,
111        Title $title,
112        User $user
113    ) {
114        return $this->hookContainer->run(
115            'AbuseFilterAlterVariables',
116            [ &$vars, $title, $user ]
117        );
118    }
119
120    /**
121     * @inheritDoc
122     */
123    public function onAbuseFilter_generateTitleVars(
124        VariableHolder $vars,
125        Title $title,
126        string $prefix,
127        ?RecentChange $rc
128    ) {
129        return $this->hookContainer->run(
130            'AbuseFilter-generateTitleVars',
131            [ $vars, $title, $prefix, $rc ]
132        );
133    }
134
135    /**
136     * @inheritDoc
137     */
138    public function onAbuseFilter_generateUserVars(
139        VariableHolder $vars,
140        User $user,
141        ?RecentChange $rc
142    ) {
143        return $this->hookContainer->run(
144            'AbuseFilter-generateUserVars',
145            [ $vars, $user, $rc ]
146        );
147    }
148
149    /**
150     * @inheritDoc
151     */
152    public function onAbuseFilter_generateGenericVars(
153        VariableHolder $vars,
154        ?RecentChange $rc
155    ) {
156        return $this->hookContainer->run(
157            'AbuseFilter-generateGenericVars',
158            [ $vars, $rc ]
159        );
160    }
161
162    /**
163     * @inheritDoc
164     */
165    public function onAbuseFilterGenerateVarsForRecentChange(
166        RCVariableGenerator $generator,
167        RecentChange $rc,
168        VariableHolder $vars,
169        User $contextUser
170    ) {
171        return $this->hookContainer->run(
172            'AbuseFilterGenerateVarsForRecentChange',
173            [ $generator, $rc, $vars, $contextUser ]
174        );
175    }
176
177    /**
178     * @inheritDoc
179     */
180    public function onAbuseFilter_interceptVariable(
181        string $method,
182        VariableHolder $vars,
183        array $parameters,
184        &$result
185    ) {
186        return $this->hookContainer->run(
187            'AbuseFilter-interceptVariable',
188            [ $method, $vars, $parameters, &$result ]
189        );
190    }
191
192    /**
193     * @inheritDoc
194     */
195    public function onAbuseFilterShouldFilterAction(
196        VariableHolder $vars,
197        Title $title,
198        User $user,
199        array &$skipReasons
200    ) {
201        return $this->hookContainer->run(
202            'AbuseFilterShouldFilterAction',
203            [ $vars, $title, $user, &$skipReasons ]
204        );
205    }
206
207    /**
208     * @inheritDoc
209     */
210    public function onAbuseFilterGetDangerousActions( array &$actions ): void {
211        $this->hookContainer->run(
212            'AbuseFilterGetDangerousActions',
213            [ &$actions ],
214            [ 'abortable' => false ]
215        );
216    }
217
218    /**
219     * @inheritDoc
220     */
221    public function onAbuseFilterCustomActions( array &$actions ): void {
222        $this->hookContainer->run(
223            'AbuseFilterCustomActions',
224            [ &$actions ],
225            [ 'abortable' => false ]
226        );
227    }
228}