[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Implements Special:Mostlinked 4 * 5 * Copyright © 2005 Ævar Arnfjörð Bjarmason, 2006 Rob Church 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 * @author Rob Church <[email protected]> 26 */ 27 28 /** 29 * A special page to show pages ordered by the number of pages linking to them. 30 * 31 * @ingroup SpecialPage 32 */ 33 class MostlinkedPage extends QueryPage { 34 function __construct( $name = 'Mostlinked' ) { 35 parent::__construct( $name ); 36 } 37 38 function isExpensive() { 39 return true; 40 } 41 42 function isSyndicated() { 43 return false; 44 } 45 46 function getQueryInfo() { 47 return array( 48 'tables' => array( 'pagelinks', 'page' ), 49 'fields' => array( 50 'namespace' => 'pl_namespace', 51 'title' => 'pl_title', 52 'value' => 'COUNT(*)', 53 'page_namespace' 54 ), 55 'options' => array( 56 'HAVING' => 'COUNT(*) > 1', 57 'GROUP BY' => array( 58 'pl_namespace', 'pl_title', 59 'page_namespace' 60 ) 61 ), 62 'join_conds' => array( 63 'page' => array( 64 'LEFT JOIN', 65 array( 66 'page_namespace = pl_namespace', 67 'page_title = pl_title' 68 ) 69 ) 70 ) 71 ); 72 } 73 74 /** 75 * Pre-fill the link cache 76 * 77 * @param DatabaseBase $db 78 * @param ResultWrapper $res 79 */ 80 function preprocessResults( $db, $res ) { 81 if ( $res->numRows() > 0 ) { 82 $linkBatch = new LinkBatch(); 83 84 foreach ( $res as $row ) { 85 $linkBatch->add( $row->namespace, $row->title ); 86 } 87 88 $res->seek( 0 ); 89 $linkBatch->execute(); 90 } 91 } 92 93 /** 94 * Make a link to "what links here" for the specified title 95 * 96 * @param Title $title Title being queried 97 * @param string $caption Text to display on the link 98 * @return string 99 */ 100 function makeWlhLink( $title, $caption ) { 101 $wlh = SpecialPage::getTitleFor( 'Whatlinkshere', $title->getPrefixedDBkey() ); 102 103 return Linker::linkKnown( $wlh, $caption ); 104 } 105 106 /** 107 * Make links to the page corresponding to the item, 108 * and the "what links here" page for it 109 * 110 * @param Skin $skin Skin to be used 111 * @param object $result Result row 112 * @return string 113 */ 114 function formatResult( $skin, $result ) { 115 $title = Title::makeTitleSafe( $result->namespace, $result->title ); 116 if ( !$title ) { 117 return Html::element( 118 'span', 119 array( 'class' => 'mw-invalidtitle' ), 120 Linker::getInvalidTitleDescription( 121 $this->getContext(), 122 $result->namespace, 123 $result->title ) 124 ); 125 } 126 127 $link = Linker::link( $title ); 128 $wlh = $this->makeWlhLink( 129 $title, 130 $this->msg( 'nlinks' )->numParams( $result->value )->escaped() 131 ); 132 133 return $this->getLanguage()->specialList( $link, $wlh ); 134 } 135 136 protected function getGroupName() { 137 return 'highuse'; 138 } 139 }
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 |