Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
EventPageDecoratorFactory
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 2
6
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 12
0.00% covered (danger)
0.00%
0 / 1
2
 newDecorator
0.00% covered (danger)
0.00%
0 / 17
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3declare( strict_types=1 );
4
5namespace MediaWiki\Extension\CampaignEvents\EventPage;
6
7use Language;
8use MediaWiki\Extension\CampaignEvents\Event\PageEventLookup;
9use MediaWiki\Extension\CampaignEvents\MWEntity\CampaignsCentralUserLookup;
10use MediaWiki\Extension\CampaignEvents\MWEntity\CampaignsPageFactory;
11use MediaWiki\Extension\CampaignEvents\MWEntity\UserLinker;
12use MediaWiki\Extension\CampaignEvents\Organizers\OrganizersStore;
13use MediaWiki\Extension\CampaignEvents\Participants\ParticipantsStore;
14use MediaWiki\Extension\CampaignEvents\Permissions\PermissionChecker;
15use MediaWiki\Extension\CampaignEvents\Questions\EventQuestionsRegistry;
16use MediaWiki\Extension\CampaignEvents\Time\EventTimeFormatter;
17use MediaWiki\Linker\LinkRenderer;
18use MediaWiki\Output\OutputPage;
19use MediaWiki\Permissions\Authority;
20use Wikimedia\Message\IMessageFormatterFactory;
21
22class EventPageDecoratorFactory {
23    public const SERVICE_NAME = 'CampaignEventsEventPageDecoratorFactory';
24
25    private PageEventLookup $pageEventLookup;
26    private ParticipantsStore $participantsStore;
27    private OrganizersStore $organizersStore;
28    private PermissionChecker $permissionChecker;
29    private IMessageFormatterFactory $messageFormatterFactory;
30    private LinkRenderer $linkRenderer;
31    private CampaignsPageFactory $campaignsPageFactory;
32    private CampaignsCentralUserLookup $centralUserLookup;
33    private UserLinker $userLinker;
34    private EventTimeFormatter $eventTimeFormatter;
35    private EventPageCacheUpdater $eventPageCacheUpdater;
36    private EventQuestionsRegistry $eventQuestionsRegistry;
37
38    /**
39     * @param PageEventLookup $pageEventLookup
40     * @param ParticipantsStore $participantsStore
41     * @param OrganizersStore $organizersStore
42     * @param PermissionChecker $permissionChecker
43     * @param IMessageFormatterFactory $messageFormatterFactory
44     * @param LinkRenderer $linkRenderer
45     * @param CampaignsPageFactory $campaignsPageFactory
46     * @param CampaignsCentralUserLookup $centralUserLookup
47     * @param UserLinker $userLinker
48     * @param EventTimeFormatter $eventTimeFormatter
49     * @param EventPageCacheUpdater $eventPageCacheUpdater
50     * @param EventQuestionsRegistry $eventQuestionsRegistry
51     *
52     */
53    public function __construct(
54        PageEventLookup $pageEventLookup,
55        ParticipantsStore $participantsStore,
56        OrganizersStore $organizersStore,
57        PermissionChecker $permissionChecker,
58        IMessageFormatterFactory $messageFormatterFactory,
59        LinkRenderer $linkRenderer,
60        CampaignsPageFactory $campaignsPageFactory,
61        CampaignsCentralUserLookup $centralUserLookup,
62        UserLinker $userLinker,
63        EventTimeFormatter $eventTimeFormatter,
64        EventPageCacheUpdater $eventPageCacheUpdater,
65        EventQuestionsRegistry $eventQuestionsRegistry
66    ) {
67        $this->pageEventLookup = $pageEventLookup;
68        $this->participantsStore = $participantsStore;
69        $this->organizersStore = $organizersStore;
70        $this->permissionChecker = $permissionChecker;
71        $this->messageFormatterFactory = $messageFormatterFactory;
72        $this->linkRenderer = $linkRenderer;
73        $this->campaignsPageFactory = $campaignsPageFactory;
74        $this->centralUserLookup = $centralUserLookup;
75        $this->userLinker = $userLinker;
76        $this->eventTimeFormatter = $eventTimeFormatter;
77        $this->eventPageCacheUpdater = $eventPageCacheUpdater;
78        $this->eventQuestionsRegistry = $eventQuestionsRegistry;
79    }
80
81    public function newDecorator(
82        Language $language,
83        Authority $viewingAuthority,
84        OutputPage $out
85    ): EventPageDecorator {
86        return new EventPageDecorator(
87            $this->pageEventLookup,
88            $this->participantsStore,
89            $this->organizersStore,
90            $this->permissionChecker,
91            $this->messageFormatterFactory,
92            $this->linkRenderer,
93            $this->campaignsPageFactory,
94            $this->centralUserLookup,
95            $this->userLinker,
96            $this->eventTimeFormatter,
97            $this->eventPageCacheUpdater,
98            $this->eventQuestionsRegistry,
99            $language,
100            $viewingAuthority,
101            $out
102        );
103    }
104}