Code Coverage |
||||||||||
Lines |
Functions and Methods |
Classes and Traits |
||||||||
Total | |
0.00% |
0 / 27 |
|
0.00% |
0 / 5 |
CRAP | |
0.00% |
0 / 1 |
SpecialPagesWithoutScans | |
0.00% |
0 / 27 |
|
0.00% |
0 / 5 |
30 | |
0.00% |
0 / 1 |
__construct | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
isExpensive | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
isSyndicated | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 | |||
getQueryInfo | |
0.00% |
0 / 23 |
|
0.00% |
0 / 1 |
2 | |||
getGroupName | |
0.00% |
0 / 1 |
|
0.00% |
0 / 1 |
2 |
1 | <?php |
2 | |
3 | namespace ProofreadPage\Special; |
4 | |
5 | use MediaWiki\SpecialPage\PageQueryPage; |
6 | use ProofreadPage\Context; |
7 | |
8 | /** |
9 | * @license GPL-2.0-or-later |
10 | * |
11 | * Special page that lists the texts that have no transclusions |
12 | */ |
13 | class SpecialPagesWithoutScans extends PageQueryPage { |
14 | |
15 | /** |
16 | * @param string $name |
17 | */ |
18 | public function __construct( $name = 'PagesWithoutScans' ) { |
19 | parent::__construct( $name ); |
20 | } |
21 | |
22 | /** @inheritDoc */ |
23 | public function isExpensive() { |
24 | return true; |
25 | } |
26 | |
27 | /** @inheritDoc */ |
28 | public function isSyndicated() { |
29 | return false; |
30 | } |
31 | |
32 | /** |
33 | * @return mixed[] |
34 | */ |
35 | public function getQueryInfo() { |
36 | $context = Context::getDefaultContext(); |
37 | $queryBuilder = $this->getRecacheDB()->newSelectQueryBuilder() |
38 | ->select( [ |
39 | 'namespace' => 'page_namespace', |
40 | 'title' => 'page_title', |
41 | 'value' => 'page_len' |
42 | ] ) |
43 | ->from( 'page' ) |
44 | ->leftJoin( 'page_props', null, [ 'page_id = pp_page', 'pp_propname' => 'disambiguation' ] ) |
45 | ->where( [ |
46 | 'pp_page' => null, |
47 | 'page_namespace' => NS_MAIN, |
48 | 'page_is_redirect' => 0, |
49 | ] ); |
50 | $subQuery = $queryBuilder->newSubquery() |
51 | ->select( 'page_id' ) |
52 | ->from( 'page' ) |
53 | ->join( 'templatelinks', null, 'page_id = tl_from' ) |
54 | ->join( 'linktarget', null, 'tl_target_id = lt_id' ) |
55 | ->where( [ 'lt_namespace' => $context->getPageNamespaceId(), 'page_namespace' => NS_MAIN, |
56 | 'page_is_redirect' => 0, ] ); |
57 | $queryBuilder->where( 'page_id NOT IN (' . $subQuery->getSQL() . ')' ); |
58 | |
59 | return $queryBuilder->getQueryInfo(); |
60 | } |
61 | |
62 | /** |
63 | * @return string |
64 | */ |
65 | protected function getGroupName() { |
66 | return 'maintenance'; |
67 | } |
68 | } |