X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialWantedpages.php;h=dec123de01abb2d693f9fef4552ad4df18ea3770;hb=0d81130dd47970a71871dae4ff1f625ff6f33014;hp=0fd9bb842c31ee1c2215df0c2e840fbe5ab7ba18;hpb=f68b7bddb4e7593cfbb2750805ccb33b2b60c163;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialWantedpages.php b/includes/specials/SpecialWantedpages.php index 0fd9bb842c..dec123de01 100644 --- a/includes/specials/SpecialWantedpages.php +++ b/includes/specials/SpecialWantedpages.php @@ -1,5 +1,6 @@ setListoutput( $inc ); - $this->nlinks = $nlinks; + + function __construct( $name = 'Wantedpages' ) { + parent::__construct( $name ); } - function getName() { - return 'Wantedpages'; + function isIncludable() { + return true; } - function getSQL() { - global $wgWantedPagesThreshold; - $count = $wgWantedPagesThreshold - 1; - $dbr = wfGetDB( DB_SLAVE ); - $pagelinks = $dbr->tableName( 'pagelinks' ); - $page = $dbr->tableName( 'page' ); - $sql = "SELECT 'Wantedpages' AS type, - pl_namespace AS namespace, - pl_title AS title, - COUNT(*) AS value - FROM $pagelinks - LEFT JOIN $page AS pg1 - ON pl_namespace = pg1.page_namespace AND pl_title = pg1.page_title - LEFT JOIN $page AS pg2 - ON pl_from = pg2.page_id - WHERE pg1.page_namespace IS NULL - AND pl_namespace NOT IN ( " . NS_USER . ", ". NS_USER_TALK . ") - AND pg2.page_namespace != " . NS_MEDIAWIKI . " - GROUP BY pl_namespace, pl_title - HAVING COUNT(*) > $count"; + function execute( $par ) { + $inc = $this->including(); - wfRunHooks( 'WantedPages::getSQL', array( &$this, &$sql ) ); - return $sql; + if ( $inc ) { + $parts = explode( '/', $par, 2 ); + $this->limit = (int)$parts[0]; + // @todo FIXME: nlinks is ignored + //$nlinks = isset( $parts[1] ) && $parts[1] === 'nlinks'; + $this->offset = 0; + } else { + //$nlinks = true; + } + $this->setListoutput( $inc ); + $this->shownavigation = !$inc; + parent::execute( $par ); } -} - -/** - * constructor - */ -function wfSpecialWantedpages( $par = null, $specialPage ) { - $inc = $specialPage->including(); - if ( $inc ) { - @list( $limit, $nlinks ) = explode( '/', $par, 2 ); - $limit = (int)$limit; - $nlinks = $nlinks === 'nlinks'; - $offset = 0; - } else { - list( $limit, $offset ) = wfCheckLimits(); - $nlinks = true; + function getQueryInfo() { + global $wgWantedPagesThreshold; + $count = $wgWantedPagesThreshold - 1; + $query = array( + 'tables' => array( + 'pagelinks', + 'pg1' => 'page', + 'pg2' => 'page' + ), + 'fields' => array( + 'namespace' => 'pl_namespace', + 'title' => 'pl_title', + 'value' => 'COUNT(*)' + ), + 'conds' => array( + 'pg1.page_namespace IS NULL', + "pl_namespace NOT IN ( '" . NS_USER . + "', '" . NS_USER_TALK . "' )", + "pg2.page_namespace != '" . NS_MEDIAWIKI . "'" + ), + 'options' => array( + 'HAVING' => "COUNT(*) > $count", + 'GROUP BY' => array( 'pl_namespace', 'pl_title' ) + ), + 'join_conds' => array( + 'pg1' => array( + 'LEFT JOIN', array( + 'pg1.page_namespace = pl_namespace', + 'pg1.page_title = pl_title' + ) + ), + 'pg2' => array( 'LEFT JOIN', 'pg2.page_id = pl_from' ) + ) + ); + // Replacement for the WantedPages::getSQL hook + wfRunHooks( 'WantedPages::getQueryInfo', array( &$this, &$query ) ); + return $query; } - - $wpp = new WantedPagesPage( $inc, $nlinks ); - - $wpp->doQuery( $offset, $limit, !$inc ); }