Fixing bug in HTML diff when the word '0' is encountered. Thanks siebrand for reporting
[lhc/web/wiklou.git] / includes / SpecialPage.php
index d558e8e..c7b0308 100644 (file)
@@ -90,7 +90,7 @@ class SpecialPage
                'Preferences'               => array( 'SpecialPage', 'Preferences' ),
                'Watchlist'                 => array( 'SpecialPage', 'Watchlist' ),
 
-               'Recentchanges'             => array( 'IncludableSpecialPage', 'Recentchanges' ),
+               'Recentchanges'             => 'SpecialRecentchanges',
                'Upload'                    => array( 'SpecialPage', 'Upload' ),
                'Imagelist'                 => array( 'SpecialPage', 'Imagelist' ),
                'Newimages'                 => array( 'IncludableSpecialPage', 'Newimages' ),
@@ -116,7 +116,7 @@ class SpecialPage
                'Fewestrevisions'           => array( 'SpecialPage', 'Fewestrevisions' ),
                'Shortpages'                => array( 'SpecialPage', 'Shortpages' ),
                'Longpages'                 => array( 'SpecialPage', 'Longpages' ),
-               'Newpages'                  => array( 'IncludableSpecialPage', 'Newpages' ),
+               'Newpages'                  => 'SpecialNewpages',
                'Ancientpages'              => array( 'SpecialPage', 'Ancientpages' ),
                'Deadendpages'              => array( 'SpecialPage', 'Deadendpages' ),
                'Protectedpages'            => array( 'SpecialPage', 'Protectedpages' ),
@@ -128,7 +128,7 @@ class SpecialPage
                'Contributions'             => array( 'SpecialPage', 'Contributions' ),
                'Emailuser'                 => array( 'UnlistedSpecialPage', 'Emailuser' ),
                'Whatlinkshere'             => array( 'SpecialPage', 'Whatlinkshere' ),
-               'Recentchangeslinked'       => array( 'SpecialPage', 'Recentchangeslinked' ),
+               'Recentchangeslinked'       => 'SpecialRecentchangeslinked',
                'Movepage'                  => array( 'UnlistedSpecialPage', 'Movepage' ),
                'Blockme'                   => array( 'UnlistedSpecialPage', 'Blockme' ),
                'Resetpass'                 => array( 'UnlistedSpecialPage', 'Resetpass' ),
@@ -136,6 +136,7 @@ class SpecialPage
                'Categories'                => array( 'SpecialPage', 'Categories' ),
                'Export'                    => array( 'SpecialPage', 'Export' ),
                'Version'                   => array( 'SpecialPage', 'Version' ),
+               'Blankpage'                 => array( 'UnlistedSpecialPage', 'Blankpage' ),
                'Allmessages'               => array( 'SpecialPage', 'Allmessages' ),
                'Log'                       => array( 'SpecialPage', 'Log' ),
                'Blockip'                   => array( 'SpecialPage', 'Blockip', 'block' ),
@@ -294,8 +295,19 @@ class SpecialPage
         */
        static function getGroup( &$page ) {
                global $wgSpecialPageGroups;
-               $group = isset($wgSpecialPageGroups[$page->mName]) ?
-                       $wgSpecialPageGroups[$page->mName] : 'other';
+               static $specialPageGroupsCache = array();
+               if( isset($specialPageGroupsCache[$page->mName]) ) {
+                       return $specialPageGroupsCache[$page->mName];
+               }
+               $group = wfMsg('specialpages-specialpagegroup-'.strtolower($page->mName));
+               if( $group == ''
+                || wfEmptyMsg('specialpages-specialpagegroup-'.strtolower($page->mName), $group ) ) {
+                       $group = isset($wgSpecialPageGroups[$page->mName])
+                               ? $wgSpecialPageGroups[$page->mName]
+                               : '-';
+               }
+               if( $group == '-' ) $group = 'other';
+               $specialPageGroupsCache[$page->mName] = $group;
                return $group;
        }
 
@@ -426,14 +438,14 @@ class SpecialPage
         */
        static function getRestrictedPages() {
                global $wgUser;
-               if ( !self::$mListInitialised ) {
+               if( !self::$mListInitialised ) {
                        self::initList();
                }
                $pages = array();
 
-               foreach ( self::$mList as $name => $rec ) {
+               foreach( self::$mList as $name => $rec ) {
                        $page = self::getPage( $name );
-                       if (
+                       if(
                                $page->isListed()
                                && $page->isRestricted()
                                && $page->userCanExecute( $wgUser )
@@ -472,7 +484,7 @@ class SpecialPage
                if ( !$page ) {
                        if ( !$including ) {
                                $wgOut->setArticleRelated( false );
-                               $wgOut->setRobotpolicy( 'noindex,nofollow' );
+                               $wgOut->setRobotPolicy( 'noindex,nofollow' );
                                $wgOut->setStatusCode( 404 );
                                $wgOut->showErrorPage( 'nosuchspecialpage', 'nospecialpagetext' );
                        }
@@ -631,7 +643,7 @@ class SpecialPage
                        $this->mFunction = $function;
                }
                if ( $file === 'default' ) {
-                       $this->mFile = dirname(__FILE__) . "/Special{$name}.php";
+                       $this->mFile = dirname(__FILE__) . "/specials/Special$name.php";
                } else {
                        $this->mFile = $file;
                }