Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
100.00% covered (success)
100.00%
27 / 27
100.00% covered (success)
100.00%
4 / 4
CRAP
100.00% covered (success)
100.00%
1 / 1
VariableGeneratorFactory
100.00% covered (success)
100.00%
27 / 27
100.00% covered (success)
100.00%
4 / 4
4
100.00% covered (success)
100.00%
1 / 1
 __construct
100.00% covered (success)
100.00%
6 / 6
100.00% covered (success)
100.00%
1 / 1
1
 newGenerator
100.00% covered (success)
100.00%
1 / 1
100.00% covered (success)
100.00%
1 / 1
1
 newRunGenerator
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
1
 newRCGenerator
100.00% covered (success)
100.00%
10 / 10
100.00% covered (success)
100.00%
1 / 1
1
1<?php
2
3namespace MediaWiki\Extension\AbuseFilter\VariableGenerator;
4
5use MediaWiki\Extension\AbuseFilter\Hooks\AbuseFilterHookRunner;
6use MediaWiki\Extension\AbuseFilter\ServiceNames;
7use MediaWiki\Extension\AbuseFilter\TextExtractor;
8use MediaWiki\Extension\AbuseFilter\Variables\VariableHolder;
9use MediaWiki\FileRepo\RepoGroup;
10use MediaWiki\Page\WikiPageFactory;
11use MediaWiki\RecentChanges\RecentChange;
12use MediaWiki\Title\Title;
13use MediaWiki\User\User;
14use MediaWiki\User\UserFactory;
15use Wikimedia\Mime\MimeAnalyzer;
16
17class VariableGeneratorFactory {
18    public const SERVICE_NAME = ServiceNames::VariableGeneratorFactory;
19
20    /** @var AbuseFilterHookRunner */
21    private $hookRunner;
22    /** @var TextExtractor */
23    private $textExtractor;
24    /** @var MimeAnalyzer */
25    private $mimeAnalyzer;
26    /** @var RepoGroup */
27    private $repoGroup;
28    /** @var WikiPageFactory */
29    private $wikiPageFactory;
30    /** @var UserFactory */
31    private $userFactory;
32
33    /**
34     * @param AbuseFilterHookRunner $hookRunner
35     * @param TextExtractor $textExtractor
36     * @param MimeAnalyzer $mimeAnalyzer
37     * @param RepoGroup $repoGroup
38     * @param WikiPageFactory $wikiPageFactory
39     * @param UserFactory $userFactory
40     */
41    public function __construct(
42        AbuseFilterHookRunner $hookRunner,
43        TextExtractor $textExtractor,
44        MimeAnalyzer $mimeAnalyzer,
45        RepoGroup $repoGroup,
46        WikiPageFactory $wikiPageFactory,
47        UserFactory $userFactory
48    ) {
49        $this->hookRunner = $hookRunner;
50        $this->textExtractor = $textExtractor;
51        $this->mimeAnalyzer = $mimeAnalyzer;
52        $this->repoGroup = $repoGroup;
53        $this->wikiPageFactory = $wikiPageFactory;
54        $this->userFactory = $userFactory;
55    }
56
57    /**
58     * @param VariableHolder|null $holder
59     * @return VariableGenerator
60     */
61    public function newGenerator( ?VariableHolder $holder = null ): VariableGenerator {
62        return new VariableGenerator( $this->hookRunner, $this->userFactory, $holder );
63    }
64
65    /**
66     * @param User $user
67     * @param Title $title
68     * @param VariableHolder|null $holder
69     * @return RunVariableGenerator
70     */
71    public function newRunGenerator( User $user, Title $title, ?VariableHolder $holder = null ): RunVariableGenerator {
72        return new RunVariableGenerator(
73            $this->hookRunner,
74            $this->userFactory,
75            $this->textExtractor,
76            $this->mimeAnalyzer,
77            $this->wikiPageFactory,
78            $user,
79            $title,
80            $holder
81        );
82    }
83
84    /**
85     * @param RecentChange $rc
86     * @param User $contextUser
87     * @param VariableHolder|null $holder
88     * @return RCVariableGenerator
89     */
90    public function newRCGenerator(
91        RecentChange $rc,
92        User $contextUser,
93        ?VariableHolder $holder = null
94    ): RCVariableGenerator {
95        return new RCVariableGenerator(
96            $this->hookRunner,
97            $this->userFactory,
98            $this->mimeAnalyzer,
99            $this->repoGroup,
100            $this->wikiPageFactory,
101            $rc,
102            $contextUser,
103            $holder
104        );
105    }
106}