Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 25 |
|
0.00% |
0 / 2 |
CRAP | |
0.00% |
0 / 1 |
UpdateIndexQualityStats | |
0.00% |
0 / 25 |
|
0.00% |
0 / 2 |
6 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 7 |
|
0.00% |
0 / 1 |
2 | |||
doUpdate | |
0.00% |
0 / 18 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace ProofreadPage\Index; |
4 | |
5 | use IDBAccessObject; |
6 | use MediaWiki\Deferred\DataUpdate; |
7 | use MediaWiki\Title\Title; |
8 | use ProofreadPage\Page\PageQualityLevelLookup; |
9 | use ProofreadPage\Pagination\Pagination; |
10 | use Wikimedia\Rdbms\ILoadBalancer; |
11 | |
12 | /** |
13 | * @license GPL-2.0-or-later |
14 | */ |
15 | class UpdateIndexQualityStats extends DataUpdate { |
16 | |
17 | /** @var ILoadBalancer */ |
18 | private $loadBalancer; |
19 | |
20 | /** @var PageQualityLevelLookup */ |
21 | private $pageQualityLevelLookup; |
22 | |
23 | /** @var Pagination */ |
24 | private $pagination; |
25 | |
26 | /** @var Title */ |
27 | private $indexTitle; |
28 | |
29 | /** @var Title|null */ |
30 | private $overrideTitle; |
31 | |
32 | /** @var int|null */ |
33 | private $overrideLevel; |
34 | |
35 | /** |
36 | * @param ILoadBalancer $loadBalancer |
37 | * @param PageQualityLevelLookup $pageQualityLevelLookup |
38 | * @param Pagination $pagination |
39 | * @param Title $indexTitle |
40 | * @param Title|null $overrideTitle |
41 | * @param int|null $overrideLevel |
42 | */ |
43 | public function __construct( |
44 | ILoadBalancer $loadBalancer, |
45 | PageQualityLevelLookup $pageQualityLevelLookup, |
46 | Pagination $pagination, |
47 | Title $indexTitle, |
48 | Title $overrideTitle = null, |
49 | int $overrideLevel = null |
50 | ) { |
51 | parent::__construct(); |
52 | |
53 | $this->loadBalancer = $loadBalancer; |
54 | $this->pageQualityLevelLookup = $pageQualityLevelLookup; |
55 | $this->pagination = $pagination; |
56 | $this->indexTitle = $indexTitle; |
57 | $this->overrideTitle = $overrideTitle; |
58 | $this->overrideLevel = $overrideLevel; |
59 | } |
60 | |
61 | /** |
62 | * @inheritDoc |
63 | */ |
64 | public function doUpdate() { |
65 | $builder = new QualityStatsBuilder( $this->pageQualityLevelLookup ); |
66 | $stats = $builder->buildStatsForPaginationWithOverride( |
67 | $this->pagination, $this->overrideTitle, $this->overrideLevel |
68 | ); |
69 | |
70 | $this->loadBalancer->getConnection( ILoadBalancer::DB_PRIMARY )->newReplaceQueryBuilder() |
71 | ->replaceInto( 'pr_index' ) |
72 | ->uniqueIndexFields( 'pr_page_id' ) |
73 | ->row( [ |
74 | 'pr_page_id' => $this->indexTitle->getArticleID( IDBAccessObject::READ_LATEST ), |
75 | 'pr_count' => $stats->getNumberOfPages(), |
76 | 'pr_q0' => $stats->getNumberOfPagesForQualityLevel( 0 ), |
77 | 'pr_q1' => $stats->getNumberOfPagesForQualityLevel( 1 ), |
78 | 'pr_q2' => $stats->getNumberOfPagesForQualityLevel( 2 ), |
79 | 'pr_q3' => $stats->getNumberOfPagesForQualityLevel( 3 ), |
80 | 'pr_q4' => $stats->getNumberOfPagesForQualityLevel( 4 ) |
81 | ] ) |
82 | ->caller( __METHOD__ ) |
83 | ->execute(); |
84 | } |
85 | } |