Merge "Update OOjs UI to v0.1.0-pre (99ec31d9b9)"
[lhc/web/wiklou.git] / includes / specialpage / SpecialPageFactory.php
index 7904140..febd119 100644 (file)
@@ -47,7 +47,7 @@ class SpecialPageFactory {
        /**
         * List of special page names to the subclass of SpecialPage which handles them.
         */
-       private static $list = array(
+       private static $coreList = array(
                // Maintenance Reports
                'BrokenRedirects' => 'BrokenRedirectsPage',
                'Deadendpages' => 'DeadendPagesPage',
@@ -59,7 +59,7 @@ class SpecialPageFactory {
                'Withoutinterwiki' => 'WithoutInterwikiPage',
                'Protectedpages' => 'SpecialProtectedpages',
                'Protectedtitles' => 'SpecialProtectedtitles',
-               'Shortpages' => 'ShortpagesPage',
+               'Shortpages' => 'ShortPagesPage',
                'Uncategorizedcategories' => 'UncategorizedCategoriesPage',
                'Uncategorizedimages' => 'UncategorizedImagesPage',
                'Uncategorizedpages' => 'UncategorizedPagesPage',
@@ -74,7 +74,7 @@ class SpecialPageFactory {
                'Wantedtemplates' => 'WantedTemplatesPage',
 
                // List of pages
-               'Allpages' => 'SpecialAllpages',
+               'Allpages' => 'SpecialAllPages',
                'Prefixindex' => 'SpecialPrefixindex',
                'Categories' => 'SpecialCategories',
                'Listredirects' => 'ListredirectsPage',
@@ -123,7 +123,7 @@ class SpecialPageFactory {
 
                // Data and tools
                'Statistics' => 'SpecialStatistics',
-               'Allmessages' => 'SpecialAllmessages',
+               'Allmessages' => 'SpecialAllMessages',
                'Version' => 'SpecialVersion',
                'Lockdb' => 'SpecialLockdb',
                'Unlockdb' => 'SpecialUnlockdb',
@@ -156,6 +156,7 @@ class SpecialPageFactory {
                'Booksources' => 'SpecialBookSources',
 
                // Unlisted / redirects
+               'ApiHelp' => 'SpecialApiHelp',
                'Blankpage' => 'SpecialBlankpage',
                'Diff' => 'SpecialDiff',
                'Emailuser' => 'SpecialEmailUser',
@@ -174,6 +175,7 @@ class SpecialPageFactory {
                'Userlogout' => 'SpecialUserlogout',
        );
 
+       private static $list;
        private static $aliases;
 
        /**
@@ -217,9 +219,11 @@ class SpecialPageFactory {
                global $wgEnableEmail, $wgEnableJavaScriptTest;
                global $wgPageLanguageUseDB;
 
-               if ( !is_object( self::$list ) ) {
+               if ( !is_array( self::$list ) ) {
                        wfProfileIn( __METHOD__ );
 
+                       self::$list = self::$coreList;
+
                        if ( !$wgDisableCounters ) {
                                self::$list['Popularpages'] = 'PopularPagesPage';
                        }
@@ -271,12 +275,13 @@ class SpecialPageFactory {
                if ( !is_object( self::$aliases ) ) {
                        global $wgContLang;
                        $aliases = $wgContLang->getSpecialPageAliases();
+                       $pageList = self::getPageList();
 
                        self::$aliases = array();
                        $keepAlias = array();
 
                        // Force every canonical name to be an alias for itself.
-                       foreach ( self::getPageList() as $name => $stuff ) {
+                       foreach ( $pageList as $name => $stuff ) {
                                $caseFoldedAlias = $wgContLang->caseFold( $name );
                                self::$aliases[$caseFoldedAlias] = $name;
                                $keepAlias[$caseFoldedAlias] = 'canonical';
@@ -402,12 +407,12 @@ class SpecialPageFactory {
                if ( isset( $specialPageList[$realName] ) ) {
                        $rec = $specialPageList[$realName];
 
-                       if ( is_string( $rec ) ) {
-                               $className = $rec;
-                               $page = new $className;
-                       } elseif ( is_callable( $rec ) ) {
+                       if ( is_callable( $rec ) ) {
                                // Use callback to instantiate the special page
                                $page = call_user_func( $rec );
+                       } elseif ( is_string( $rec ) ) {
+                               $className = $rec;
+                               $page = new $className;
                        } elseif ( is_array( $rec ) ) {
                                $className = array_shift( $rec );
                                // @deprecated, officially since 1.18, unofficially since forever