Merge "Call wfThumbIncrAttemptFailures() in thumb.php on fatals"
[lhc/web/wiklou.git] / includes / specialpage / SpecialPageFactory.php
index c6735e6..2305f21 100644 (file)
@@ -49,125 +49,127 @@ class SpecialPageFactory {
         */
        private static $list = array(
                // Maintenance Reports
-               'BrokenRedirects'           => 'BrokenRedirectsPage',
-               'Deadendpages'              => 'DeadendpagesPage',
-               'DoubleRedirects'           => 'DoubleRedirectsPage',
-               'Longpages'                 => 'LongpagesPage',
-               'Ancientpages'              => 'AncientpagesPage',
-               'Lonelypages'               => 'LonelypagesPage',
-               'Fewestrevisions'           => 'FewestrevisionsPage',
-               'Withoutinterwiki'          => 'WithoutinterwikiPage',
-               'Protectedpages'            => 'SpecialProtectedpages',
-               'Protectedtitles'           => 'SpecialProtectedtitles',
-               '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',
+               'BrokenRedirects' => 'BrokenRedirectsPage',
+               'Deadendpages' => 'DeadendPagesPage',
+               'DoubleRedirects' => 'DoubleRedirectsPage',
+               'Longpages' => 'LongPagesPage',
+               'Ancientpages' => 'AncientPagesPage',
+               'Lonelypages' => 'LonelyPagesPage',
+               'Fewestrevisions' => 'FewestrevisionsPage',
+               'Withoutinterwiki' => 'WithoutInterwikiPage',
+               'Protectedpages' => 'SpecialProtectedpages',
+               'Protectedtitles' => 'SpecialProtectedtitles',
+               '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',
-               'Listredirects'             => 'ListredirectsPage',
-               'PagesWithProp'             => 'SpecialPagesWithProp',
+               'Allpages' => 'SpecialAllpages',
+               'Prefixindex' => 'SpecialPrefixindex',
+               'Categories' => 'SpecialCategories',
+               'Listredirects' => 'ListredirectsPage',
+               'PagesWithProp' => 'SpecialPagesWithProp',
+               'TrackingCategories' => 'SpecialTrackingCategories',
 
                // Login/create account
-               'Userlogin'                 => 'LoginForm',
-               'CreateAccount'             => 'SpecialCreateAccount',
+               'Userlogin' => 'LoginForm',
+               'CreateAccount' => 'SpecialCreateAccount',
 
                // Users and rights
-               'Block'                     => 'SpecialBlock',
-               'Unblock'                   => 'SpecialUnblock',
-               'BlockList'                 => 'SpecialBlockList',
-               'ChangePassword'            => 'SpecialChangePassword',
-               'PasswordReset'             => 'SpecialPasswordReset',
-               'DeletedContributions'      => 'DeletedContributionsPage',
-               'Preferences'               => 'SpecialPreferences',
-               'ResetTokens'               => 'SpecialResetTokens',
-               'Contributions'             => 'SpecialContributions',
-               'Listgrouprights'           => 'SpecialListGroupRights',
-               'Listusers'                 => 'SpecialListUsers',
-               'Listadmins'                => 'SpecialListAdmins',
-               'Listbots'                  => 'SpecialListBots',
-               'Userrights'                => 'UserrightsPage',
-               'EditWatchlist'             => 'SpecialEditWatchlist',
+               'Block' => 'SpecialBlock',
+               'Unblock' => 'SpecialUnblock',
+               'BlockList' => 'SpecialBlockList',
+               'ChangePassword' => 'SpecialChangePassword',
+               'PasswordReset' => 'SpecialPasswordReset',
+               'DeletedContributions' => 'DeletedContributionsPage',
+               'Preferences' => 'SpecialPreferences',
+               'ResetTokens' => 'SpecialResetTokens',
+               'Contributions' => 'SpecialContributions',
+               'Listgrouprights' => 'SpecialListGroupRights',
+               'Listusers' => 'SpecialListUsers',
+               'Listadmins' => 'SpecialListAdmins',
+               'Listbots' => 'SpecialListBots',
+               'Userrights' => 'UserrightsPage',
+               'EditWatchlist' => 'SpecialEditWatchlist',
 
                // Recent changes and logs
-               'Newimages'                 => 'SpecialNewFiles',
-               'Log'                       => 'SpecialLog',
-               'Watchlist'                 => 'SpecialWatchlist',
-               'Newpages'                  => 'SpecialNewpages',
-               'Recentchanges'             => 'SpecialRecentChanges',
-               'Recentchangeslinked'       => 'SpecialRecentChangesLinked',
-               'Tags'                      => 'SpecialTags',
+               'Newimages' => 'SpecialNewFiles',
+               'Log' => 'SpecialLog',
+               'Watchlist' => 'SpecialWatchlist',
+               'Newpages' => 'SpecialNewpages',
+               'Recentchanges' => 'SpecialRecentChanges',
+               'Recentchangeslinked' => 'SpecialRecentChangesLinked',
+               'Tags' => 'SpecialTags',
 
                // Media reports and uploads
-               'Listfiles'                 => 'SpecialListFiles',
-               'Filepath'                  => 'SpecialFilepath',
-               'MIMEsearch'                => 'MIMEsearchPage',
-               'FileDuplicateSearch'       => 'FileDuplicateSearchPage',
-               'Upload'                    => 'SpecialUpload',
-               'UploadStash'               => 'SpecialUploadStash',
+               'Listfiles' => 'SpecialListFiles',
+               'Filepath' => 'SpecialFilepath',
+               'MIMEsearch' => 'MIMEsearchPage',
+               'FileDuplicateSearch' => 'FileDuplicateSearchPage',
+               'Upload' => 'SpecialUpload',
+               'UploadStash' => 'SpecialUploadStash',
+               'ListDuplicatedFiles' => 'ListDuplicatedFilesPage',
 
                // Data and tools
-               'Statistics'                => 'SpecialStatistics',
-               'Allmessages'               => 'SpecialAllmessages',
-               'Version'                   => 'SpecialVersion',
-               'Lockdb'                    => 'SpecialLockdb',
-               'Unlockdb'                  => 'SpecialUnlockdb',
+               'Statistics' => 'SpecialStatistics',
+               'Allmessages' => 'SpecialAllmessages',
+               'Version' => 'SpecialVersion',
+               'Lockdb' => 'SpecialLockdb',
+               'Unlockdb' => 'SpecialUnlockdb',
 
                // Redirecting special pages
-               'LinkSearch'                => 'LinkSearchPage',
-               'Randompage'                => 'Randompage',
-               'RandomInCategory'          => 'SpecialRandomInCategory',
-               'Randomredirect'            => 'SpecialRandomredirect',
+               'LinkSearch' => 'LinkSearchPage',
+               'Randompage' => 'RandomPage',
+               'RandomInCategory' => 'SpecialRandomInCategory',
+               'Randomredirect' => 'SpecialRandomredirect',
 
                // High use pages
-               'Mostlinkedcategories'      => 'MostlinkedCategoriesPage',
-               'Mostimages'                => 'MostimagesPage',
-               'Mostinterwikis'            => 'MostinterwikisPage',
-               'Mostlinked'                => 'MostlinkedPage',
-               'Mostlinkedtemplates'       => 'MostlinkedTemplatesPage',
-               'Mostcategories'            => 'MostcategoriesPage',
-               'Mostrevisions'             => 'MostrevisionsPage',
+               'Mostlinkedcategories' => 'MostlinkedCategoriesPage',
+               'Mostimages' => 'MostimagesPage',
+               'Mostinterwikis' => 'MostinterwikisPage',
+               'Mostlinked' => 'MostlinkedPage',
+               'Mostlinkedtemplates' => 'MostlinkedTemplatesPage',
+               'Mostcategories' => 'MostcategoriesPage',
+               'Mostrevisions' => 'MostrevisionsPage',
 
                // Page tools
-               'ComparePages'              => 'SpecialComparePages',
-               'Export'                    => 'SpecialExport',
-               'Import'                    => 'SpecialImport',
-               'Undelete'                  => 'SpecialUndelete',
-               'Whatlinkshere'             => 'SpecialWhatlinkshere',
-               'MergeHistory'              => 'SpecialMergeHistory',
-               'ExpandTemplates'           => 'SpecialExpandTemplates',
+               'ComparePages' => 'SpecialComparePages',
+               'Export' => 'SpecialExport',
+               'Import' => 'SpecialImport',
+               'Undelete' => 'SpecialUndelete',
+               'Whatlinkshere' => 'SpecialWhatLinksHere',
+               'MergeHistory' => 'SpecialMergeHistory',
+               'ExpandTemplates' => 'SpecialExpandTemplates',
 
                // Other
-               'Booksources'               => 'SpecialBookSources',
+               'Booksources' => 'SpecialBookSources',
 
                // Unlisted / redirects
-               'Blankpage'                 => 'SpecialBlankpage',
-               'Diff'                      => 'SpecialDiff',
-               'Emailuser'                 => 'SpecialEmailUser',
-               'Movepage'                  => 'MovePageForm',
-               'Mycontributions'           => 'SpecialMycontributions',
-               'Mypage'                    => 'SpecialMypage',
-               'Mytalk'                    => 'SpecialMytalk',
-               'Myuploads'                 => 'SpecialMyuploads',
-               'AllMyUploads'              => 'SpecialAllMyUploads',
-               'PermanentLink'             => 'SpecialPermanentLink',
-               'Redirect'                  => 'SpecialRedirect',
-               'Revisiondelete'            => 'SpecialRevisionDelete',
-               'RunJobs'                   => 'SpecialRunJobs',
-               'Specialpages'              => 'SpecialSpecialpages',
-               'Userlogout'                => 'SpecialUserlogout',
+               'Blankpage' => 'SpecialBlankpage',
+               'Diff' => 'SpecialDiff',
+               'Emailuser' => 'SpecialEmailUser',
+               'Movepage' => 'MovePageForm',
+               'Mycontributions' => 'SpecialMycontributions',
+               'Mypage' => 'SpecialMypage',
+               'Mytalk' => 'SpecialMytalk',
+               'Myuploads' => 'SpecialMyuploads',
+               'AllMyUploads' => 'SpecialAllMyUploads',
+               'PermanentLink' => 'SpecialPermanentLink',
+               'Redirect' => 'SpecialRedirect',
+               'Revisiondelete' => 'SpecialRevisionDelete',
+               'RunJobs' => 'SpecialRunJobs',
+               'Specialpages' => 'SpecialSpecialpages',
+               'Userlogout' => 'SpecialUserlogout',
        );
 
        private static $aliases;
@@ -186,7 +188,7 @@ class SpecialPageFactory {
                        wfProfileIn( __METHOD__ );
 
                        if ( !$wgDisableCounters ) {
-                               self::$list['Popularpages'] = 'PopularpagesPage';
+                               self::$list['Popularpages'] = 'PopularPagesPage';
                        }
 
                        if ( !$wgDisableInternalSearch ) {
@@ -220,6 +222,7 @@ class SpecialPageFactory {
 
                        wfProfileOut( __METHOD__ );
                }
+
                return self::$list;
        }
 
@@ -229,7 +232,7 @@ class SpecialPageFactory {
         * aliases; the first in the array is the canonical alias.  All registered special
         * pages are guaranteed to have a property entry, and for that property array to
         * contain at least one entry (English fallbacks will be added if necessary).
-        * @return Object
+        * @return object
         */
        static function getAliasList() {
                if ( !is_object( self::$aliases ) ) {
@@ -253,6 +256,7 @@ class SpecialPageFactory {
                        // Cast to object: func()[$key] doesn't work, but func()->$key does
                        self::$aliases = (object)self::$aliases;
                }
+
                return self::$aliases;
        }
 
@@ -321,6 +325,7 @@ class SpecialPageFactory {
         */
        public static function exists( $name ) {
                list( $title, /*...*/ ) = self::resolveAlias( $name );
+
                return property_exists( self::getList(), $title );
        }
 
@@ -336,13 +341,16 @@ class SpecialPageFactory {
                        $rec = self::getList()->$realName;
                        if ( is_string( $rec ) ) {
                                $className = $rec;
+
                                return new $className;
                        } elseif ( is_array( $rec ) ) {
                                // @deprecated, officially since 1.18, unofficially since forever
-                               wfDebug( "Array syntax for \$wgSpecialPages is deprecated, define a subclass of SpecialPage instead." );
+                               wfDebug( "Array syntax for \$wgSpecialPages is deprecated, " .
+                                       "define a subclass of SpecialPage instead." );
                                $className = array_shift( $rec );
                                self::getList()->$realName = MWFunction::newObj( $className, $rec );
                        }
+
                        return self::getList()->$realName;
                } else {
                        return null;
@@ -353,7 +361,7 @@ class SpecialPageFactory {
         * Return categorised listable special pages which are available
         * for the current user, and everyone.
         *
-        * @param $user User object to check permissions, $wgUser will be used if
+        * @param User $user User object to check permissions, $wgUser will be used if
         *   if not provided
         * @return array ( string => Specialpage )
         */
@@ -374,6 +382,7 @@ class SpecialPageFactory {
                                }
                        }
                }
+
                return $pages;
        }
 
@@ -390,6 +399,7 @@ class SpecialPageFactory {
                                $pages[$name] = $page;
                        }
                }
+
                return $pages;
        }
 
@@ -412,6 +422,7 @@ class SpecialPageFactory {
                                $pages[$name] = $page;
                        }
                }
+
                return $pages;
        }
 
@@ -453,6 +464,7 @@ class SpecialPageFactory {
 
                        $context->getOutput()->showErrorPage( 'nosuchspecialpage', 'nospecialpagetext' );
                        wfProfileOut( __METHOD__ );
+
                        return false;
                }
 
@@ -472,13 +484,14 @@ class SpecialPageFactory {
                                $url = $title->getFullURL( $query );
                                $context->getOutput()->redirect( $url );
                                wfProfileOut( __METHOD__ );
+
                                return $title;
                        } else {
                                $context->setTitle( $page->getPageTitle( $par ) );
                        }
-
                } elseif ( !$page->isIncludable() ) {
                        wfProfileOut( __METHOD__ );
+
                        return false;
                }
 
@@ -490,6 +503,7 @@ class SpecialPageFactory {
                $page->run( $par );
                wfProfileOut( $profName );
                wfProfileOut( __METHOD__ );
+
                return true;
        }
 
@@ -570,6 +584,7 @@ class SpecialPageFactory {
                if ( $subpage !== false && !is_null( $subpage ) ) {
                        $name = "$name/$subpage";
                }
+
                return $wgContLang->ucfirst( $name );
        }