5 * @subpackage SpecialPage
11 require_once('QueryPage.php');
16 * @subpackage SpecialPage
18 class BrokenRedirectsPage
extends PageQueryPage
{
19 var $targets = array();
22 return 'BrokenRedirects';
25 function isExpensive( ) { return true; }
26 function isSyndicated() { return false; }
28 function getPageHeader( ) {
29 return '<p>'.wfMsg('brokenredirectstext')."</p><br />\n";
33 $dbr =& wfGetDB( DB_SLAVE
);
34 extract( $dbr->tableNames( 'page', 'brokenlinks' ) );
36 $sql = "SELECT 'BrokenRedirects' as type, page_namespace as namespace," .
37 "page_title as title, bl_to FROM $brokenlinks,$page " .
38 'WHERE page_is_redirect=1 AND bl_from=page_id ';
46 function formatResult( $skin, $result ) {
47 $fromObj = Title
::makeTitle( $result->namespace, $result->title
);
48 if ( isset( $result->bl_to
) ) {
49 $toObj = Title
::newFromText( $result->bl_to
);
51 $blinks = $fromObj->getBrokenLinksFrom();
59 // $toObj may very easily be false if the $result list is cached
60 if ( !is_object( $toObj ) ||
!is_object( $fromObj ) ) {
64 $from = $skin->makeKnownLinkObj( $fromObj ,'', 'redirect=no' );
65 $edit = $skin->makeBrokenLinkObj( $fromObj , "(".wfMsg("qbedit").")" , 'redirect=no');
66 $to = $skin->makeBrokenLinkObj( $toObj );
68 return "$from $edit => $to";
75 function wfSpecialBrokenRedirects() {
76 list( $limit, $offset ) = wfCheckLimits();
78 $sbr = new BrokenRedirectsPage();
80 return $sbr->doQuery( $offset, $limit );