]> scripts.mit.edu Git - autoinstallsdev/mediawiki.git/blob - includes/specials/SpecialUnusedimages.php
MediaWiki 1.30.2
[autoinstallsdev/mediawiki.git] / includes / specials / SpecialUnusedimages.php
1 <?php
2 /**
3  * Implements Special:Unusedimages
4  *
5  * This program is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  *
10  * This program is distributed in the hope that it will be useful,
11  * but WITHOUT ANY WARRANTY; without even the implied warranty of
12  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13  * GNU General Public License for more details.
14  *
15  * You should have received a copy of the GNU General Public License along
16  * with this program; if not, write to the Free Software Foundation, Inc.,
17  * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18  * http://www.gnu.org/copyleft/gpl.html
19  *
20  * @file
21  * @ingroup SpecialPage
22  */
23
24 /**
25  * A special page that lists unused images
26  *
27  * @ingroup SpecialPage
28  */
29 class UnusedimagesPage extends ImageQueryPage {
30         function __construct( $name = 'Unusedimages' ) {
31                 parent::__construct( $name );
32         }
33
34         function isExpensive() {
35                 return true;
36         }
37
38         function sortDescending() {
39                 return false;
40         }
41
42         function isSyndicated() {
43                 return false;
44         }
45
46         function getQueryInfo() {
47                 $retval = [
48                         'tables' => [ 'image', 'imagelinks' ],
49                         'fields' => [
50                                 'namespace' => NS_FILE,
51                                 'title' => 'img_name',
52                                 'value' => 'img_timestamp',
53                         ],
54                         'conds' => [ 'il_to IS NULL' ],
55                         'join_conds' => [ 'imagelinks' => [ 'LEFT JOIN', 'il_to = img_name' ] ]
56                 ];
57
58                 if ( $this->getConfig()->get( 'CountCategorizedImagesAsUsed' ) ) {
59                         // Order is significant
60                         $retval['tables'] = [ 'image', 'page', 'categorylinks',
61                                 'imagelinks' ];
62                         $retval['conds']['page_namespace'] = NS_FILE;
63                         $retval['conds'][] = 'cl_from IS NULL';
64                         $retval['conds'][] = 'img_name = page_title';
65                         $retval['join_conds']['categorylinks'] = [
66                                 'LEFT JOIN', 'cl_from = page_id' ];
67                         $retval['join_conds']['imagelinks'] = [
68                                 'LEFT JOIN', 'il_to = page_title' ];
69                 }
70
71                 return $retval;
72         }
73
74         function usesTimestamps() {
75                 return true;
76         }
77
78         function getPageHeader() {
79                 return $this->msg( 'unusedimagestext' )->parseAsBlock();
80         }
81
82         protected function getGroupName() {
83                 return 'maintenance';
84         }
85 }