diff options
Diffstat (limited to 'includes/specials/SpecialDeadendpages.php')
-rw-r--r-- | includes/specials/SpecialDeadendpages.php | 62 |
1 files changed, 62 insertions, 0 deletions
diff --git a/includes/specials/SpecialDeadendpages.php b/includes/specials/SpecialDeadendpages.php new file mode 100644 index 00000000..a8416c97 --- /dev/null +++ b/includes/specials/SpecialDeadendpages.php @@ -0,0 +1,62 @@ +<?php +/** + * @file + * @ingroup SpecialPage + */ + +/** + * @ingroup SpecialPage + */ +class DeadendPagesPage extends PageQueryPage { + + function getName( ) { + return "Deadendpages"; + } + + function getPageHeader() { + return wfMsgExt( 'deadendpagestext', array( 'parse' ) ); + } + + /** + * LEFT JOIN is expensive + * + * @return true + */ + function isExpensive( ) { + return 1; + } + + function isSyndicated() { return false; } + + /** + * @return false + */ + function sortDescending() { + return false; + } + + /** + * @return string an sqlquery + */ + function getSQL() { + $dbr = wfGetDB( DB_SLAVE ); + list( $page, $pagelinks ) = $dbr->tableNamesN( 'page', 'pagelinks' ); + return "SELECT 'Deadendpages' as type, page_namespace AS namespace, page_title as title, page_title AS value " . + "FROM $page LEFT JOIN $pagelinks ON page_id = pl_from " . + "WHERE pl_from IS NULL " . + "AND page_namespace = 0 " . + "AND page_is_redirect = 0"; + } +} + +/** + * Constructor + */ +function wfSpecialDeadendpages() { + + list( $limit, $offset ) = wfCheckLimits(); + + $depp = new DeadendPagesPage(); + + return $depp->doQuery( $offset, $limit ); +} |