00001 <?php 00011 class WantedPagesPage extends WantedQueryPage { 00012 var $nlinks; 00013 00014 function WantedPagesPage( $inc = false, $nlinks = true ) { 00015 $this->setListoutput( $inc ); 00016 $this->nlinks = $nlinks; 00017 } 00018 00019 function getName() { 00020 return 'Wantedpages'; 00021 } 00022 00023 function getSQL() { 00024 global $wgWantedPagesThreshold; 00025 $count = $wgWantedPagesThreshold - 1; 00026 $dbr = wfGetDB( DB_SLAVE ); 00027 $pagelinks = $dbr->tableName( 'pagelinks' ); 00028 $page = $dbr->tableName( 'page' ); 00029 $sql = "SELECT 'Wantedpages' AS type, 00030 pl_namespace AS namespace, 00031 pl_title AS title, 00032 COUNT(*) AS value 00033 FROM $pagelinks 00034 LEFT JOIN $page AS pg1 00035 ON pl_namespace = pg1.page_namespace AND pl_title = pg1.page_title 00036 LEFT JOIN $page AS pg2 00037 ON pl_from = pg2.page_id 00038 WHERE pg1.page_namespace IS NULL 00039 AND pl_namespace NOT IN ( " . NS_USER . ", ". NS_USER_TALK . ") 00040 AND pg2.page_namespace != " . NS_MEDIAWIKI . " 00041 GROUP BY pl_namespace, pl_title 00042 HAVING COUNT(*) > $count"; 00043 00044 wfRunHooks( 'WantedPages::getSQL', array( &$this, &$sql ) ); 00045 return $sql; 00046 } 00047 } 00048 00052 function wfSpecialWantedpages( $par = null, $specialPage ) { 00053 $inc = $specialPage->including(); 00054 00055 if ( $inc ) { 00056 @list( $limit, $nlinks ) = explode( '/', $par, 2 ); 00057 $limit = (int)$limit; 00058 $nlinks = $nlinks === 'nlinks'; 00059 $offset = 0; 00060 } else { 00061 list( $limit, $offset ) = wfCheckLimits(); 00062 $nlinks = true; 00063 } 00064 00065 $wpp = new WantedPagesPage( $inc, $nlinks ); 00066 00067 $wpp->doQuery( $offset, $limit, !$inc ); 00068 }