Allow WantedQueryPage subclasses to override the existence check
authorBrian Wolff <bawolff+wn@gmail.com>
Sat, 19 Jul 2014 14:51:26 +0000 (11:51 -0300)
committerBrian Wolff <bawolff+wn@gmail.com>
Sun, 14 Sep 2014 22:14:52 +0000 (19:14 -0300)
Some pages are still "wanted" even if the page exists. For
example, consider a page in the file namespace that exists but
doesn't have a corresponding file, in the context of
special:wantedfiles.

Change-Id: Ie40f2baea22b3564e7f06c4fa21bc1efdc0e4d54

includes/specialpage/WantedQueryPage.php

index 678c803..be2f1e8 100644 (file)
@@ -78,15 +78,9 @@ abstract class WantedQueryPage extends QueryPage {
                $title = Title::makeTitleSafe( $result->namespace, $result->title );
                if ( $title instanceof Title ) {
                        if ( $this->isCached() || $this->forceExistenceCheck() ) {
-                               $pageLink = $title->isKnown()
+                               $pageLink = $this->existenceCheck( $title )
                                        ? '<del>' . Linker::link( $title ) . '</del>'
-                                       : Linker::link(
-                                               $title,
-                                               null,
-                                               array(),
-                                               array(),
-                                               array( 'broken' )
-                                       );
+                                       : Linker::link( $title );
                        } else {
                                $pageLink = Linker::link(
                                        $title,
@@ -102,6 +96,25 @@ abstract class WantedQueryPage extends QueryPage {
                }
        }
 
+       /**
+        * Does the Title currently exists
+        *
+        * This method allows a subclass to override this check
+        * (For example, wantedfiles, would want to check if the file exists
+        * not just that a page in the file namespace exists).
+        *
+        * This will only control if the link is crossed out. Whether or not the link
+        * is blue vs red is controlled by if the title exists.
+        *
+        * @note This will only be run if the page is cached (ie $wgMiserMode = true)
+        *   unless forceExistenceCheck() is true.
+        * @since 1.24
+        * @return boolean
+        */
+       protected function existenceCheck( Title $title ) {
+               return $title->isKnown();
+       }
+
        /**
         * Make a "what links here" link for a given title
         *