Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 283
n/a
0 / 0
CRAP
n/a
0 / 0
1<?php
2
3declare( strict_types=1 );
4
5use MediaWiki\Config\ServiceOptions;
6use MediaWiki\Extension\CampaignEvents\Address\AddressStore;
7use MediaWiki\Extension\CampaignEvents\Database\CampaignsDatabaseHelper;
8use MediaWiki\Extension\CampaignEvents\Event\DeleteEventCommand;
9use MediaWiki\Extension\CampaignEvents\Event\EditEventCommand;
10use MediaWiki\Extension\CampaignEvents\Event\EventFactory;
11use MediaWiki\Extension\CampaignEvents\Event\PageEventLookup;
12use MediaWiki\Extension\CampaignEvents\Event\Store\EventStore;
13use MediaWiki\Extension\CampaignEvents\Event\Store\IEventLookup;
14use MediaWiki\Extension\CampaignEvents\Event\Store\IEventStore;
15use MediaWiki\Extension\CampaignEvents\EventPage\EventPageCacheUpdater;
16use MediaWiki\Extension\CampaignEvents\EventPage\EventPageDecoratorFactory;
17use MediaWiki\Extension\CampaignEvents\FrontendModules\FrontendModulesFactory;
18use MediaWiki\Extension\CampaignEvents\Hooks\CampaignEventsHookRunner;
19use MediaWiki\Extension\CampaignEvents\Messaging\CampaignsUserMailer;
20use MediaWiki\Extension\CampaignEvents\MWEntity\CampaignsCentralUserLookup;
21use MediaWiki\Extension\CampaignEvents\MWEntity\CampaignsPageFactory;
22use MediaWiki\Extension\CampaignEvents\MWEntity\CampaignsPageFormatter;
23use MediaWiki\Extension\CampaignEvents\MWEntity\MWPermissionsLookup;
24use MediaWiki\Extension\CampaignEvents\MWEntity\PageAuthorLookup;
25use MediaWiki\Extension\CampaignEvents\MWEntity\PageURLResolver;
26use MediaWiki\Extension\CampaignEvents\MWEntity\UserLinker;
27use MediaWiki\Extension\CampaignEvents\Notifications\UserNotifier;
28use MediaWiki\Extension\CampaignEvents\Organizers\OrganizersStore;
29use MediaWiki\Extension\CampaignEvents\Organizers\RoleFormatter;
30use MediaWiki\Extension\CampaignEvents\Pager\EventsPagerFactory;
31use MediaWiki\Extension\CampaignEvents\Participants\ParticipantsStore;
32use MediaWiki\Extension\CampaignEvents\Participants\RegisterParticipantCommand;
33use MediaWiki\Extension\CampaignEvents\Participants\UnregisterParticipantCommand;
34use MediaWiki\Extension\CampaignEvents\Permissions\PermissionChecker;
35use MediaWiki\Extension\CampaignEvents\PolicyMessagesLookup;
36use MediaWiki\Extension\CampaignEvents\Questions\EventAggregatedAnswersStore;
37use MediaWiki\Extension\CampaignEvents\Questions\EventQuestionsRegistry;
38use MediaWiki\Extension\CampaignEvents\Questions\EventQuestionsStore;
39use MediaWiki\Extension\CampaignEvents\Questions\ParticipantAnswersStore;
40use MediaWiki\Extension\CampaignEvents\Time\EventTimeFormatter;
41use MediaWiki\Extension\CampaignEvents\TrackingTool\TrackingToolEventWatcher;
42use MediaWiki\Extension\CampaignEvents\TrackingTool\TrackingToolRegistry;
43use MediaWiki\Extension\CampaignEvents\TrackingTool\TrackingToolUpdater;
44use MediaWiki\Logger\LoggerFactory;
45use MediaWiki\MediaWikiServices;
46
47// This file is actually covered by CampaignEventsServicesTest, but it's not possible to specify a path
48// in @covers annotations (https://github.com/sebastianbergmann/phpunit/issues/3794)
49// @codeCoverageIgnoreStart
50return [
51    CampaignsDatabaseHelper::SERVICE_NAME => static function ( MediaWikiServices $services ): CampaignsDatabaseHelper {
52        return new CampaignsDatabaseHelper(
53            $services->getDBLoadBalancerFactory()
54        );
55    },
56    CampaignsPageFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): CampaignsPageFactory {
57        return new CampaignsPageFactory(
58            $services->getPageStoreFactory(),
59            $services->getTitleParser(),
60            $services->getTitleFormatter()
61        );
62    },
63    CampaignsCentralUserLookup::SERVICE_NAME =>
64        static function ( MediaWikiServices $services ): CampaignsCentralUserLookup {
65            return new CampaignsCentralUserLookup(
66                $services->getCentralIdLookup(),
67                $services->getUserFactory(),
68                $services->getUserNameUtils()
69            );
70        },
71    IEventStore::STORE_SERVICE_NAME => static function ( MediaWikiServices $services ): IEventStore {
72        return new EventStore(
73            $services->get( CampaignsDatabaseHelper::SERVICE_NAME ),
74            $services->get( CampaignsPageFactory::SERVICE_NAME ),
75            $services->get( AddressStore::SERVICE_NAME ),
76            $services->get( TrackingToolUpdater::SERVICE_NAME ),
77            $services->get( EventQuestionsStore::SERVICE_NAME )
78        );
79    },
80    IEventLookup::LOOKUP_SERVICE_NAME => static function ( MediaWikiServices $services ): IEventLookup {
81        return $services->get( IEventStore::STORE_SERVICE_NAME );
82    },
83    PermissionChecker::SERVICE_NAME => static function ( MediaWikiServices $services ): PermissionChecker {
84        return new PermissionChecker(
85            $services->get( OrganizersStore::SERVICE_NAME ),
86            $services->get( PageAuthorLookup::SERVICE_NAME ),
87            $services->get( CampaignsCentralUserLookup::SERVICE_NAME ),
88            $services->get( MWPermissionsLookup::SERVICE_NAME )
89        );
90    },
91    CampaignsUserMailer::SERVICE_NAME => static function ( MediaWikiServices $services ): CampaignsUserMailer {
92        return new CampaignsUserMailer(
93            $services->getUserFactory(),
94            $services->getJobQueueGroup(),
95            new ServiceOptions(
96                CampaignsUserMailer::CONSTRUCTOR_OPTIONS,
97                $services->getMainConfig()
98            ),
99            $services->get( CampaignsCentralUserLookup::SERVICE_NAME ),
100            $services->getUserOptionsLookup(),
101            $services->getMessageFormatterFactory()->getTextFormatter( $services->getContentLanguage()->getCode() ),
102            $services->get( PageURLResolver::SERVICE_NAME ),
103            $services->getEmailUserFactory(),
104        );
105    },
106    EventFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): EventFactory {
107        return new EventFactory(
108            $services->get( CampaignsPageFactory::SERVICE_NAME ),
109            $services->get( CampaignsPageFormatter::SERVICE_NAME ),
110            $services->get( TrackingToolRegistry::SERVICE_NAME ),
111            $services->get( EventQuestionsRegistry::SERVICE_NAME )
112        );
113    },
114    CampaignsPageFormatter::SERVICE_NAME => static function ( MediaWikiServices $services ): CampaignsPageFormatter {
115        return new CampaignsPageFormatter(
116            $services->getTitleFormatter()
117        );
118    },
119    ParticipantsStore::SERVICE_NAME => static function ( MediaWikiServices $services ): ParticipantsStore {
120        return new ParticipantsStore(
121            $services->get( CampaignsDatabaseHelper::SERVICE_NAME ),
122            $services->get( CampaignsCentralUserLookup::SERVICE_NAME ),
123            $services->get( ParticipantAnswersStore::SERVICE_NAME )
124        );
125    },
126    OrganizersStore::SERVICE_NAME => static function ( MediaWikiServices $services ): OrganizersStore {
127        return new OrganizersStore(
128            $services->get( CampaignsDatabaseHelper::SERVICE_NAME )
129        );
130    },
131    EditEventCommand::SERVICE_NAME => static function ( MediaWikiServices $services ): EditEventCommand {
132        return new EditEventCommand(
133            $services->get( IEventStore::STORE_SERVICE_NAME ),
134            $services->get( IEventLookup::LOOKUP_SERVICE_NAME ),
135            $services->get( OrganizersStore::SERVICE_NAME ),
136            $services->get( PermissionChecker::SERVICE_NAME ),
137            $services->get( CampaignsCentralUserLookup::SERVICE_NAME ),
138            $services->get( EventPageCacheUpdater::SERVICE_NAME ),
139            $services->get( TrackingToolEventWatcher::SERVICE_NAME ),
140            $services->get( TrackingToolUpdater::SERVICE_NAME ),
141            LoggerFactory::getInstance( 'CampaignEvents' ),
142            $services->get( ParticipantAnswersStore::SERVICE_NAME ),
143            $services->get( EventAggregatedAnswersStore::SERVICE_NAME ),
144            $services->get( PageEventLookup::SERVICE_NAME )
145        );
146    },
147    DeleteEventCommand::SERVICE_NAME => static function ( MediaWikiServices $services ): DeleteEventCommand {
148        return new DeleteEventCommand(
149            $services->get( IEventStore::STORE_SERVICE_NAME ),
150            $services->get( PermissionChecker::SERVICE_NAME ),
151            $services->get( TrackingToolEventWatcher::SERVICE_NAME )
152        );
153    },
154    RoleFormatter::SERVICE_NAME => static function ( MediaWikiServices $services ): RoleFormatter {
155        return new RoleFormatter(
156            $services->getMessageFormatterFactory()
157        );
158    },
159    RegisterParticipantCommand::SERVICE_NAME =>
160        static function ( MediaWikiServices $services ): RegisterParticipantCommand {
161            return new RegisterParticipantCommand(
162                $services->get( ParticipantsStore::SERVICE_NAME ),
163                $services->get( PermissionChecker::SERVICE_NAME ),
164                $services->get( CampaignsCentralUserLookup::SERVICE_NAME ),
165                $services->get( UserNotifier::SERVICE_NAME ),
166                $services->get( EventPageCacheUpdater::SERVICE_NAME ),
167                $services->get( TrackingToolEventWatcher::SERVICE_NAME )
168            );
169        },
170    UnregisterParticipantCommand::SERVICE_NAME =>
171        static function ( MediaWikiServices $services ): UnregisterParticipantCommand {
172            return new UnregisterParticipantCommand(
173                $services->get( ParticipantsStore::SERVICE_NAME ),
174                $services->get( PermissionChecker::SERVICE_NAME ),
175                $services->get( CampaignsCentralUserLookup::SERVICE_NAME ),
176                $services->get( EventPageCacheUpdater::SERVICE_NAME ),
177                $services->get( TrackingToolEventWatcher::SERVICE_NAME )
178            );
179        },
180    EventsPagerFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): EventsPagerFactory {
181        return new EventsPagerFactory(
182            $services->get( CampaignsDatabaseHelper::SERVICE_NAME ),
183            $services->get( CampaignsPageFactory::SERVICE_NAME ),
184            $services->get( PageURLResolver::SERVICE_NAME ),
185            $services->getLinkBatchFactory(),
186            $services->get( UserLinker::SERVICE_NAME ),
187            $services->get( OrganizersStore::SERVICE_NAME ),
188            $services->getUserOptionsLookup()
189        );
190    },
191    EventPageDecoratorFactory::SERVICE_NAME =>
192        static function ( MediaWikiServices $services ): EventPageDecoratorFactory {
193            return new EventPageDecoratorFactory(
194                $services->get( PageEventLookup::SERVICE_NAME ),
195                $services->get( ParticipantsStore::SERVICE_NAME ),
196                $services->get( OrganizersStore::SERVICE_NAME ),
197                $services->get( PermissionChecker::SERVICE_NAME ),
198                $services->getMessageFormatterFactory(),
199                $services->getLinkRenderer(),
200                $services->get( CampaignsPageFactory::SERVICE_NAME ),
201                $services->get( CampaignsCentralUserLookup::SERVICE_NAME ),
202                $services->get( UserLinker::SERVICE_NAME ),
203                $services->get( EventTimeFormatter::SERVICE_NAME ),
204                $services->get( EventPageCacheUpdater::SERVICE_NAME ),
205                $services->get( EventQuestionsRegistry::SERVICE_NAME )
206            );
207        },
208    CampaignEventsHookRunner::SERVICE_NAME =>
209        static function ( MediaWikiServices $services ): CampaignEventsHookRunner {
210            return new CampaignEventsHookRunner( $services->getHookContainer() );
211        },
212    PolicyMessagesLookup::SERVICE_NAME => static function ( MediaWikiServices $services ): PolicyMessagesLookup {
213        return new PolicyMessagesLookup(
214            $services->get( CampaignEventsHookRunner::SERVICE_NAME )
215        );
216    },
217    PageURLResolver::SERVICE_NAME => static function ( MediaWikiServices $services ): PageURLResolver {
218        return new PageURLResolver(
219            $services->getTitleFactory()
220        );
221    },
222    PageEventLookup::SERVICE_NAME => static function ( MediaWikiServices $services ): PageEventLookup {
223        return new PageEventLookup(
224            $services->get( IEventLookup::LOOKUP_SERVICE_NAME ),
225            $services->get( CampaignsPageFactory::SERVICE_NAME ),
226            $services->getTitleFactory(),
227            ExtensionRegistry::getInstance()->isLoaded( 'Translate' )
228        );
229    },
230    PageAuthorLookup::SERVICE_NAME => static function ( MediaWikiServices $services ): PageAuthorLookup {
231        return new PageAuthorLookup(
232            $services->getRevisionStoreFactory(),
233            $services->get( CampaignsCentralUserLookup::SERVICE_NAME )
234        );
235    },
236    UserLinker::SERVICE_NAME => static function ( MediaWikiServices $services ): UserLinker {
237        return new UserLinker(
238            $services->get( CampaignsCentralUserLookup::SERVICE_NAME ),
239            $services->getMessageFormatterFactory(),
240            $services->getLinkBatchFactory()
241        );
242    },
243    FrontendModulesFactory::SERVICE_NAME => static function ( MediaWikiServices $services ): FrontendModulesFactory {
244        return new FrontendModulesFactory(
245            $services->getMessageFormatterFactory(),
246            $services->get( OrganizersStore::SERVICE_NAME ),
247            $services->get( ParticipantsStore::SERVICE_NAME ),
248            $services->get( PageURLResolver::SERVICE_NAME ),
249            $services->get( UserLinker::SERVICE_NAME ),
250            $services->get( CampaignsCentralUserLookup::SERVICE_NAME ),
251            $services->get( PermissionChecker::SERVICE_NAME ),
252            $services->get( EventTimeFormatter::SERVICE_NAME ),
253            $services->getUserFactory(),
254            $services->get( TrackingToolRegistry::SERVICE_NAME ),
255            $services->get( CampaignsUserMailer::SERVICE_NAME ),
256            $services->get( ParticipantAnswersStore::SERVICE_NAME ),
257            $services->get( EventAggregatedAnswersStore::SERVICE_NAME ),
258            $services->get( EventQuestionsRegistry::SERVICE_NAME ),
259            $services->get( CampaignEventsHookRunner::SERVICE_NAME )
260        );
261    },
262    AddressStore::SERVICE_NAME => static function ( MediaWikiServices $services ): AddressStore {
263        return new AddressStore(
264            $services->get( CampaignsDatabaseHelper::SERVICE_NAME )
265        );
266    },
267    TrackingToolRegistry::SERVICE_NAME => static function ( MediaWikiServices $services ): TrackingToolRegistry {
268        return new TrackingToolRegistry(
269            $services->getObjectFactory(),
270            new ServiceOptions(
271                TrackingToolRegistry::CONSTRUCTOR_OPTIONS,
272                $services->getMainConfig()
273            )
274        );
275    },
276    EventTimeFormatter::SERVICE_NAME => static function ( MediaWikiServices $services ): EventTimeFormatter {
277        return new EventTimeFormatter(
278            $services->getUserOptionsLookup()
279        );
280    },
281    UserNotifier::SERVICE_NAME => static function ( MediaWikiServices $services ): UserNotifier {
282        return new UserNotifier(
283            ExtensionRegistry::getInstance()->isLoaded( 'Echo' )
284        );
285    },
286    MWPermissionsLookup::SERVICE_NAME => static function ( MediaWikiServices $services ): MWPermissionsLookup {
287        return new MWPermissionsLookup(
288            $services->getUserFactory(),
289            $services->getUserNameUtils()
290        );
291    },
292    EventPageCacheUpdater::SERVICE_NAME => static function ( MediaWikiServices $services ): EventPageCacheUpdater {
293        return new EventPageCacheUpdater(
294            $services->getHtmlCacheUpdater()
295        );
296    },
297    TrackingToolEventWatcher::SERVICE_NAME =>
298        static function ( MediaWikiServices $services ): TrackingToolEventWatcher {
299            return new TrackingToolEventWatcher(
300                $services->get( TrackingToolRegistry::SERVICE_NAME ),
301                $services->get( TrackingToolUpdater::SERVICE_NAME ),
302                LoggerFactory::getInstance( 'CampaignEvents' )
303            );
304        },
305    TrackingToolUpdater::SERVICE_NAME => static function ( MediaWikiServices $services ): TrackingToolUpdater {
306        return new TrackingToolUpdater(
307            $services->get( CampaignsDatabaseHelper::SERVICE_NAME )
308        );
309    },
310    EventQuestionsRegistry::SERVICE_NAME => static function ( MediaWikiServices $services ): EventQuestionsRegistry {
311        return new EventQuestionsRegistry(
312            $services->getMainConfig()->get( 'CampaignEventsEnableWikimediaParticipantQuestions' )
313        );
314    },
315    EventQuestionsStore::SERVICE_NAME => static function ( MediaWikiServices $services ): EventQuestionsStore {
316        return new EventQuestionsStore(
317            $services->get( CampaignsDatabaseHelper::SERVICE_NAME )
318        );
319    },
320    ParticipantAnswersStore::SERVICE_NAME => static function ( MediaWikiServices $services ): ParticipantAnswersStore {
321        return new ParticipantAnswersStore(
322            $services->get( CampaignsDatabaseHelper::SERVICE_NAME )
323        );
324    },
325    EventAggregatedAnswersStore::SERVICE_NAME => static function (
326        MediaWikiServices $services
327    ): EventAggregatedAnswersStore {
328        return new EventAggregatedAnswersStore(
329            $services->get( CampaignsDatabaseHelper::SERVICE_NAME )
330        );
331    },
332];