Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | n/a |
0 / 0 |
n/a |
0 / 0 |
CRAP | n/a |
0 / 0 |
1 | <?php |
2 | |
3 | use MediaWiki\Config\ServiceOptions; |
4 | use MediaWiki\Extension\AbuseFilter\AbuseFilterPermissionManager as PermManager; |
5 | use MediaWiki\Extension\AbuseFilter\AbuseLogger; |
6 | use MediaWiki\Extension\AbuseFilter\AbuseLoggerFactory; |
7 | use MediaWiki\Extension\AbuseFilter\BlockAutopromoteStore; |
8 | use MediaWiki\Extension\AbuseFilter\CentralDBManager; |
9 | use MediaWiki\Extension\AbuseFilter\ChangeTags\ChangeTagger; |
10 | use MediaWiki\Extension\AbuseFilter\ChangeTags\ChangeTagsManager; |
11 | use MediaWiki\Extension\AbuseFilter\ChangeTags\ChangeTagValidator; |
12 | use MediaWiki\Extension\AbuseFilter\Consequences\ConsequencesExecutor; |
13 | use MediaWiki\Extension\AbuseFilter\Consequences\ConsequencesExecutorFactory as ConsExecutorFactory; |
14 | use MediaWiki\Extension\AbuseFilter\Consequences\ConsequencesFactory; |
15 | use MediaWiki\Extension\AbuseFilter\Consequences\ConsequencesLookup; |
16 | use MediaWiki\Extension\AbuseFilter\Consequences\ConsequencesRegistry; |
17 | use MediaWiki\Extension\AbuseFilter\EchoNotifier; |
18 | use MediaWiki\Extension\AbuseFilter\EditBox\EditBoxBuilderFactory; |
19 | use MediaWiki\Extension\AbuseFilter\EditRevUpdater; |
20 | use MediaWiki\Extension\AbuseFilter\EmergencyCache; |
21 | use MediaWiki\Extension\AbuseFilter\FilterCompare; |
22 | use MediaWiki\Extension\AbuseFilter\FilterImporter; |
23 | use MediaWiki\Extension\AbuseFilter\FilterLookup; |
24 | use MediaWiki\Extension\AbuseFilter\FilterProfiler; |
25 | use MediaWiki\Extension\AbuseFilter\FilterRunner; |
26 | use MediaWiki\Extension\AbuseFilter\FilterRunnerFactory; |
27 | use MediaWiki\Extension\AbuseFilter\FilterStore; |
28 | use MediaWiki\Extension\AbuseFilter\FilterUser; |
29 | use MediaWiki\Extension\AbuseFilter\FilterValidator; |
30 | use MediaWiki\Extension\AbuseFilter\Hooks\AbuseFilterHookRunner; |
31 | use MediaWiki\Extension\AbuseFilter\KeywordsManager; |
32 | use MediaWiki\Extension\AbuseFilter\Parser\RuleCheckerFactory; |
33 | use MediaWiki\Extension\AbuseFilter\SpecsFormatter; |
34 | use MediaWiki\Extension\AbuseFilter\TextExtractor; |
35 | use MediaWiki\Extension\AbuseFilter\VariableGenerator\VariableGeneratorFactory; |
36 | use MediaWiki\Extension\AbuseFilter\Variables\LazyVariableComputer; |
37 | use MediaWiki\Extension\AbuseFilter\Variables\VariablesBlobStore; |
38 | use MediaWiki\Extension\AbuseFilter\Variables\VariablesFormatter; |
39 | use MediaWiki\Extension\AbuseFilter\Variables\VariablesManager; |
40 | use MediaWiki\Extension\AbuseFilter\Watcher\EmergencyWatcher; |
41 | use MediaWiki\Extension\AbuseFilter\Watcher\UpdateHitCountWatcher; |
42 | use MediaWiki\Logger\LoggerFactory; |
43 | use MediaWiki\MediaWikiServices; |
44 | use MediaWiki\Session\SessionManager; |
45 | use Wikimedia\Equivset\Equivset; |
46 | |
47 | // This file is actually covered by AbuseFilterServicesTest, but it's not possible to specify a path |
48 | // in @covers annotations (https://github.com/sebastianbergmann/phpunit/issues/3794) |
49 | // @codeCoverageIgnoreStart |
50 | |
51 | return [ |
52 | AbuseFilterHookRunner::SERVICE_NAME => static function ( MediaWikiServices $services ): AbuseFilterHookRunner { |
53 | return new AbuseFilterHookRunner( $services->getHookContainer() ); |
54 | }, |
55 | KeywordsManager::SERVICE_NAME => static function ( MediaWikiServices $services ): KeywordsManager { |
56 | return new KeywordsManager( $services->get( AbuseFilterHookRunner::SERVICE_NAME ) ); |
57 | }, |
58 | FilterProfiler::SERVICE_NAME => static function ( MediaWikiServices $services ): FilterProfiler { |
59 | return new FilterProfiler( |
60 | $services->getWRStatsFactory(), |
61 | new ServiceOptions( |
62 | FilterProfiler::CONSTRUCTOR_OPTIONS, |
63 | $services->getMainConfig() |
64 | ), |
65 | WikiMap::getCurrentWikiDbDomain()->getId(), |
66 | $services->getStatsdDataFactory(), |
67 | LoggerFactory::getInstance( 'AbuseFilter' ) |
68 | ); |
69 | }, |
70 | PermManager::SERVICE_NAME => static function ( MediaWikiServices $services ): PermManager { |
71 | // No longer has any dependencies |
72 | return new PermManager(); |
73 | }, |
74 | ChangeTagger::SERVICE_NAME => static function ( MediaWikiServices $services ): ChangeTagger { |
75 | return new ChangeTagger( |
76 | $services->getService( ChangeTagsManager::SERVICE_NAME ) |
77 | ); |
78 | }, |
79 | ChangeTagsManager::SERVICE_NAME => static function ( MediaWikiServices $services ): ChangeTagsManager { |
80 | return new ChangeTagsManager( |
81 | $services->getDBLoadBalancer(), |
82 | $services->getMainWANObjectCache(), |
83 | $services->get( CentralDBManager::SERVICE_NAME ) |
84 | ); |
85 | }, |
86 | ChangeTagValidator::SERVICE_NAME => static function ( MediaWikiServices $services ): ChangeTagValidator { |
87 | return new ChangeTagValidator( |
88 | $services->getService( ChangeTagsManager::SERVICE_NAME ) |
89 | ); |
90 | }, |
91 | CentralDBManager::SERVICE_NAME => static function ( MediaWikiServices $services ): CentralDBManager { |
92 | return new CentralDBManager( |
93 | $services->getDBLoadBalancerFactory(), |
94 | $services->getMainConfig()->get( 'AbuseFilterCentralDB' ), |
95 | $services->getMainConfig()->get( 'AbuseFilterIsCentral' ) |
96 | ); |
97 | }, |
98 | BlockAutopromoteStore::SERVICE_NAME => static function ( MediaWikiServices $services ): BlockAutopromoteStore { |
99 | return new BlockAutopromoteStore( |
100 | $services->getMainObjectStash(), |
101 | LoggerFactory::getInstance( 'AbuseFilter' ), |
102 | $services->get( FilterUser::SERVICE_NAME ) |
103 | ); |
104 | }, |
105 | FilterUser::SERVICE_NAME => static function ( MediaWikiServices $services ): FilterUser { |
106 | return new FilterUser( |
107 | // TODO We need a proper MessageLocalizer, see T247127 |
108 | RequestContext::getMain(), |
109 | $services->getUserGroupManager(), |
110 | LoggerFactory::getInstance( 'AbuseFilter' ) |
111 | ); |
112 | }, |
113 | RuleCheckerFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): RuleCheckerFactory { |
114 | return new RuleCheckerFactory( |
115 | $services->getContentLanguage(), |
116 | // We could use $services here, but we need the fallback |
117 | ObjectCache::getLocalServerInstance( 'hash' ), |
118 | LoggerFactory::getInstance( 'AbuseFilter' ), |
119 | $services->getService( KeywordsManager::SERVICE_NAME ), |
120 | $services->get( VariablesManager::SERVICE_NAME ), |
121 | $services->getStatsdDataFactory(), |
122 | new Equivset(), |
123 | $services->getMainConfig()->get( 'AbuseFilterConditionLimit' ) |
124 | ); |
125 | }, |
126 | FilterLookup::SERVICE_NAME => static function ( MediaWikiServices $services ): FilterLookup { |
127 | return new FilterLookup( |
128 | $services->getDBLoadBalancer(), |
129 | $services->getMainWANObjectCache(), |
130 | $services->get( CentralDBManager::SERVICE_NAME ) |
131 | ); |
132 | }, |
133 | EmergencyCache::SERVICE_NAME => static function ( MediaWikiServices $services ): EmergencyCache { |
134 | return new EmergencyCache( |
135 | $services->getMainObjectStash(), |
136 | $services->getMainConfig()->get( 'AbuseFilterEmergencyDisableAge' ) |
137 | ); |
138 | }, |
139 | EmergencyWatcher::SERVICE_NAME => static function ( MediaWikiServices $services ): EmergencyWatcher { |
140 | return new EmergencyWatcher( |
141 | $services->getService( EmergencyCache::SERVICE_NAME ), |
142 | $services->getDBLoadBalancer(), |
143 | $services->getService( FilterLookup::SERVICE_NAME ), |
144 | $services->getService( EchoNotifier::SERVICE_NAME ), |
145 | new ServiceOptions( |
146 | EmergencyWatcher::CONSTRUCTOR_OPTIONS, |
147 | $services->getMainConfig() |
148 | ) |
149 | ); |
150 | }, |
151 | EchoNotifier::SERVICE_NAME => static function ( MediaWikiServices $services ): EchoNotifier { |
152 | return new EchoNotifier( |
153 | $services->getService( FilterLookup::SERVICE_NAME ), |
154 | $services->getService( ConsequencesRegistry::SERVICE_NAME ), |
155 | ExtensionRegistry::getInstance()->isLoaded( 'Echo' ) |
156 | ); |
157 | }, |
158 | FilterValidator::SERVICE_NAME => static function ( MediaWikiServices $services ): FilterValidator { |
159 | return new FilterValidator( |
160 | $services->get( ChangeTagValidator::SERVICE_NAME ), |
161 | $services->get( RuleCheckerFactory::SERVICE_NAME ), |
162 | $services->get( PermManager::SERVICE_NAME ), |
163 | new ServiceOptions( |
164 | FilterValidator::CONSTRUCTOR_OPTIONS, |
165 | $services->getMainConfig() |
166 | ) |
167 | ); |
168 | }, |
169 | FilterCompare::SERVICE_NAME => static function ( MediaWikiServices $services ): FilterCompare { |
170 | return new FilterCompare( |
171 | $services->get( ConsequencesRegistry::SERVICE_NAME ) |
172 | ); |
173 | }, |
174 | FilterImporter::SERVICE_NAME => static function ( MediaWikiServices $services ): FilterImporter { |
175 | return new FilterImporter( |
176 | new ServiceOptions( |
177 | FilterImporter::CONSTRUCTOR_OPTIONS, |
178 | $services->getMainConfig() |
179 | ), |
180 | $services->get( ConsequencesRegistry::SERVICE_NAME ) |
181 | ); |
182 | }, |
183 | FilterStore::SERVICE_NAME => static function ( MediaWikiServices $services ): FilterStore { |
184 | return new FilterStore( |
185 | $services->get( ConsequencesRegistry::SERVICE_NAME ), |
186 | $services->getDBLoadBalancer(), |
187 | $services->get( FilterProfiler::SERVICE_NAME ), |
188 | $services->get( FilterLookup::SERVICE_NAME ), |
189 | $services->get( ChangeTagsManager::SERVICE_NAME ), |
190 | $services->get( FilterValidator::SERVICE_NAME ), |
191 | $services->get( FilterCompare::SERVICE_NAME ), |
192 | $services->get( EmergencyCache::SERVICE_NAME ) |
193 | ); |
194 | }, |
195 | ConsequencesFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): ConsequencesFactory { |
196 | return new ConsequencesFactory( |
197 | new ServiceOptions( |
198 | ConsequencesFactory::CONSTRUCTOR_OPTIONS, |
199 | $services->getMainConfig() |
200 | ), |
201 | LoggerFactory::getInstance( 'AbuseFilter' ), |
202 | $services->getBlockUserFactory(), |
203 | $services->getDatabaseBlockStore(), |
204 | $services->getUserGroupManager(), |
205 | $services->getMainObjectStash(), |
206 | $services->get( ChangeTagger::SERVICE_NAME ), |
207 | $services->get( BlockAutopromoteStore::SERVICE_NAME ), |
208 | $services->get( FilterUser::SERVICE_NAME ), |
209 | SessionManager::getGlobalSession(), |
210 | // TODO: Use a proper MessageLocalizer once available (T247127) |
211 | RequestContext::getMain(), |
212 | $services->getUserEditTracker(), |
213 | $services->getUserFactory() |
214 | ); |
215 | }, |
216 | EditBoxBuilderFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): EditBoxBuilderFactory { |
217 | return new EditBoxBuilderFactory( |
218 | $services->get( PermManager::SERVICE_NAME ), |
219 | $services->get( KeywordsManager::SERVICE_NAME ), |
220 | ExtensionRegistry::getInstance()->isLoaded( 'CodeEditor' ) |
221 | ); |
222 | }, |
223 | ConsequencesLookup::SERVICE_NAME => static function ( MediaWikiServices $services ): ConsequencesLookup { |
224 | return new ConsequencesLookup( |
225 | $services->getDBLoadBalancer(), |
226 | $services->get( CentralDBManager::SERVICE_NAME ), |
227 | $services->get( ConsequencesRegistry::SERVICE_NAME ), |
228 | LoggerFactory::getInstance( 'AbuseFilter' ) |
229 | ); |
230 | }, |
231 | ConsequencesRegistry::SERVICE_NAME => static function ( MediaWikiServices $services ): ConsequencesRegistry { |
232 | return new ConsequencesRegistry( |
233 | $services->get( AbuseFilterHookRunner::SERVICE_NAME ), |
234 | $services->getMainConfig()->get( 'AbuseFilterActions' ) |
235 | ); |
236 | }, |
237 | AbuseLoggerFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): AbuseLoggerFactory { |
238 | return new AbuseLoggerFactory( |
239 | $services->get( CentralDBManager::SERVICE_NAME ), |
240 | $services->get( FilterLookup::SERVICE_NAME ), |
241 | $services->get( VariablesBlobStore::SERVICE_NAME ), |
242 | $services->get( VariablesManager::SERVICE_NAME ), |
243 | $services->get( EditRevUpdater::SERVICE_NAME ), |
244 | $services->getDBLoadBalancer(), |
245 | new ServiceOptions( |
246 | AbuseLogger::CONSTRUCTOR_OPTIONS, |
247 | $services->getMainConfig() |
248 | ), |
249 | WikiMap::getCurrentWikiDbDomain()->getId(), |
250 | RequestContext::getMain()->getRequest()->getIP() |
251 | ); |
252 | }, |
253 | UpdateHitCountWatcher::SERVICE_NAME => static function ( MediaWikiServices $services ): UpdateHitCountWatcher { |
254 | return new UpdateHitCountWatcher( |
255 | $services->getDBLoadBalancer(), |
256 | $services->get( CentralDBManager::SERVICE_NAME ) |
257 | ); |
258 | }, |
259 | VariablesBlobStore::SERVICE_NAME => static function ( MediaWikiServices $services ): VariablesBlobStore { |
260 | return new VariablesBlobStore( |
261 | $services->get( VariablesManager::SERVICE_NAME ), |
262 | $services->getBlobStoreFactory(), |
263 | $services->getBlobStore(), |
264 | $services->getMainConfig()->get( 'AbuseFilterCentralDB' ) |
265 | ); |
266 | }, |
267 | ConsExecutorFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): ConsExecutorFactory { |
268 | return new ConsExecutorFactory( |
269 | $services->get( ConsequencesLookup::SERVICE_NAME ), |
270 | $services->get( ConsequencesFactory::SERVICE_NAME ), |
271 | $services->get( ConsequencesRegistry::SERVICE_NAME ), |
272 | $services->get( FilterLookup::SERVICE_NAME ), |
273 | LoggerFactory::getInstance( 'AbuseFilter' ), |
274 | new ServiceOptions( |
275 | ConsequencesExecutor::CONSTRUCTOR_OPTIONS, |
276 | $services->getMainConfig() |
277 | ) |
278 | ); |
279 | }, |
280 | FilterRunnerFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): FilterRunnerFactory { |
281 | return new FilterRunnerFactory( |
282 | $services->get( AbuseFilterHookRunner::SERVICE_NAME ), |
283 | $services->get( FilterProfiler::SERVICE_NAME ), |
284 | $services->get( ChangeTagger::SERVICE_NAME ), |
285 | $services->get( FilterLookup::SERVICE_NAME ), |
286 | $services->get( RuleCheckerFactory::SERVICE_NAME ), |
287 | $services->get( ConsExecutorFactory::SERVICE_NAME ), |
288 | $services->get( AbuseLoggerFactory::SERVICE_NAME ), |
289 | $services->get( VariablesManager::SERVICE_NAME ), |
290 | $services->get( VariableGeneratorFactory::SERVICE_NAME ), |
291 | $services->get( EmergencyCache::SERVICE_NAME ), |
292 | $services->get( UpdateHitCountWatcher::SERVICE_NAME ), |
293 | $services->get( EmergencyWatcher::SERVICE_NAME ), |
294 | ObjectCache::getLocalClusterInstance(), |
295 | LoggerFactory::getInstance( 'AbuseFilter' ), |
296 | LoggerFactory::getInstance( 'StashEdit' ), |
297 | $services->getStatsdDataFactory(), |
298 | new ServiceOptions( |
299 | FilterRunner::CONSTRUCTOR_OPTIONS, |
300 | $services->getMainConfig() |
301 | ) |
302 | ); |
303 | }, |
304 | VariablesFormatter::SERVICE_NAME => static function ( MediaWikiServices $services ): VariablesFormatter { |
305 | return new VariablesFormatter( |
306 | $services->get( KeywordsManager::SERVICE_NAME ), |
307 | $services->get( VariablesManager::SERVICE_NAME ), |
308 | // TODO: Use a proper MessageLocalizer once available (T247127) |
309 | RequestContext::getMain() |
310 | ); |
311 | }, |
312 | SpecsFormatter::SERVICE_NAME => static function ( MediaWikiServices $services ): SpecsFormatter { |
313 | return new SpecsFormatter( |
314 | // TODO: Use a proper MessageLocalizer once available (T247127) |
315 | RequestContext::getMain() |
316 | ); |
317 | }, |
318 | LazyVariableComputer::SERVICE_NAME => static function ( MediaWikiServices $services ): LazyVariableComputer { |
319 | return new LazyVariableComputer( |
320 | $services->get( TextExtractor::SERVICE_NAME ), |
321 | $services->get( AbuseFilterHookRunner::SERVICE_NAME ), |
322 | LoggerFactory::getInstance( 'AbuseFilter' ), |
323 | $services->getDBLoadBalancer(), |
324 | $services->getMainWANObjectCache(), |
325 | $services->getRevisionLookup(), |
326 | $services->getRevisionStore(), |
327 | $services->getContentLanguage(), |
328 | $services->getParser(), |
329 | $services->getUserEditTracker(), |
330 | $services->getUserGroupManager(), |
331 | $services->getPermissionManager(), |
332 | $services->getRestrictionStore(), |
333 | WikiMap::getCurrentWikiDbDomain()->getId() |
334 | ); |
335 | }, |
336 | TextExtractor::SERVICE_NAME => static function ( MediaWikiServices $services ): TextExtractor { |
337 | return new TextExtractor( $services->get( AbuseFilterHookRunner::SERVICE_NAME ) ); |
338 | }, |
339 | VariablesManager::SERVICE_NAME => static function ( MediaWikiServices $services ): VariablesManager { |
340 | return new VariablesManager( |
341 | $services->get( KeywordsManager::SERVICE_NAME ), |
342 | $services->get( LazyVariableComputer::SERVICE_NAME ) |
343 | ); |
344 | }, |
345 | VariableGeneratorFactory::SERVICE_NAME => static function ( |
346 | MediaWikiServices $services |
347 | ): VariableGeneratorFactory { |
348 | return new VariableGeneratorFactory( |
349 | $services->get( AbuseFilterHookRunner::SERVICE_NAME ), |
350 | $services->get( TextExtractor::SERVICE_NAME ), |
351 | $services->getMimeAnalyzer(), |
352 | $services->getRepoGroup(), |
353 | $services->getWikiPageFactory() |
354 | ); |
355 | }, |
356 | EditRevUpdater::SERVICE_NAME => static function ( MediaWikiServices $services ): EditRevUpdater { |
357 | return new EditRevUpdater( |
358 | $services->get( CentralDBManager::SERVICE_NAME ), |
359 | $services->getRevisionLookup(), |
360 | $services->getDBLoadBalancer(), |
361 | WikiMap::getCurrentWikiDbDomain()->getId() |
362 | ); |
363 | }, |
364 | ]; |
365 | |
366 | // @codeCoverageIgnoreEnd |