From 63601400e476c6cf43d985f3e7b9864681695ed4 Mon Sep 17 00:00:00 2001 From: Pierre Schmitz Date: Fri, 18 Jan 2013 16:46:04 +0100 Subject: Update to MediaWiki 1.20.2 this update includes: * adjusted Arch Linux skin * updated FluxBBAuthPlugin * patch for https://bugzilla.wikimedia.org/show_bug.cgi?id=44024 --- includes/specials/SpecialMostcategories.php | 40 +++++++++++++++++++++++++---- 1 file changed, 35 insertions(+), 5 deletions(-) (limited to 'includes/specials/SpecialMostcategories.php') diff --git a/includes/specials/SpecialMostcategories.php b/includes/specials/SpecialMostcategories.php index 98b73675..3f0bafa3 100644 --- a/includes/specials/SpecialMostcategories.php +++ b/includes/specials/SpecialMostcategories.php @@ -41,17 +41,37 @@ class MostcategoriesPage extends QueryPage { function getQueryInfo() { return array ( 'tables' => array ( 'categorylinks', 'page' ), - 'fields' => array ( 'page_namespace AS namespace', - 'page_title AS title', - 'COUNT(*) AS value' ), + 'fields' => array ( 'namespace' => 'page_namespace', + 'title' => 'page_title', + 'value' => 'COUNT(*)' ), 'conds' => array ( 'page_namespace' => MWNamespace::getContentNamespaces() ), 'options' => array ( 'HAVING' => 'COUNT(*) > 1', - 'GROUP BY' => 'page_namespace, page_title' ), + 'GROUP BY' => array( 'page_namespace', 'page_title' ) ), 'join_conds' => array ( 'page' => array ( 'LEFT JOIN', 'page_id = cl_from' ) ) ); } + /** + * @param $db DatabaseBase + * @param $res + */ + function preprocessResults( $db, $res ) { + # There's no point doing a batch check if we aren't caching results; + # the page must exist for it to have been pulled out of the table + if ( !$this->isCached() || !$res->numRows() ) { + return; + } + + $batch = new LinkBatch(); + foreach ( $res as $row ) { + $batch->add( $row->namespace, $row->title ); + } + $batch->execute(); + + $res->seek( 0 ); + } + /** * @param $skin Skin * @param $result @@ -59,9 +79,19 @@ class MostcategoriesPage extends QueryPage { */ function formatResult( $skin, $result ) { $title = Title::makeTitleSafe( $result->namespace, $result->title ); + if ( !$title ) { + return Html::element( 'span', array( 'class' => 'mw-invalidtitle' ), + Linker::getInvalidTitleDescription( $this->getContext(), $result->namespace, $result->title ) ); + } + + if ( $this->isCached() ) { + $link = Linker::link( $title ); + } else { + $link = Linker::linkKnown( $title ); + } $count = $this->msg( 'ncategories' )->numParams( $result->value )->escaped(); - $link = Linker::link( $title ); + return $this->getLanguage()->specialList( $link, $count ); } } -- cgit v1.2.3-54-g00ecf