-<?
-
-function wfSpecialDeadendpages()
-{
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = "wfSpecialDeadendpages";
-
- # Cache
- $vsp = $wgLang->getValidSpecialPages();
- $log = new LogPage( $vsp["Deadendpages"] );
- $log->mUpdateRecentChanges = false;
-
- global $wgMiserMode;
- if ( $wgMiserMode ) {
- $log->showAsDisabledPage();
- return;
+<?php
+/**
+ *
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
+
+/**
+ *
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
+class DeadendPagesPage extends PageQueryPage {
+
+ function getName( ) {
+ return "Deadendpages";
+ }
+
+ /**
+ * 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 );
+ extract( $dbr->tableNames( '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();
- # Note: title is only the same as l_from for main namespace,
- # but that's what we want, anyways
-
- # XXX: Left joins are losey
-
- $sql = "SELECT cur_title " .
- "FROM cur LEFT JOIN links ON cur_title = l_from " .
- "WHERE l_from IS NULL " .
- "AND cur_namespace = 0 " .
- "ORDER BY cur_title " .
- "LIMIT {$offset}, {$limit}";
-
- $res = wfQuery( $sql, DB_READ, $fname );
-
- $sk = $wgUser->getSkin();
-
- $top = wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit,
- $wgLang->specialPage( "Deadendpages" ) );
- $wgOut->addHTML( "<br>{$sl}\n" );
-
- $s = "<ol start=" . ( $offset + 1 ) . ">";
- while ( $obj = wfFetchObject( $res ) ) {
- $link = $sk->makeKnownLink( $obj->cur_title, "" );
- $s .= "<li>{$link}</li>\n";
- }
- wfFreeResult( $res );
- $s .= "</ol>";
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
-
- # Saving cache
- if ( $offset > 0 OR $limit < 50 ) return ; #Not suitable
- $log->replaceContent( $s );
+ $depp = new DeadendPagesPage();
+
+ return $depp->doQuery( $offset, $limit );
}
?>