From 12ddff30050d153e5d40e6dbfcb63840cdcc3e00 Mon Sep 17 00:00:00 2001 From: Alexandre Emsenhuber Date: Wed, 9 May 2012 09:54:03 +0200 Subject: [PATCH] Various fixes to Special:Mostcategories. * Show descriptive error message on invalid title * Don't check for page existence if the query is not cached, since the page must exist to be listed here * Do a LinkBatch if the query is cached, otherwise we end up with on database query per displayed row Change-Id: Ia10d0e7d69def0ee1f42727124518bc6f6335dda --- includes/specials/SpecialMostcategories.php | 32 ++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/includes/specials/SpecialMostcategories.php b/includes/specials/SpecialMostcategories.php index 98b736756d..08f3cb4894 100644 --- a/includes/specials/SpecialMostcategories.php +++ b/includes/specials/SpecialMostcategories.php @@ -52,6 +52,26 @@ class MostcategoriesPage extends QueryPage { ); } + /** + * @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 ); } } -- 2.20.1