MediaWiki  1.34.0
SpecialWantedpages.php
Go to the documentation of this file.
1 <?php
30 
31  function __construct( $name = 'Wantedpages' ) {
32  parent::__construct( $name );
33  }
34 
35  function isIncludable() {
36  return true;
37  }
38 
39  function execute( $par ) {
40  $inc = $this->including();
41 
42  if ( $inc ) {
43  $this->limit = (int)$par;
44  $this->offset = 0;
45  }
46  $this->setListoutput( $inc );
47  $this->shownavigation = !$inc;
48  parent::execute( $par );
49  }
50 
51  function getQueryInfo() {
52  $dbr = wfGetDB( DB_REPLICA );
53  $count = $this->getConfig()->get( 'WantedPagesThreshold' ) - 1;
54  $query = [
55  'tables' => [
56  'pagelinks',
57  'pg1' => 'page',
58  'pg2' => 'page'
59  ],
60  'fields' => [
61  'namespace' => 'pl_namespace',
62  'title' => 'pl_title',
63  'value' => 'COUNT(*)'
64  ],
65  'conds' => [
66  'pg1.page_namespace IS NULL',
67  'pl_namespace NOT IN (' . $dbr->makeList( [ NS_USER, NS_USER_TALK ] ) . ')',
68  'pg2.page_namespace != ' . $dbr->addQuotes( NS_MEDIAWIKI ),
69  ],
70  'options' => [
71  'HAVING' => [
72  'COUNT(*) > ' . $dbr->addQuotes( $count ),
73  'COUNT(*) > SUM(pg2.page_is_redirect)'
74  ],
75  'GROUP BY' => [ 'pl_namespace', 'pl_title' ]
76  ],
77  'join_conds' => [
78  'pg1' => [
79  'LEFT JOIN', [
80  'pg1.page_namespace = pl_namespace',
81  'pg1.page_title = pl_title'
82  ]
83  ],
84  'pg2' => [ 'LEFT JOIN', 'pg2.page_id = pl_from' ]
85  ]
86  ];
87  // Replacement for the WantedPages::getSQL hook
88  // Avoid PHP 7.1 warning from passing $this by reference
89  $wantedPages = $this;
90  Hooks::run( 'WantedPages::getQueryInfo', [ &$wantedPages, &$query ] );
91 
92  return $query;
93  }
94 
95  protected function getGroupName() {
96  return 'maintenance';
97  }
98 }
QueryPage\setListoutput
setListoutput( $bool)
A mutator for $this->listoutput;.
Definition: QueryPage.php:150
WantedPagesPage\getQueryInfo
getQueryInfo()
Subclasses return an SQL query here, formatted as an array with the following keys: tables => Table(s...
Definition: SpecialWantedpages.php:51
$dbr
$dbr
Definition: testCompression.php:50
WantedPagesPage\execute
execute( $par)
This is the actual workhorse.
Definition: SpecialWantedpages.php:39
SpecialPage\getConfig
getConfig()
Shortcut to get main config object.
Definition: SpecialPage.php:758
wfGetDB
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
Definition: GlobalFunctions.php:2575
WantedPagesPage\__construct
__construct( $name='Wantedpages')
Definition: SpecialWantedpages.php:31
WantedPagesPage\getGroupName
getGroupName()
Under which header this special page is listed in Special:SpecialPages See messages 'specialpages-gro...
Definition: SpecialWantedpages.php:95
DB_REPLICA
const DB_REPLICA
Definition: defines.php:25
NS_USER_TALK
const NS_USER_TALK
Definition: Defines.php:63
WantedPagesPage\isIncludable
isIncludable()
Whether it's allowed to transclude the special page via {{Special:Foo/params}}.
Definition: SpecialWantedpages.php:35
WantedPagesPage
A special page that lists most linked pages that does not exist.
Definition: SpecialWantedpages.php:29
NS_USER
const NS_USER
Definition: Defines.php:62
NS_MEDIAWIKI
const NS_MEDIAWIKI
Definition: Defines.php:68
Hooks\run
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
Definition: Hooks.php:200
SpecialPage\including
including( $x=null)
Whether the special page is being evaluated via transclusion.
Definition: SpecialPage.php:230
WantedQueryPage
Class definition for a wanted query page like WantedPages, WantedTemplates, etc.
Definition: WantedQueryPage.php:32