Do not include file redirects in Special:Wantedfiles
authorBrian Wolff <bawolff+wn@gmail.com>
Thu, 3 Jul 2014 02:34:00 +0000 (23:34 -0300)
committerBrian Wolff <bawolff+wn@gmail.com>
Thu, 3 Jul 2014 03:59:12 +0000 (00:59 -0300)
If you look at [[Special:WantedFiles]] on commons, its full
of file redirects, making the page kind of useless. This makes
the query much more complex, but at least the page will be useful.

The page will still be useless on non-commons projects due to
foreign files being listed as missing.

Change-Id: I115fdaa3b67bee81ba0a715ebb427bb35cf0f67e

includes/specials/SpecialWantedfiles.php

index fa68504..7d439fa 100644 (file)
@@ -74,17 +74,39 @@ class WantedFilesPage extends WantedQueryPage {
 
        function getQueryInfo() {
                return array(
-                       'tables' => array( 'imagelinks', 'image' ),
+                       'tables' => array(
+                               'imagelinks',
+                               'page',
+                               'redirect',
+                               'img1' => 'image',
+                               'img2' => 'image',
+                       ),
                        'fields' => array(
                                'namespace' => NS_FILE,
                                'title' => 'il_to',
                                'value' => 'COUNT(*)'
                        ),
-                       'conds' => array( 'img_name IS NULL' ),
+                       'conds' => array(
+                               'img1.img_name' => null,
+                               // We also need to exclude file redirects
+                               'img2.img_name' => null,
+                        ),
                        'options' => array( 'GROUP BY' => 'il_to' ),
-                       'join_conds' => array( 'image' =>
-                               array( 'LEFT JOIN',
-                                       array( 'il_to = img_name' )
+                       'join_conds' => array(
+                               'img1' => array( 'LEFT JOIN',
+                                       'il_to = img1.img_name'
+                               ),
+                               'page' => array( 'LEFT JOIN', array(
+                                       'il_to = page_title',
+                                       'page_namespace' => NS_FILE,
+                               ) ),
+                               'redirect' => array( 'LEFT JOIN', array(
+                                       'page_id = rd_from',
+                                       'rd_namespace' => NS_FILE,
+                                       'rd_interwiki' => ''
+                               ) ),
+                               'img2' => array( 'LEFT JOIN',
+                                       'rd_title = img2.img_name'
                                )
                        )
                );