MediaWiki  master
SpecialWantedpages.php
Go to the documentation of this file.
1 <?php
30 
31  public function __construct( $name = 'Wantedpages' ) {
32  parent::__construct( $name );
33  }
34 
35  public function isIncludable() {
36  return true;
37  }
38 
39  public 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  public 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  $this->getHookRunner()->onWantedPages__getQueryInfo( $this, $query );
89 
90  return $query;
91  }
92 
93  protected function getGroupName() {
94  return 'maintenance';
95  }
96 }
QueryPage\setListoutput
setListoutput( $bool)
A mutator for $this->listoutput;.
Definition: QueryPage.php:153
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:54
WantedPagesPage\execute
execute( $par)
This is the actual workhorse.
Definition: SpecialWantedpages.php:39
SpecialPage\getHookRunner
getHookRunner()
Definition: SpecialPage.php:1010
SpecialPage\getConfig
getConfig()
Shortcut to get main config object.
Definition: SpecialPage.php:794
wfGetDB
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
Definition: GlobalFunctions.php:2467
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:93
DB_REPLICA
const DB_REPLICA
Definition: defines.php:25
NS_USER_TALK
const NS_USER_TALK
Definition: Defines.php:72
WantedPagesPage\isIncludable
isIncludable()
Whether it's allowed to transclude the special page via {{Special:Foo/params}} Stable to override.
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:71
NS_MEDIAWIKI
const NS_MEDIAWIKI
Definition: Defines.php:77
SpecialPage\including
including( $x=null)
Whether the special page is being evaluated via transclusion.
Definition: SpecialPage.php:251
WantedQueryPage
Class definition for a wanted query page like WantedPages, WantedTemplates, etc Stable to extend.
Definition: WantedQueryPage.php:33