MediaWiki  REL1_21
SpecialWantedpages.php
Go to the documentation of this file.
00001 <?php
00029 class WantedPagesPage extends WantedQueryPage {
00030 
00031         function __construct( $name = 'Wantedpages' ) {
00032                 parent::__construct( $name );
00033         }
00034 
00035         function isIncludable() {
00036                 return true;
00037         }
00038 
00039         function execute( $par ) {
00040                 $inc = $this->including();
00041 
00042                 if ( $inc ) {
00043                         $parts = explode( '/', $par, 2 );
00044                         $this->limit = (int)$parts[0];
00045                         // @todo FIXME: nlinks is ignored
00046                         //$nlinks = isset( $parts[1] ) && $parts[1] === 'nlinks';
00047                         $this->offset = 0;
00048                 } else {
00049                         //$nlinks = true;
00050                 }
00051                 $this->setListoutput( $inc );
00052                 $this->shownavigation = !$inc;
00053                 parent::execute( $par );
00054         }
00055 
00056         function getQueryInfo() {
00057                 global $wgWantedPagesThreshold;
00058                 $count = $wgWantedPagesThreshold - 1;
00059                 $query = array(
00060                         'tables' => array(
00061                                 'pagelinks',
00062                                 'pg1' => 'page',
00063                                 'pg2' => 'page'
00064                         ),
00065                         'fields' => array(
00066                                 'namespace' => 'pl_namespace',
00067                                 'title' => 'pl_title',
00068                                 'value' => 'COUNT(*)'
00069                         ),
00070                         'conds' => array(
00071                                 'pg1.page_namespace IS NULL',
00072                                 "pl_namespace NOT IN ( '" . NS_USER .
00073                                         "', '" . NS_USER_TALK . "' )",
00074                                 "pg2.page_namespace != '" . NS_MEDIAWIKI . "'"
00075                         ),
00076                         'options' => array(
00077                                 'HAVING' => "COUNT(*) > $count",
00078                                 'GROUP BY' => array( 'pl_namespace', 'pl_title' )
00079                         ),
00080                         'join_conds' => array(
00081                                 'pg1' => array(
00082                                         'LEFT JOIN', array(
00083                                                 'pg1.page_namespace = pl_namespace',
00084                                                 'pg1.page_title = pl_title'
00085                                         )
00086                                 ),
00087                                 'pg2' => array( 'LEFT JOIN', 'pg2.page_id = pl_from' )
00088                         )
00089                 );
00090                 // Replacement for the WantedPages::getSQL hook
00091                 wfRunHooks( 'WantedPages::getQueryInfo', array( &$this, &$query ) );
00092                 return $query;
00093         }
00094 
00095         protected function getGroupName() {
00096                 return 'maintenance';
00097         }
00098 }