Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
77.27% covered (warning)
77.27%
17 / 22
33.33% covered (danger)
33.33%
1 / 3
CRAP
0.00% covered (danger)
0.00%
0 / 1
ApiIsReviewed
77.27% covered (warning)
77.27%
17 / 22
33.33% covered (danger)
33.33%
1 / 3
6.42
0.00% covered (danger)
0.00%
0 / 1
 __construct
100.00% covered (success)
100.00%
2 / 2
100.00% covered (success)
100.00%
1 / 1
1
 execute
93.75% covered (success)
93.75%
15 / 16
0.00% covered (danger)
0.00%
0 / 1
4.00
 getExamplesMessages
0.00% covered (danger)
0.00%
0 / 4
0.00% covered (danger)
0.00%
0 / 1
2
1<?php
2
3namespace MediaWiki\Extension\PageTriage\Api;
4
5use ApiQuery;
6use ApiQueryBase;
7use MediaWiki\Extension\PageTriage\PageTriageUtil;
8use MediaWiki\Page\WikiPageFactory;
9
10/**
11 * Changes the Action API to support ?action=query&prop=isreviewed, which returns
12 * true if a page is marked as reviewed, and false if it isn't.
13 */
14class ApiIsReviewed extends ApiQueryBase {
15
16    private WikiPageFactory $wikiPageFactory;
17
18    /**
19     * @param ApiQuery $queryModule
20     * @param string $moduleName
21     * @param WikiPageFactory $wikiPageFactory
22     */
23    public function __construct( ApiQuery $queryModule, $moduleName, WikiPageFactory $wikiPageFactory ) {
24        parent::__construct( $queryModule, $moduleName );
25        $this->wikiPageFactory = $wikiPageFactory;
26    }
27
28    public function execute() {
29        $titlesAndPageIds = $this->getPageSet()->getAllTitlesByNamespace();
30
31        $apiRequestHasNoPages = !array_key_exists( 0, $titlesAndPageIds );
32        if ( $apiRequestHasNoPages ) {
33            return;
34        }
35
36        foreach ( $titlesAndPageIds[0] as $pageId ) {
37            $wikipage = $this->wikiPageFactory->newFromID( $pageId );
38
39            $wikipageDoesNotExist = $wikipage === null;
40            if ( $wikipageDoesNotExist ) {
41                continue;
42            }
43
44            $isReviewed = !PageTriageUtil::isPageUnreviewed( $wikipage );
45
46            $result = $this->getResult();
47            $result->addValue(
48                [ 'query', 'pages', $pageId ],
49                'isreviewed',
50                $isReviewed
51            );
52        }
53    }
54
55    /**
56     * @see ApiBase::getExamplesMessages()
57     * @return array
58     */
59    protected function getExamplesMessages() {
60        return [
61            'action=query&prop=isreviewed&titles=Main%20Page'
62                => 'apihelp-query+isreviewed-example-1',
63        ];
64    }
65}