X-Git-Url: https://git.heureux-cyclage.org/?a=blobdiff_plain;f=includes%2Fspecials%2FSpecialMostcategories.php;h=6de484086b9001d42d2234308d2f2c978651ebd2;hb=3c3b564ec2a8391bfacdc049aa95ee998bc8951a;hp=f75b5212b0c6e4a672a0a2f554173771d4a616a3;hpb=4148b2512b02eb8d4dd8f5427ce082fb4b0194d2;p=lhc%2Fweb%2Fwiklou.git diff --git a/includes/specials/SpecialMostcategories.php b/includes/specials/SpecialMostcategories.php index f75b5212b0..6de484086b 100644 --- a/includes/specials/SpecialMostcategories.php +++ b/includes/specials/SpecialMostcategories.php @@ -46,12 +46,32 @@ class MostcategoriesPage extends QueryPage { 'COUNT(*) AS value' ), '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->getLang()->specialList( $link, $count ); + + return $this->getLanguage()->specialList( $link, $count ); } }