Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 31
0.00% covered (danger)
0.00%
0 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
EventsPagerFactory
0.00% covered (danger)
0.00%
0 / 31
0.00% covered (danger)
0.00%
0 / 3
12
0.00% covered (danger)
0.00%
0 / 1
 __construct
0.00% covered (danger)
0.00%
0 / 7
0.00% covered (danger)
0.00%
0 / 1
2
 newTablePager
0.00% covered (danger)
0.00%
0 / 11
0.00% covered (danger)
0.00%
0 / 1
2
 newListPager
0.00% covered (danger)
0.00%
0 / 13
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3declare( strict_types=1 );
4
5namespace MediaWiki\Extension\CampaignEvents\Pager;
6
7use IContextSource;
8use MediaWiki\Cache\LinkBatchFactory;
9use MediaWiki\Extension\CampaignEvents\Database\CampaignsDatabaseHelper;
10use MediaWiki\Extension\CampaignEvents\MWEntity\CampaignsPageFactory;
11use MediaWiki\Extension\CampaignEvents\MWEntity\CentralUser;
12use MediaWiki\Extension\CampaignEvents\MWEntity\PageURLResolver;
13use MediaWiki\Extension\CampaignEvents\MWEntity\UserLinker;
14use MediaWiki\Extension\CampaignEvents\Organizers\OrganizersStore;
15use MediaWiki\Linker\LinkRenderer;
16use MediaWiki\User\Options\UserOptionsLookup;
17
18class EventsPagerFactory {
19    public const SERVICE_NAME = 'CampaignEventsEventsPagerFactory';
20
21    private CampaignsDatabaseHelper $databaseHelper;
22    private CampaignsPageFactory $campaignsPageFactory;
23    private PageURLResolver $pageURLResolver;
24    private LinkBatchFactory $linkBatchFactory;
25    private UserLinker $userLinker;
26    private OrganizersStore $organiserStore;
27    private UserOptionsLookup $options;
28
29    /**
30     * @param CampaignsDatabaseHelper $databaseHelper
31     * @param CampaignsPageFactory $campaignsPageFactory
32     * @param PageURLResolver $pageURLResolver
33     * @param LinkBatchFactory $linkBatchFactory
34     * @param UserLinker $userLinker
35     * @param OrganizersStore $organiserStore
36     */
37    public function __construct(
38        CampaignsDatabaseHelper $databaseHelper,
39        CampaignsPageFactory $campaignsPageFactory,
40        PageURLResolver $pageURLResolver,
41        LinkBatchFactory $linkBatchFactory,
42        UserLinker $userLinker,
43        OrganizersStore $organiserStore,
44        UserOptionsLookup $options
45    ) {
46        $this->databaseHelper = $databaseHelper;
47        $this->campaignsPageFactory = $campaignsPageFactory;
48        $this->pageURLResolver = $pageURLResolver;
49        $this->linkBatchFactory = $linkBatchFactory;
50        $this->userLinker = $userLinker;
51        $this->organiserStore = $organiserStore;
52        $this->options = $options;
53    }
54
55    /**
56     * @param IContextSource $context
57     * @param LinkRenderer $linkRenderer
58     * @param string $search
59     * @param string|null $status One of the EventsTablePager::STATUS_* constants
60     * @param CentralUser $user
61     * @return EventsTablePager
62     */
63    public function newTablePager(
64        IContextSource $context,
65        LinkRenderer $linkRenderer,
66        string $search,
67        ?string $status,
68        CentralUser $user
69    ): EventsTablePager {
70        return new EventsTablePager(
71            $context,
72            $linkRenderer,
73            $this->databaseHelper,
74            $this->campaignsPageFactory,
75            $this->pageURLResolver,
76            $this->linkBatchFactory,
77            $search,
78            $status,
79            $user,
80        );
81    }
82
83    /**
84     * @param string $search
85     * @param int|null $meetingType
86     * @param string $startDate
87     * @param string $endDate
88     * @return EventsListPager
89     */
90    public function newListPager(
91        string $search,
92        ?int $meetingType,
93        string $startDate,
94        string $endDate
95    ): EventsListPager {
96        return new EventsListPager(
97            $this->userLinker,
98            $this->campaignsPageFactory,
99            $this->pageURLResolver,
100            $this->organiserStore,
101            $this->linkBatchFactory,
102            $this->options,
103            $this->databaseHelper,
104            $search,
105            $meetingType,
106            $startDate,
107            $endDate
108        );
109    }
110}