diff options
author | Tim Starling <tstarling@users.mediawiki.org> | 2005-05-28 11:49:40 +0000 |
---|---|---|
committer | Tim Starling <tstarling@users.mediawiki.org> | 2005-05-28 11:49:40 +0000 |
commit | 225a20c35ac26b2a906490cf300441b011dfd485 (patch) | |
tree | 83bb00f386ccd7cc9dcc3050d0b14699cb361fd0 /includes/SpecialPage.php | |
parent | 842fef7c4dc3c07ea3a1a4499d41ea27b901c152 (diff) | |
download | mediawikicore-225a20c35ac26b2a906490cf300441b011dfd485.tar.gz mediawikicore-225a20c35ac26b2a906490cf300441b011dfd485.zip |
Unconditional inclusion for SpecialPage.php, needed for {{special:whatever}}. Fixed getRedirect() to work with this inclusion order.
Notes
Notes:
http://mediawiki.org/wiki/Special:Code/MediaWiki/9223
Diffstat (limited to 'includes/SpecialPage.php')
-rw-r--r-- | includes/SpecialPage.php | 64 |
1 files changed, 29 insertions, 35 deletions
diff --git a/includes/SpecialPage.php b/includes/SpecialPage.php index abfbcb9eae49..301b9ddcad08 100644 --- a/includes/SpecialPage.php +++ b/includes/SpecialPage.php @@ -19,7 +19,7 @@ /** * */ -global $wgSpecialPages, $wgSpecialPageRedirects, $wgUser; +global $wgSpecialPages, $wgUser; /** * @access private @@ -75,24 +75,6 @@ $wgSpecialPages = array( 'Groups' => new SpecialPage( 'Groups' ), ); -/** - * Redirect Special:$key to somewhere else. - * - * @access private - */ -$wgSpecialPageRedirects = array( - # My* - 'Mypage' => Title::makeTitle( NS_USER, $wgUser->getName() ), - 'Mytalk' => Title::makeTitle( NS_USER_TALK, $wgUser->getName() ), - 'Mycontributions' => Title::makeTitle( NS_SPECIAL, 'Contributions/' . $wgUser->getName() ), - - # Deprecated specialpages - 'Listadmins' => Title::makeTitle( NS_SPECIAL, 'Listusers' ), - - # Redirects - 'Randompage' => Title::makeTitle( NS_SPECIAL, 'Random' ), -); - global $wgUseValidation ; if ( $wgUseValidation ) $wgSpecialPages['Validate'] = new SpecialPage( 'Validate' ); @@ -198,11 +180,19 @@ class SpecialPage * @return mixed Title object if the redirect exists, otherwise NULL */ function &getRedirect( $name ) { - global $wgSpecialPageRedirects; - if ( array_key_exists( $name, $wgSpecialPageRedirects ) ) { - return $wgSpecialPageRedirects[$name]; - } else { - return NULL; + switch ( $name ) { + case 'Mypage': + return Title::makeTitle( NS_USER, $wgUser->getName() ); + case 'Mytalk': + return Title::makeTitle( NS_USER_TALK, $wgUser->getName() ); + case 'Mycontributions': + return Title::makeTitle( NS_SPECIAL, 'Contributions/' . $wgUser->getName() ); + case 'Listadmins': + return Title::makeTitle( NS_SPECIAL, 'Listusers' ); + case 'Randompage': + return Title::makeTitle( NS_SPECIAL, 'Random' ); + default: + return NULL; } } @@ -251,18 +241,22 @@ class SpecialPage $page =& SpecialPage::getPage( $name ); if ( is_null( $page ) ) { - $redir =& SpecialPage::getRedirect( $name ); - if ( isset( $redir ) ) { - if ( isset( $par ) ) - $wgOut->redirect( $redir->getFullURL() . '/' . $par ); - else - $wgOut->redirect( $redir->getFullURL() ); - $retVal = $redir; + if ( $including ) { + return false; } else { - $wgOut->setArticleRelated( false ); - $wgOut->setRobotpolicy( "noindex,follow" ); - $wgOut->errorpage( "nosuchspecialpage", "nospecialpagetext" ); - $retVal = false; + $redir =& SpecialPage::getRedirect( $name ); + if ( isset( $redir ) ) { + if ( isset( $par ) ) + $wgOut->redirect( $redir->getFullURL() . '/' . $par ); + else + $wgOut->redirect( $redir->getFullURL() ); + $retVal = $redir; + } else { + $wgOut->setArticleRelated( false ); + $wgOut->setRobotpolicy( "noindex,follow" ); + $wgOut->errorpage( "nosuchspecialpage", "nospecialpagetext" ); + $retVal = false; + } } } else { if ( $including && !$page->includable() ) { |