*/
static public $mList = array(
# Maintenance Reports
- 'BrokenRedirects' => array( 'SpecialPage', 'BrokenRedirects' ),
- 'Deadendpages' => array( 'SpecialPage', 'Deadendpages' ),
- 'DoubleRedirects' => array( 'SpecialPage', 'DoubleRedirects' ),
- 'Longpages' => array( 'SpecialPage', 'Longpages' ),
- 'Ancientpages' => array( 'SpecialPage', 'Ancientpages' ),
- 'Lonelypages' => array( 'SpecialPage', 'Lonelypages' ),
- 'Fewestrevisions' => array( 'SpecialPage', 'Fewestrevisions' ),
- 'Withoutinterwiki' => array( 'SpecialPage', 'Withoutinterwiki' ),
+ 'BrokenRedirects' => 'BrokenRedirectsPage',
+ 'Deadendpages' => 'DeadendpagesPage',
+ 'DoubleRedirects' => 'DoubleRedirectsPage',
+ 'Longpages' => 'LongpagesPage',
+ 'Ancientpages' => 'AncientpagesPage',
+ 'Lonelypages' => 'LonelypagesPage',
+ 'Fewestrevisions' => 'FewestrevisionsPage',
+ 'Withoutinterwiki' => 'WithoutinterwikiPage',
'Protectedpages' => 'SpecialProtectedpages',
'Protectedtitles' => 'SpecialProtectedtitles',
- 'Shortpages' => array( 'SpecialPage', 'Shortpages' ),
- 'Uncategorizedcategories' => array( 'SpecialPage', 'Uncategorizedcategories' ),
- 'Uncategorizedimages' => array( 'SpecialPage', 'Uncategorizedimages' ),
- 'Uncategorizedpages' => array( 'SpecialPage', 'Uncategorizedpages' ),
- 'Uncategorizedtemplates' => array( 'SpecialPage', 'Uncategorizedtemplates' ),
- 'Unusedcategories' => array( 'SpecialPage', 'Unusedcategories' ),
- 'Unusedimages' => array( 'SpecialPage', 'Unusedimages' ),
- 'Unusedtemplates' => array( 'SpecialPage', 'Unusedtemplates' ),
- 'Unwatchedpages' => array( 'SpecialPage', 'Unwatchedpages', 'unwatchedpages' ),
- 'Wantedcategories' => array( 'SpecialPage', 'Wantedcategories' ),
- 'Wantedfiles' => array( 'SpecialPage', 'Wantedfiles' ),
- 'Wantedpages' => array( 'IncludableSpecialPage', 'Wantedpages' ),
- 'Wantedtemplates' => array( 'SpecialPage', 'Wantedtemplates' ),
+ 'Shortpages' => 'ShortpagesPage',
+ 'Uncategorizedcategories' => 'UncategorizedcategoriesPage',
+ 'Uncategorizedimages' => 'UncategorizedimagesPage',
+ 'Uncategorizedpages' => 'UncategorizedpagesPage',
+ 'Uncategorizedtemplates' => 'UncategorizedtemplatesPage',
+ 'Unusedcategories' => 'UnusedcategoriesPage',
+ 'Unusedimages' => 'UnusedimagesPage',
+ 'Unusedtemplates' => 'UnusedtemplatesPage',
+ 'Unwatchedpages' => 'UnwatchedpagesPage',
+ 'Wantedcategories' => 'WantedcategoriesPage',
+ 'Wantedfiles' => 'WantedfilesPage',
+ 'Wantedpages' => 'WantedpagesPage',
+ 'Wantedtemplates' => 'WantedtemplatesPage',
# List of pages
'Allpages' => 'SpecialAllpages',
'Prefixindex' => 'SpecialPrefixindex',
'Categories' => 'SpecialCategories',
- 'Disambiguations' => array( 'SpecialPage', 'Disambiguations' ),
- 'Listredirects' => array( 'SpecialPage', 'Listredirects' ),
+ 'Disambiguations' => 'DisambiguationsPage',
+ 'Listredirects' => 'ListredirectsPage',
# Login/create account
'Userlogin' => 'LoginForm',
# Media reports and uploads
'Listfiles' => array( 'SpecialPage', 'Listfiles' ),
'Filepath' => 'SpecialFilepath',
- 'MIMEsearch' => array( 'SpecialPage', 'MIMEsearch' ),
- 'FileDuplicateSearch' => array( 'SpecialPage', 'FileDuplicateSearch' ),
+ 'MIMEsearch' => 'MIMEsearchPage',
+ 'FileDuplicateSearch' => 'FileDuplicateSearchPage',
'Upload' => 'SpecialUpload',
'UploadStash' => 'SpecialUploadStash',
'Unlockdb' => 'SpecialUnlockdb',
# Redirecting special pages
- 'LinkSearch' => array( 'SpecialPage', 'LinkSearch' ),
+ 'LinkSearch' => 'LinkSearchPage',
'Randompage' => 'Randompage',
'Randomredirect' => 'SpecialRandomredirect',
# High use pages
- 'Mostlinkedcategories' => array( 'SpecialPage', 'Mostlinkedcategories' ),
- 'Mostimages' => array( 'SpecialPage', 'Mostimages' ),
- 'Mostlinked' => array( 'SpecialPage', 'Mostlinked' ),
- 'Mostlinkedtemplates' => array( 'SpecialPage', 'Mostlinkedtemplates' ),
- 'Mostcategories' => array( 'SpecialPage', 'Mostcategories' ),
- 'Mostrevisions' => array( 'SpecialPage', 'Mostrevisions' ),
+ 'Mostlinkedcategories' => 'MostlinkedCategoriesPage',
+ 'Mostimages' => 'MostimagesPage',
+ 'Mostlinked' => 'MostlinkedPage',
+ 'Mostlinkedtemplates' => 'MostlinkedTemplatesPage',
+ 'Mostcategories' => 'MostcategoriesPage',
+ 'Mostrevisions' => 'MostrevisionsPage',
# Page tools
'ComparePages' => 'SpecialComparePages',
'Export' => 'SpecialExport',
'Import' => 'SpecialImport',
- 'Undelete' => 'UndeleteForm',
+ 'Undelete' => 'SpecialUndelete',
'Whatlinkshere' => 'SpecialWhatlinkshere',
'MergeHistory' => 'SpecialMergeHistory',
'Mypage' => 'SpecialMypage',
'Mytalk' => 'SpecialMytalk',
'Myuploads' => 'SpecialMyuploads',
+ 'PermanentLink' => 'SpecialPermanentLink',
'Revisiondelete' => 'SpecialRevisionDelete',
'RevisionMove' => 'SpecialRevisionMove',
'Specialpages' => 'SpecialSpecialpages',
self::$mListInitialised = true;
if( !$wgDisableCounters ) {
- self::$mList['Popularpages'] = array( 'SpecialPage', 'Popularpages' );
+ self::$mList['Popularpages'] = 'PopularpagesPage';
}
if( !$wgDisableInternalSearch ) {
self::$mList[$name] = new $className;
} elseif ( is_array( $rec ) ) {
$className = array_shift( $rec );
- self::$mList[$name] = wfCreateObject( $className, $rec );
+ self::$mList[$name] = MWFunction::newObj( $className, $rec );
}
return self::$mList[$name];
} else {
# Check for redirect
if ( !$including ) {
$redirect = $page->getRedirect( $par );
- if ( $redirect ) {
- $query = $page->getRedirectQuery();
+ $query = $page->getRedirectQuery();
+ if ( $redirect instanceof Title ) {
$url = $redirect->getFullUrl( $query );
$wgOut->redirect( $url );
wfProfileOut( __METHOD__ );
return $redirect;
+ } elseif( $redirect === true ) {
+ global $wgScript;
+ $url = $wgScript . '?' . wfArrayToCGI( $query );
+ $wgOut->redirect( $url );
+ wfProfileOut( __METHOD__ );
+ return $redirect;
}
}
* Use PHP's magic __call handler to get calls to the old PHP4 constructor
* because PHP E_STRICT yells at you for having __construct() and SpecialPage()
*
- * @param $name String Name of called method
+ * @param $fName String Name of called method
* @param $a Array Arguments to the method
* @deprecated Call isn't deprecated, but SpecialPage::SpecialPage() is
*/
$file = isset( $a[4] ) ? $a[4] : 'default';
$includable = isset( $a[5] ) ? $a[5] : false;
$this->init( $name, $restriction, $listed, $function, $file, $includable );
+ } else {
+ $className = get_class( $this );
+ throw new MWException( "Call to undefined method $className::$fName" );
}
}
function getRedirectQuery() {
global $wgRequest;
$params = array();
+
foreach( $this->mAllowedRedirectParams as $arg ) {
- if( ( $val = $wgRequest->getVal( $arg, null ) ) !== null )
- $params[] = $arg . '=' . $val;
+ if( $wgRequest->getVal( $arg, null ) !== null ){
+ $params[$arg] = $wgRequest->getVal( $arg );
+ }
}
-
+
foreach( $this->mAddedRedirectParams as $arg => $val ) {
- $params[] = $arg . '=' . $val;
+ $params[$arg] = $val;
}
-
- return count( $params ) ? implode( '&', $params ) : false;
+
+ return count( $params )
+ ? $params
+ : false;
}
}
}
}
-/** SpecialMypage, SpecialMytalk and SpecialMycontributions special pages
+/**
+ * SpecialMypage, SpecialMytalk and SpecialMycontributions special pages
* are used to get user independant links pointing to the user page, talk
* page and list of contributions.
* This can let us cache a single copy of any generated content for all
parent::__construct( 'Myuploads' );
$this->mAllowedRedirectParams = array( 'limit' );
}
-
+
function getRedirect( $subpage ) {
global $wgUser;
return SpecialPage::getTitleFor( 'Listfiles', $wgUser->getName() );
}
-}
\ No newline at end of file
+}
+
+/**
+ * Redirect from Special:PermanentLink/### to index.php?oldid=###
+ */
+class SpecialPermanentLink extends UnlistedSpecialPage {
+ function __construct() {
+ parent::__construct( 'PermanentLink' );
+ $this->mAllowedRedirectParams = array();
+ }
+
+ function getRedirect( $subpage ) {
+ $subpage = intval( $subpage );
+ $this->mAddedRedirectParams['oldid'] = $subpage;
+ return true;
+ }
+}