<?php
-
-# shortcut to get the current language "special" namespace name
+/**
+ *
+ * @package MediaWiki
+ * @subpackage SpecialPage
+ */
+
+/**
+ * shortcut to get the current language "special" namespace name
+ */
function sns() {
- global $wgLang ;
- $ns = $wgLang->getNamespaces() ;
+ global $wgContLang ;
+ $ns = $wgContLang->getNamespaces() ;
return $ns[NS_SPECIAL] ;
}
-# Entry point
+/**
+ * Entry point
+ */
function wfSpecialMaintenance( $par=NULL ) {
- global $wgUser, $wgOut, $wgLang, $wgTitle, $wgRequest, $wgLanguageCode;
+ global $wgUser, $wgOut, $wgContLang, $wgTitle, $wgRequest, $wgContLanguageCode;
global $wgMiserMode;
# This pages is expensive ressource wise
# Call the subfunction requested by the user
switch( $subfunction ) {
case 'disambiguations': return wfSpecialDisambiguations() ; break;
+
+ # doubleredirects & brokenredirects are old maintenance subpages.
case 'doubleredirects': return wfSpecialDoubleRedirects() ; break;
case 'brokenredirects': return wfSpecialBrokenRedirects() ; break;
+
case 'selflinks': return wfSpecialSelfLinks() ; break;
case 'mispeelings': return wfSpecialMispeelings() ; break;
case 'missinglanguagelinks': return wfSpecialMissingLanguageLinks() ; break;
if ( !is_null( $submitmll ) ) return wfSpecialMissingLanguageLinks() ;
$sk = $wgUser->getSkin();
- $ns = $wgLang->getNamespaces() ;
+ $ns = $wgContLang->getNamespaces() ;
# Generate page output
# Links to subfunctions
$r .= "<UL>\n" ;
- #$r .= "<li>".getMPL("disambiguations")."</li>\n" ; # Doesn't work
- $r .= '<li>'.getMPL("doubleredirects")."</li>\n" ;
- $r .= '<li>'.getMPL("brokenredirects")."</li>\n" ;
+ $r .= "<li>".$sk->makeKnownLink( sns().':Disambiguations', wfMsg('disambiguations')) . "</li>\n";
+ $r .= '<li>'.$sk->makeKnownLink( sns().':DoubleRedirects', wfMsg('doubleredirects')) . "</li>\n";
+ $r .= '<li>'.$sk->makeKnownLink( sns().':BrokenRedirects', wfMsg('brokenredirects')) . "</li>\n";
#$r .= "<li>".getMPL("selflinks")."</li>\n" ; # Doesn't work
$r .= '<li>'.getMPL("mispeelings")."</li>\n" ;
$r .= "\">\n" ;
$r .= "<select name=\"thelang\">\n" ;
- $a = $wgLang->getLanguageNames();
+ $a = $wgContLang->getLanguageNames();
$ak = array_keys ( $a ) ;
foreach ( $ak AS $k ) {
- if ( $k != $wgLanguageCode )
+ if ( $k != $wgContLanguageCode )
$r .= "<option value='{$k}'>{$a[$k]}</option>\n" ;
}
$r .= "</select>\n" ;
$wgOut->addHTML ( $r ) ;
}
-# Generate a maintenance page link
+/**
+ * Generate a maintenance page link
+ */
function getMPL ( $x ) {
global $wgUser , $wgLang;
$sk = $wgUser->getSkin() ;
function getMaintenancePageBacklink( $subfunction ) {
- global $wgUser , $wgLang;
+ global $wgUser , $wgContLang;
$sk = $wgUser->getSkin() ;
- $ns = $wgLang->getNamespaces() ;
+ $ns = $wgContLang->getNamespaces() ;
$r = $sk->makeKnownLink (
$ns[-1].':Maintenance',
wfMsg( 'maintenancebacklink' ) ) ;
return $s ;
}
-# Broken function
-# Suggest deprecating this in favour of a Special:Whatlinkshere with prev/next links [TS]
-function wfSpecialDisambiguations() {
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = "wfSpecialDisambiguations";
-
- list( $limit, $offset ) = wfCheckLimits();
- $dbr =& wfGetDB( DB_SLAVE );
- extract( $dbr->tableNames( 'links', 'cur' ) );
-
- $dp = $dbr->strencode( wfMsg("disambiguationspage") );
-
- die( "wfSpecialDisambiguation is broken. Link tables have changed...\n" );
-
- $sql = "SELECT la.l_from,la.l_to,"
- . " lb.l_from AS source,lb.l_to AS dest,"
- . " c.cur_id, c.cur_title AS dt"
- . " FROM $links AS la, $links AS lb, $cur AS c, $cur AS d"
- . " WHERE la.l_from='{$dp}'"
- . " AND la.l_to=lb.l_to"
- . " AND la.l_from<>lb.l_from"
- . " AND c.cur_id=lb.l_to"
- . " AND c.cur_namespace=0"
- . " AND d.cur_title=lb.l_from"
- . " AND d.cur_namespace=0"
- . " LIMIT {$offset}, {$limit}";
-
- $res = $dbr->query( $sql, $fname );
-
- $sk = $wgUser->getSkin();
-
- $top = "<p>".wfMsg( "disambiguationstext", $sk->makeKnownLink( $dp ) )."</p><br>\n";
- $top = getMaintenancePageBacklink( "disambiguations" ) . $top;
- $top .= wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit, "REPLACETHIS" ) ;
- $sl = str_replace ( "REPLACETHIS" , sns().":Maintenance&subfunction=disambiguations" , $sl ) ;
- $wgOut->addHTML( "<br>{$sl}\n" );
-
- $s = "<ol start=" . ( $offset + 1 ) . ">";
- while ( $obj = $dbr->fetchObject( $res ) ) {
- $l1 = $sk->makeKnownLink ( $obj->source , "" , "redirect=no" ) ;
- $l2 = $sk->makeKnownLink ( $obj->dt ) ;
- $l3 = $sk->makeBrokenLink ( $obj->source , "(".wfMsg("qbedit").")" , "redirect=no" ) ;
- $s .= "<li>{$l1} {$l3} => {$l2}</li>\n" ;
- }
- $dbr->freeResult( $res );
- $s .= '</ol>';
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
-}
-
+/**#@+
+ * Disambiguations, DoubleRedirects and BrokenRedirects are now using the
+ * QueryPage class. Code is in a Special*.php file.
+ *
+ * @deprecated
+ */
function wfSpecialDoubleRedirects() {
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = 'wfSpecialDoubleRedirects';
-
- list( $limit, $offset ) = wfCheckLimits();
- $dbr =& wfGetDB( DB_SLAVE );
- extract( $dbr->tableNames( 'cur', 'links' ) );
-
- $sql = "SELECT ca.cur_namespace as ns_a, ca.cur_title as title_a," .
- " cb.cur_namespace as ns_b, cb.cur_title as title_b," .
- " cb.cur_text AS rt " .
- "FROM $links,$cur AS ca,$cur AS cb ".
- "WHERE ca.cur_is_redirect=1 AND cb.cur_is_redirect=1 AND l_to=cb.cur_id " .
- " AND l_from=ca.cur_id LIMIT {$offset}, {$limit}" ;
-
- $res = $dbr->query( $sql, $fname );
-
- $top = getMaintenancePageBacklink( 'doubleredirects' );
- $top .= '<p>'.wfMsg("doubleredirectstext")."</p><br>\n";
- $top .= wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit, 'REPLACETHIS' ) ;
- $sl = str_replace ( 'REPLACETHIS' , sns().':Maintenance&subfunction=doubleredirects' , $sl ) ;
- $wgOut->addHTML( "<br>{$sl}\n" );
-
- $sk = $wgUser->getSkin();
- $s = '<ol start=' . ( $offset + 1 ) . '>';
- while ( $obj = $dbr->fetchObject( $res ) ) {
- $n = explode ( "\n" , $obj->rt ) ;
- $n = $n[0] ;
- $sourceTitle = Title::makeTitle( $obj->ns_a, $obj->title_a );
- $destTitle = Title::makeTitle( $obj->ns_b, $obj->title_b );
-
- $l1 = $sk->makeKnownLinkObj( $sourceTitle , '' , 'redirect=no' ) ;
- $l2 = $sk->makeKnownLinkObj( $destTitle , '' , 'redirect=no' ) ;
- $l3 = $sk->makeBrokenLinkObj( $sourceTitle , '('.wfMsg('qbedit').')' , 'redirect=no' ) ;
- $s .= "<li>{$l1} {$l3} => {$l2} (\"{$n}\")</li>\n" ;
- }
- $dbr->freeResult( $res );
- $s .= '</ol>';
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
+ global $wgOut;
+ $t = Title::makeTitle( NS_SPECIAL, "DoubleRedirects" );
+ $wgOut->redirect ($t->getFullURL());
}
-
function wfSpecialBrokenRedirects() {
- global $wgUser, $wgOut, $wgLang, $wgTitle;
- $fname = 'wfSpecialBrokenRedirects';
-
- list( $limit, $offset ) = wfCheckLimits();
- $dbr =& wfGetDB( DB_SLAVE );
- extract( $dbr->tableNames( 'cur', 'brokenlinks' ) );
-
-
- $sql = "SELECT bl_to,cur_title FROM $brokenlinks,$cur " .
- "WHERE cur_is_redirect=1 AND cur_namespace=0 AND bl_from=cur_id " .
- "LIMIT {$offset}, {$limit}" ;
-
- $res = $dbr->query( $sql, $fname );
-
- $top = getMaintenancePageBacklink( 'brokenredirects' );
- $top .= '<p>'.wfMsg('brokenredirectstext')."</p><br>\n";
- $top .= wfShowingResults( $offset, $limit );
- $wgOut->addHTML( "<p>{$top}\n" );
-
- $sl = wfViewPrevNext( $offset, $limit, 'REPLACETHIS' ) ;
- $sl = str_replace ( 'REPLACETHIS' , sns().":Maintenance&subfunction=brokenredirects" , $sl ) ;
- $wgOut->addHTML( "<br>{$sl}\n" );
+ global $wgOut;
+ $t = Title::makeTitle( NS_SPECIAL, "BrokenRedirects" );
+ $wgOut->redirect ($t->getFullURL());
+}
- $sk = $wgUser->getSkin();
- $s = '<ol start=' . ( $offset + 1 ) . '>';
- while ( $obj = $dbr->fetchObject( $res ) ) {
- $l1 = $sk->makeKnownLink ( $obj->cur_title , '' , 'redirect=no' ) ;
- $l2 = $sk->makeBrokenLink ( $obj->cur_title , "(".wfMsg("qbedit").")" , "redirect=no" ) ;
- $l3 = $sk->makeBrokenLink ( $obj->bl_to , '' , 'redirect=no' ) ;
- $s .= "<li>{$l1} {$l2} => {$l3}</li>\n" ;
- }
- $dbr->freeResult( $res );
- $s .= '</ol>';
- $wgOut->addHTML( $s );
- $wgOut->addHTML( "<p>{$sl}\n" );
+function wfSpecialDisambiguations() {
+ global $wgOut;
+ $t = Title::makeTitle( NS_SPECIAL, "Disambiguations" );
+ $wgOut->redirect ($t->getFullURL());
}
+/**#@-*/
-# This doesn't really work anymore, because self-links are now displayed as
-# unlinked bold text, and are not entered into the link table.
+/**
+ * This doesn't really work anymore, because self-links are now displayed as
+ * unlinked bold text, and are not entered into the link table.
+ *
+ * @deprecated
+ */
function wfSpecialSelfLinks() {
global $wgUser, $wgOut, $wgLang, $wgTitle;
$fname = 'wfSpecialSelfLinks';
$wgOut->addHTML( "<p>{$sl}\n" );
}
-
+/**
+ *
+ */
function wfSpecialMispeelings () {
- global $wgUser, $wgOut, $wgLang, $wgTitle;
+ global $wgUser, $wgOut, $wgContLang, $wgTitle;
$sk = $wgUser->getSkin();
$fname = 'wfSpecialMispeelings';
# Determine page name
$ms = wfMsg ( 'mispeelingspage' ) ;
$mss = str_replace ( ' ' , '_' , $ms );
- $msp = $wgLang->getNsText(4).':'.$ms ;
+ $msp = $wgContLang->getNsText(4).':'.$ms ;
$msl = $sk->makeKnownLink ( $msp ) ;
# Load list from database
$x = preg_replace( '/^(\S+).*$/', '$1', $x );
$sql = "SELECT DISTINCT cur_title FROM $cur,$searchindex WHERE cur_id=si_page AND ".
"cur_namespace=0 AND cur_is_redirect=0 AND " .
- "(MATCH(si_text) AGAINST ('" . $dbr->strencode( $wgLang->stripForSearch( $x ) ) . "'))" ;
+ "(MATCH(si_text) AGAINST ('" . $dbr->strencode( $wgContLang->stripForSearch( $x ) ) . "'))" ;
$res = $dbr->query( $sql, $fname );
while ( $obj = $dbr->fetchObject ( $res ) ) {
if ( $cnt >= $offset AND $cnt < $offset+$limit ) {
$wgOut->addHTML( "<p>{$sl}\n" );
}
-
+/**
+ *
+ */
function wfSpecialMissingLanguageLinks() {
- global $wgUser, $wgOut, $wgLang, $wgTitle, $wgRequest;
+ global $wgUser, $wgOut, $wgContLang, $wgTitle, $wgRequest;
$fname = 'wfSpecialMissingLanguageLinks';
$thelang = $wgRequest->getText( 'thelang' );
$sql = "SELECT cur_title FROM $cur " .
"WHERE cur_namespace=0 AND cur_is_redirect=0 " .
- "AND cur_title NOT LIKE '%/%' AND cur_text NOT LIKE '%[[{$thelang}:%' " .
+ "AND cur_title NOT LIKE '%/%' AND cur_text NOT LIKE '%[[" . wfStrencode( $thelang ) . ":%' " .
"LIMIT {$offset}, {$limit}";
$res = $dbr->query( $sql, $fname );
- $mll = wfMsg( 'missinglanguagelinkstext', $wgLang->getLanguageName($thelang) );
+ $mll = wfMsg( 'missinglanguagelinkstext', $wgContLang->getLanguageName($thelang) );
$top = getMaintenancePageBacklink( 'missinglanguagelinks' );
$top .= "<p>$mll</p><br>";
$wgOut->addHTML( "<p>{$top}\n" );
$sl = wfViewPrevNext( $offset, $limit, 'REPLACETHIS' ) ;
- $sl = str_replace ( 'REPLACETHIS' , sns().":Maintenance&subfunction=missinglanguagelinks&thelang={$thelang}" , $sl ) ;
+ $sl = str_replace ( 'REPLACETHIS' , sns().":Maintenance&subfunction=missinglanguagelinks&thelang=".
+ htmlspecialchars($thelang), $sl ) ;
$wgOut->addHTML( "<br>{$sl}\n" );
$sk = $wgUser->getSkin();