[ Index ] |
PHP Cross Reference of MediaWiki-1.24.0 |
[Summary view] [Print] [Text view]
1 <?php 2 /** 3 * Implements Special:Wantedfiles 4 * 5 * Copyright © 2008 Soxred93 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 Soxred93 <[email protected]> 25 */ 26 27 /** 28 * Querypage that lists the most wanted files 29 * 30 * @ingroup SpecialPage 31 */ 32 class WantedFilesPage extends WantedQueryPage { 33 34 function __construct( $name = 'Wantedfiles' ) { 35 parent::__construct( $name ); 36 } 37 38 function getPageHeader() { 39 # Specifically setting to use "Wanted Files" (NS_MAIN) as title, so as to get what 40 # category would be used on main namespace pages, for those tricky wikipedia 41 # admins who like to do {{#ifeq:{{NAMESPACE}}|foo|bar|....}}. 42 $catMessage = $this->msg( 'broken-file-category' ) 43 ->title( Title::newFromText( "Wanted Files", NS_MAIN ) ) 44 ->inContentLanguage(); 45 46 if ( !$catMessage->isDisabled() ) { 47 $category = Title::makeTitleSafe( NS_CATEGORY, $catMessage->text() ); 48 } else { 49 $category = false; 50 } 51 52 $noForeign = ''; 53 if ( !$this->likelyToHaveFalsePositives() ) { 54 // Additional messages for grep: 55 // wantedfiletext-cat-noforeign, wantedfiletext-nocat 56 $noForeign = '-noforeign'; 57 } 58 59 if ( $category ) { 60 return $this 61 ->msg( 'wantedfiletext-cat' . $noForeign ) 62 ->params( $category->getFullText() ) 63 ->parseAsBlock(); 64 } else { 65 return $this 66 ->msg( 'wantedfiletext-nocat' . $noForeign ) 67 ->parseAsBlock(); 68 } 69 } 70 71 /** 72 * Whether foreign repos are likely to cause false positives 73 * 74 * In its own function to allow subclasses to override. 75 * @see SpecialWantedFilesGUOverride in GlobalUsage extension. 76 * @since 1.24 77 */ 78 protected function likelyToHaveFalsePositives() { 79 return RepoGroup::singleton()->hasForeignRepos(); 80 } 81 82 /** 83 * KLUGE: The results may contain false positives for files 84 * that exist e.g. in a shared repo. Setting this at least 85 * keeps them from showing up as redlinks in the output, even 86 * if it doesn't fix the real problem (bug 6220). 87 * 88 * @note could also have existing links here from broken file 89 * redirects. 90 * @return bool 91 */ 92 function forceExistenceCheck() { 93 return true; 94 } 95 96 /** 97 * Does the file exist? 98 * 99 * Use wfFindFile so we still think file namespace pages without 100 * files are missing, but valid file redirects and foreign files are ok. 101 * 102 * @return boolean 103 */ 104 protected function existenceCheck( Title $title ) { 105 return (bool) wfFindFile( $title ); 106 } 107 108 function getQueryInfo() { 109 return array( 110 'tables' => array( 111 'imagelinks', 112 'page', 113 'redirect', 114 'img1' => 'image', 115 'img2' => 'image', 116 ), 117 'fields' => array( 118 'namespace' => NS_FILE, 119 'title' => 'il_to', 120 'value' => 'COUNT(*)' 121 ), 122 'conds' => array( 123 'img1.img_name' => null, 124 // We also need to exclude file redirects 125 'img2.img_name' => null, 126 ), 127 'options' => array( 'GROUP BY' => 'il_to' ), 128 'join_conds' => array( 129 'img1' => array( 'LEFT JOIN', 130 'il_to = img1.img_name' 131 ), 132 'page' => array( 'LEFT JOIN', array( 133 'il_to = page_title', 134 'page_namespace' => NS_FILE, 135 ) ), 136 'redirect' => array( 'LEFT JOIN', array( 137 'page_id = rd_from', 138 'rd_namespace' => NS_FILE, 139 'rd_interwiki' => '' 140 ) ), 141 'img2' => array( 'LEFT JOIN', 142 'rd_title = img2.img_name' 143 ) 144 ) 145 ); 146 } 147 148 protected function getGroupName() { 149 return 'maintenance'; 150 } 151 }
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 |