diff options
Diffstat (limited to 'includes/specials/SpecialMostlinked.php')
-rw-r--r-- | includes/specials/SpecialMostlinked.php | 62 |
1 files changed, 21 insertions, 41 deletions
diff --git a/includes/specials/SpecialMostlinked.php b/includes/specials/SpecialMostlinked.php index c731588a..58f686e8 100644 --- a/includes/specials/SpecialMostlinked.php +++ b/includes/specials/SpecialMostlinked.php @@ -32,43 +32,34 @@ */ class MostlinkedPage extends QueryPage { - function getName() { return 'Mostlinked'; } + function __construct( $name = 'Mostlinked' ) { + parent::__construct( $name ); + } + function isExpensive() { return true; } function isSyndicated() { return false; } - function getSQL() { - global $wgMiserMode; - - $dbr = wfGetDB( DB_SLAVE ); - - # In miser mode, reduce the query cost by adding a threshold for large wikis - if ( $wgMiserMode ) { - $numPages = SiteStats::pages(); - if ( $numPages > 10000 ) { - $cutoff = 100; - } elseif ( $numPages > 100 ) { - $cutoff = intval( sqrt( $numPages ) ); - } else { - $cutoff = 1; - } - } else { - $cutoff = 1; - } - - list( $pagelinks, $page ) = $dbr->tableNamesN( 'pagelinks', 'page' ); - return - "SELECT 'Mostlinked' AS type, - pl_namespace AS namespace, - pl_title AS title, - COUNT(*) AS value - FROM $pagelinks - LEFT JOIN $page ON pl_namespace=page_namespace AND pl_title=page_title - GROUP BY pl_namespace, pl_title - HAVING COUNT(*) > $cutoff"; + function getQueryInfo() { + return array ( + 'tables' => array ( 'pagelinks', 'page' ), + 'fields' => array ( 'pl_namespace AS namespace', + 'pl_title AS title', + 'COUNT(*) AS value', + 'page_namespace' ), + 'options' => array ( 'HAVING' => 'COUNT(*) > 1', + 'GROUP BY' => 'pl_namespace, pl_title, '. + 'page_namespace' ), + 'join_conds' => array ( 'page' => array ( 'LEFT JOIN', + array ( 'page_namespace = pl_namespace', + 'page_title = pl_title' ) ) ) + ); } /** * Pre-fill the link cache + * + * @param $db DatabaseBase + * @param $res */ function preprocessResults( $db, $res ) { if( $db->numRows( $res ) > 0 ) { @@ -114,14 +105,3 @@ class MostlinkedPage extends QueryPage { return wfSpecialList( $link, $wlh ); } } - -/** - * constructor - */ -function wfSpecialMostlinked() { - list( $limit, $offset ) = wfCheckLimits(); - - $wpp = new MostlinkedPage(); - - $wpp->doQuery( $offset, $limit ); -} |