*/ /** * A querypage to show categories ordered in descending order by the pages in them * * @ingroup SpecialPage */ class MostlinkedCategoriesPage extends QueryPage { function __construct( $name = 'Mostlinkedcategories' ) { parent::__construct( $name ); } function isExpensive() { return true; } function isSyndicated() { return false; } function getQueryInfo() { return array ( 'tables' => array ( 'categorylinks' ), 'fields' => array ( 'cl_to AS title', NS_CATEGORY . ' AS namespace', 'COUNT(*) AS value' ), 'options' => array ( 'GROUP BY' => 'cl_to' ) ); } function sortDescending() { return true; } /** * Fetch user page links and cache their existence * * @param $db DatabaseBase * @param $res DatabaseResult */ function preprocessResults( $db, $res ) { $batch = new LinkBatch; foreach ( $res as $row ) { $batch->add( NS_CATEGORY, $row->title ); } $batch->execute(); // Back to start for display if ( $db->numRows( $res ) > 0 ) { // If there are no rows we get an error seeking. $db->dataSeek( $res, 0 ); } } /** * @param $skin Skin * @param $result * @return string */ function formatResult( $skin, $result ) { global $wgLang, $wgContLang; $nt = Title::makeTitle( NS_CATEGORY, $result->title ); $text = $wgContLang->convert( $nt->getText() ); $plink = $skin->link( $nt, htmlspecialchars( $text ) ); $nlinks = wfMsgExt( 'nmembers', array( 'parsemag', 'escape' ), $wgLang->formatNum( $result->value ) ); return wfSpecialList( $plink, $nlinks ); } }