*/ /** * 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 isSyndicated() { return false; } function getQueryInfo() { return array ( 'tables' => array ( 'category' ), 'fields' => array ( 'cat_title AS title', NS_CATEGORY . ' AS namespace', 'cat_pages AS value' ), ); } 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 $wgContLang; $nt = Title::makeTitle( NS_CATEGORY, $result->title ); $text = $wgContLang->convert( $nt->getText() ); $plink = Linker::link( $nt, htmlspecialchars( $text ) ); $nlinks = $this->msg( 'nmembers' )->numParams( $result->value )->escaped(); return $this->getLanguage()->specialList( $plink, $nlinks ); } }