MediaWiki
REL1_22
|
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 }