[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Implements Special:Mostinterwikis 4 * 5 * Copyright © 2012 Umherirrender 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the GNU General Public License as published by 9 * the Free Software Foundation; either version 2 of the License, or 10 * (at your option) any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * GNU General Public License for more details. 16 * 17 * You should have received a copy of the GNU General Public License along 18 * with this program; if not, write to the Free Software Foundation, Inc., 19 * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. 20 * http://www.gnu.org/copyleft/gpl.html 21 * 22 * @file 23 * @ingroup SpecialPage 24 * @author Umherirrender 25 */ 26 27 /** 28 * A special page that listed pages that have highest interwiki count 29 * 30 * @ingroup SpecialPage 31 */ 32 class MostinterwikisPage extends QueryPage { 33 function __construct( $name = 'Mostinterwikis' ) { 34 parent::__construct( $name ); 35 } 36 37 function isExpensive() { 38 return true; 39 } 40 41 function isSyndicated() { 42 return false; 43 } 44 45 function getQueryInfo() { 46 return array( 47 'tables' => array( 48 'langlinks', 49 'page' 50 ), 'fields' => array( 51 'namespace' => 'page_namespace', 52 'title' => 'page_title', 53 'value' => 'COUNT(*)' 54 ), 'conds' => array( 55 'page_namespace' => MWNamespace::getContentNamespaces() 56 ), 'options' => array( 57 'HAVING' => 'COUNT(*) > 1', 58 'GROUP BY' => array( 59 'page_namespace', 60 'page_title' 61 ) 62 ), 'join_conds' => array( 63 'page' => array( 64 'LEFT JOIN', 65 'page_id = ll_from' 66 ) 67 ) 68 ); 69 } 70 71 /** 72 * Pre-fill the link cache 73 * 74 * @param DatabaseBase $db 75 * @param ResultWrapper $res 76 */ 77 function preprocessResults( $db, $res ) { 78 # There's no point doing a batch check if we aren't caching results; 79 # the page must exist for it to have been pulled out of the table 80 if ( !$this->isCached() || !$res->numRows() ) { 81 return; 82 } 83 84 $batch = new LinkBatch; 85 foreach ( $res as $row ) { 86 $batch->add( $row->namespace, $row->title ); 87 } 88 $batch->execute(); 89 90 // Back to start for display 91 $res->seek( 0 ); 92 } 93 94 /** 95 * @param Skin $skin 96 * @param object $result 97 * @return string 98 */ 99 function formatResult( $skin, $result ) { 100 $title = Title::makeTitleSafe( $result->namespace, $result->title ); 101 if ( !$title ) { 102 return Html::element( 103 'span', 104 array( 'class' => 'mw-invalidtitle' ), 105 Linker::getInvalidTitleDescription( 106 $this->getContext(), 107 $result->namespace, 108 $result->title 109 ) 110 ); 111 } 112 113 if ( $this->isCached() ) { 114 $link = Linker::link( $title ); 115 } else { 116 $link = Linker::linkKnown( $title ); 117 } 118 119 $count = $this->msg( 'ninterwikis' )->numParams( $result->value )->escaped(); 120 121 return $this->getLanguage()->specialList( $link, $count ); 122 } 123 124 protected function getGroupName() { 125 return 'highuse'; 126 } 127 }
title
Description
Body
title
Description
Body
title
Description
Body
title
Body
Generated: Fri Nov 28 14:03:12 2014 | Cross-referenced by PHPXref 0.7.1 |