X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2FSpecialCategories.php;h=efe65a78cce3f024dbc031c12f706ae2e82e99d0;hb=a703f2f59f90a97a9dec6e48de38374a5c12640e;hp=b9a01fab8b6093dcff20df6e996f67dc23c2c3e3;hpb=90155b8a9719ada6522a320a3315b4e698fdd970;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/SpecialCategories.php b/includes/SpecialCategories.php index b9a01fab8b..efe65a78cc 100644 --- a/includes/SpecialCategories.php +++ b/includes/SpecialCategories.php @@ -1,57 +1,63 @@ addHTML( + wfMsgExt( 'categoriespagetext', array( 'parse' ) ) . + $cap->getNavigationBar() + . '' . + $cap->getNavigationBar() + ); +} /** - * + * @addtogroup SpecialPage + * @addtogroup Pager */ -class CategoriesPage extends QueryPage { - - function getName() { - return "Categories"; - } - - function isExpensive() { - return false; +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 ); -} -?>