MediaWiki  master
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 }
Class definition for a wanted query page like WantedPages, WantedTemplates, etc.
including( $x=null)
Whether the special page is being evaluated via transclusion.
wfGetDB( $db, $groups=[], $wiki=false)
Get a Database object.
__construct( $name='Wantedpages')
const NS_MEDIAWIKI
Definition: Defines.php:68
setListoutput( $bool)
A mutator for $this->listoutput;.
Definition: QueryPage.php:150
getConfig()
Shortcut to get main config object.
A special page that lists most linked pages that does not exist.
const DB_REPLICA
Definition: defines.php:25
const NS_USER_TALK
Definition: Defines.php:63
static run( $event, array $args=[], $deprecatedVersion=null)
Call hook functions defined in Hooks::register and $wgHooks.
Definition: Hooks.php:200