* (bug 1996) Special page to list redirects
authorRob Church <robchurch@users.mediawiki.org>
Mon, 2 Jan 2006 13:03:14 +0000 (13:03 +0000)
committerRob Church <robchurch@users.mediawiki.org>
Mon, 2 Jan 2006 13:03:14 +0000 (13:03 +0000)
RELEASE-NOTES
includes/SpecialListredirects.php [new file with mode: 0644]
includes/SpecialPage.php
languages/Language.php

index d900df7..c000fa9 100644 (file)
@@ -390,6 +390,7 @@ fully support the editing toolbar, but was found to be too confusing.
 * (bug 4413) Update of Farsi language file (LanguageFa.php)
 * Update for LanguageSr (Serbian): magic words
 * (bug 4371) Disallow tilde character in signatures
+* (bug 1996) Special page to list redirects
 
 === Caveats ===
 
diff --git a/includes/SpecialListredirects.php b/includes/SpecialListredirects.php
new file mode 100644 (file)
index 0000000..acd1a6d
--- /dev/null
@@ -0,0 +1,61 @@
+<?php
+/**
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ *
+ * @author Rob Church <robchur@gmail.com>
+ * @copyright © 2006 Rob Church
+ * @license http://www.gnu.org/copyleft/gpl.html GNU General Public License 2.0 or later
+ */
+
+/* */
+require_once 'QueryPage.php';
+
+/**
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
+
+class ListredirectsPage extends QueryPage {
+
+       function getName() { return( 'listredirects' ); }
+       function isExpensive() { return( true ); }
+       function isSyndicated() { return( false ); }
+       function sortDescending() { return( false ); }
+       
+       function getSQL() {
+               $dbr =& wfGetDB( DB_SLAVE );
+               extract( $dbr->tableNames( 'page' ) );
+               return( 'SELECT page_title AS title, page_namespace AS namespace, page_namespace AS value FROM ' . $page . ' WHERE page_is_redirect = 1' );
+       }
+       
+       function formatResult( $skin, $result ) {
+               global $wgContLang;
+               
+               # Make a link to the redirect itself
+               $rd_title = Title::makeTitle( $result->namespace, $result->title );
+               $rd_link_text = htmlspecialchars( $wgContLang->convert( $rd_title->getPrefixedText() ) );
+               $rd_link = $skin->makeKnownLink( $rd_title->getPrefixedText(), $rd_link_text, 'redirect=no' );
+               
+               # Find out where the redirect leads
+               $rd_page = new Article( &$rd_title, 0 );
+               $rd_text = $rd_page->getContent( true ); # Don't follow the redirect
+               
+               # Make a link to the destination page
+               $tp_title = Title::newFromRedirect( $rd_text );
+               $tp_link_text = htmlspecialchars( $tp_title->getPrefixedText() );
+               $tp_link = $skin->makeKnownLink( $tp_title->getPrefixedText(), $tp_link_text );
+               
+               # Format the whole thing and return it
+               return( $rd_link . ' &rarr; ' . $tp_link );
+       }
+
+}
+
+function wfSpecialListredirects() {
+       list( $limit, $offset ) = wfCheckLimits();
+       $lrp = new ListredirectsPage();
+       $lrp->doQuery( $offset, $limit );
+}
+
+?>
\ No newline at end of file
index 54e410e..ce8cb4d 100644 (file)
@@ -76,7 +76,8 @@ $wgSpecialPages = array(
        'Unlockdb'              => new SpecialPage( 'Unlockdb', 'siteadmin' ),
        'Userrights'    => new SpecialPage( 'Userrights', 'userrights' ),
        'MIMEsearch'    => new SpecialPage( 'MIMEsearch' ),
-       'Unwatchedpages' => new SpecialPage( 'Unwatchedpages', 'unwatchedpages' )
+       'Unwatchedpages' => new SpecialPage( 'Unwatchedpages', 'unwatchedpages' ),
+       'Listredirects' => new SpecialPage( 'Listredirects' )
 );
 
 if( !$wgDisableCounters ) {
index 28e1801..cd94402 100644 (file)
@@ -1109,6 +1109,9 @@ this old version, (rev) = revert to this old version.
 #
 'unwatchedpages' => 'Unwatched pages',
 
+# List redirects
+'listredirects' => 'List redirects',
+
 # Statistics
 #
 'statistics'   => 'Statistics',