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