| [ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Implements Special:Mostcategories 4 * 5 * Copyright © 2005 Ævar Arnfjörð Bjarmason 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 Ævar Arnfjörð Bjarmason <[email protected]> 25 */ 26 27 /** 28 * A special page that list pages that have highest category count 29 * 30 * @ingroup SpecialPage 31 */ 32 class MostcategoriesPage extends QueryPage { 33 function __construct( $name = 'Mostcategories' ) { 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( 'categorylinks', 'page' ), 48 'fields' => array( 49 'namespace' => 'page_namespace', 50 'title' => 'page_title', 51 'value' => 'COUNT(*)' 52 ), 53 'conds' => array( 'page_namespace' => MWNamespace::getContentNamespaces() ), 54 'options' => array( 55 'HAVING' => 'COUNT(*) > 1', 56 'GROUP BY' => array( 'page_namespace', 'page_title' ) 57 ), 58 'join_conds' => array( 59 'page' => array( 60 'LEFT JOIN', 61 'page_id = cl_from' 62 ) 63 ) 64 ); 65 } 66 67 /** 68 * @param DatabaseBase $db 69 * @param ResultWrapper $res 70 */ 71 function preprocessResults( $db, $res ) { 72 # There's no point doing a batch check if we aren't caching results; 73 # the page must exist for it to have been pulled out of the table 74 if ( !$this->isCached() || !$res->numRows() ) { 75 return; 76 } 77 78 $batch = new LinkBatch(); 79 foreach ( $res as $row ) { 80 $batch->add( $row->namespace, $row->title ); 81 } 82 $batch->execute(); 83 84 $res->seek( 0 ); 85 } 86 87 /** 88 * @param Skin $skin 89 * @param object $result Result row 90 * @return string 91 */ 92 function formatResult( $skin, $result ) { 93 $title = Title::makeTitleSafe( $result->namespace, $result->title ); 94 if ( !$title ) { 95 return Html::element( 96 'span', 97 array( 'class' => 'mw-invalidtitle' ), 98 Linker::getInvalidTitleDescription( 99 $this->getContext(), 100 $result->namespace, 101 $result->title 102 ) 103 ); 104 } 105 106 if ( $this->isCached() ) { 107 $link = Linker::link( $title ); 108 } else { 109 $link = Linker::linkKnown( $title ); 110 } 111 112 $count = $this->msg( 'ncategories' )->numParams( $result->value )->escaped(); 113 114 return $this->getLanguage()->specialList( $link, $count ); 115 } 116 117 protected function getGroupName() { 118 return 'highuse'; 119 } 120 }
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 |