Lot of double to single quotes
[lhc/web/wiklou.git] / includes / SpecialBrokenRedirects.php
index a7514ba..4101120 100644 (file)
@@ -16,40 +16,64 @@ require_once('QueryPage.php');
  * @subpackage SpecialPage
  */
 class BrokenRedirectsPage extends PageQueryPage {
+       var $targets = array();
 
        function getName() {
-               return 'brokenredirects';
+               return 'BrokenRedirects';
        }
        
        function isExpensive( ) { return true; }
+       function isSyndicated() { return false; }
 
        function getPageHeader( ) {
-               #FIXME : probably need to add a backlink to the maintenance page.
-               return '<p>'.wfMsg('brokenredirectstext')."</p><br>\n";
+               return '<p>'.wfMsg('brokenredirectstext')."</p><br />\n";
        }
 
        function getSQL() {
                $dbr =& wfGetDB( DB_SLAVE );
-               extract( $dbr->tableNames( 'cur', 'brokenlinks' ) );
+               extract( $dbr->tableNames( 'page', 'pagelinks' ) );
 
-               $sql = "SELECT bl_to,cur_title FROM $brokenlinks,$cur " .
-                      "WHERE cur_is_redirect=1 AND cur_namespace=0 AND bl_from=cur_id ";
+               $sql = "SELECT 'BrokenRedirects'  AS type,
+                               p1.page_namespace AS namespace,
+                               p1.page_title     AS title,
+                               pl_namespace,
+                               pl_title
+                          FROM $pagelinks, $page AS p1
+                     LEFT JOIN $page AS p2
+                            ON pl_namespace=p2.page_namespace AND pl_title=p2.page_title
+                         WHERE p1.page_is_redirect=1
+                           AND pl_from=p1.page_id
+                           AND p2.page_namespace IS NULL";
                return $sql;
        }
 
        function getOrder() {
                return '';
        }
-       
+
        function formatResult( $skin, $result ) {
-               global $wgLang ;
-               
-               $ns = $wgLang->getNamespaces() ;
-               $from = $skin->makeKnownLink( $result->cur_title ,'', 'redirect=no' );
-               $edit = $skin->makeBrokenLink( $result->cur_title , "(".wfMsg("qbedit").")" , 'redirect=no');
-               $to   = $skin->makeBrokenLink( $result->bl_to );
+               $fromObj = Title::makeTitle( $result->namespace, $result->title );
+               if ( isset( $result->pl_title ) ) {
+                       $toObj = Title::makeTitle( $result->pl_namespace, $result->pl_title );
+               } else {
+                       $blinks = $fromObj->getBrokenLinksFrom();
+                       if ( $blinks ) {
+                               $toObj = $blinks[0];
+                       } else {
+                               $toObj = false;
+                       }
+               }
+
+               // $toObj may very easily be false if the $result list is cached
+               if ( !is_object( $toObj ) ) {
+                       return '<s>' . $skin->makeLinkObj( $fromObj ) . '</s>';
+               }
+
+               $from = $skin->makeKnownLinkObj( $fromObj ,'', 'redirect=no' );
+               $edit = $skin->makeBrokenLinkObj( $fromObj , "(".wfMsg("qbedit").")" , 'redirect=no');
+               $to   = $skin->makeBrokenLinkObj( $toObj );
                                
-               return "$from $edit => $to";
+               return "$from $edit &rarr; $to";
        }
 }