[ Index ]

PHP Cross Reference of MediaWiki-1.24.0

title

Body

[close]

/includes/specials/ -> SpecialWantedfiles.php (source)

   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  }


Generated: Fri Nov 28 14:03:12 2014 Cross-referenced by PHPXref 0.7.1