X-Git-Url: https://scripts.mit.edu/gitweb/autoinstalls/mediawiki.git/blobdiff_plain/a4b52d2fe555a507c376e78ee624898c55968364..d7967d5e4460e08b6b258307afbca0596b18a3dd:/includes/SpecialCategories.php diff --git a/includes/SpecialCategories.php b/includes/SpecialCategories.php index 977484bf..596569ed 100644 --- a/includes/SpecialCategories.php +++ b/includes/SpecialCategories.php @@ -1,66 +1,63 @@ addHTML( + wfMsgWikiHtml( 'categoriespagetext' ) . + $cap->getNavigationBar() + . '' . + $cap->getNavigationBar() + ); +} /** - * - * @package MediaWiki - * @subpackage SpecialPage + * @addtogroup SpecialPage + * @addtogroup Pager */ -class CategoriesPage extends QueryPage { - - function getName() { - return "Categories"; - } - - function isExpensive() { - return false; - } - - function isSyndicated() { return false; } - - function getPageHeader() { - return '

'.wfMsg('categoriespagetext')."


\n"; +class CategoryPager extends AlphabeticPager { + function getQueryInfo() { + return array( + 'tables' => array('categorylinks'), + 'fields' => array('cl_to','count(*) AS count'), + 'options' => array('GROUP BY' => 'cl_to') + ); } - function getSQL() { - $NScat = NS_CATEGORY; - $dbr =& wfGetDB( DB_SLAVE ); - $categorylinks = $dbr->tableName( 'categorylinks' ); - return "SELECT DISTINCT 'Categories' as type, - {$NScat} as namespace, - cl_to as title, - 1 as value - FROM $categorylinks"; + + function getIndexField() { + return "cl_to"; } - function sortDescending() { - return false; + /* Override getBody to apply LinksBatch on resultset before actually outputting anything. */ + function getBody() { + if (!$this->mQueryDone) { + $this->doQuery(); + } + $batch = new LinkBatch; + + $this->mResult->rewind(); + + while ( $row = $this->mResult->fetchObject() ) { + $batch->addObj( Title::makeTitleSafe( NS_CATEGORY, $row->cl_to ) ); + } + $batch->execute(); + $this->mResult->rewind(); + return parent::getBody(); } - - function formatResult( $skin, $result ) { + + function formatRow($result) { global $wgLang; - $title = Title::makeTitle( NS_CATEGORY, $result->title ); - return $skin->makeLinkObj( $title, $title->getText() ); + $title = Title::makeTitle( NS_CATEGORY, $result->cl_to ); + $titleText = $this->getSkin()->makeLinkObj( $title, htmlspecialchars( $title->getText() ) ); + $count = wfMsgExt( 'nmembers', array( 'parsemag', 'escape'), + $wgLang->formatNum( $result->count ) ); + return Xml::tags('li', null, "$titleText ($count)" ) . "\n"; } } -/** - * - */ -function wfSpecialCategories() { - list( $limit, $offset ) = wfCheckLimits(); - - $cap = new CategoriesPage(); - - return $cap->doQuery( $offset, $limit ); -} -?>