Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 25
0.00% covered (danger)
0.00%
0 / 2
CRAP
0.00% covered (danger)
0.00%
0 / 1
UpdateIndexQualityStats
0.00% covered (danger)
0.00%
0 / 25
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 / 7
0.00% covered (danger)
0.00%
0 / 1
2
 doUpdate
0.00% covered (danger)
0.00%
0 / 18
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace ProofreadPage\Index;
4
5use IDBAccessObject;
6use MediaWiki\Deferred\DataUpdate;
7use MediaWiki\Title\Title;
8use ProofreadPage\Page\PageQualityLevelLookup;
9use ProofreadPage\Pagination\Pagination;
10use Wikimedia\Rdbms\ILoadBalancer;
11
12/**
13 * @license GPL-2.0-or-later
14 */
15class 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}