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/SpecialMostinterwikis.php | 112 ++++++++++++++++++++++++++++ 1 file changed, 112 insertions(+) create mode 100644 includes/specials/SpecialMostinterwikis.php (limited to 'includes/specials/SpecialMostinterwikis.php') diff --git a/includes/specials/SpecialMostinterwikis.php b/includes/specials/SpecialMostinterwikis.php new file mode 100644 index 00000000..894d697b --- /dev/null +++ b/includes/specials/SpecialMostinterwikis.php @@ -0,0 +1,112 @@ + array ( + 'langlinks', + 'page' + ), 'fields' => array ( + 'namespace' => 'page_namespace', + 'title' => 'page_title', + 'value' => 'COUNT(*)' + ), 'conds' => array ( + 'page_namespace' => MWNamespace::getContentNamespaces() + ), 'options' => array ( + 'HAVING' => 'COUNT(*) > 1', + 'GROUP BY' => array ( + 'page_namespace', + 'page_title' + ) + ), 'join_conds' => array ( + 'page' => array ( + 'LEFT JOIN', + 'page_id = ll_from' + ) + ) + ); + } + + /** + * Pre-fill the link cache + * + * @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(); + + // Back to start for display + $res->seek( 0 ); + } + + /** + * @param $skin Skin + * @param $result + * @return string + */ + 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( 'ninterwikis' )->numParams( $result->value )->escaped(); + + return $this->getLanguage()->specialList( $link, $count ); + } +} -- cgit v1.2.2