X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSpecialCategories.php;h=efe65a78cce3f024dbc031c12f706ae2e82e99d0;hb=bacf4234d4fa55f686549579fc8c918fb4781a79;hp=46601efc7e8e036a2118dd21e62121e2ba5ba5f9;hpb=3e57dec564ae8b8510342693ac921e83ac300b36;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialCategories.php b/includes/SpecialCategories.php index 46601efc7e..efe65a78cc 100644 --- a/includes/SpecialCategories.php +++ b/includes/SpecialCategories.php @@ -1,68 +1,63 @@ addHTML( + wfMsgExt( 'categoriespagetext', array( 'parse' ) ) . + $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 wfMsgWikiHtml( 'categoriespagetext' ); +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' ); - $s= "SELECT 'Categories' as type, - {$NScat} as namespace, - cl_to as title, - cl_to as value, - COUNT(*) as count - FROM $categorylinks - GROUP BY 1,2,3,4"; - return $s; + 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 ); - $plink = $skin->makeLinkObj( $title, $title->getText() ); - $nlinks = wfMsgExt( 'nmembers', array( 'parsemag', 'escape'), - $wgLang->formatNum( $result->count ) ); - return wfSpecialList($plink, $nlinks); + $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 ); -} -?>