Merge "Check for Language::getSpecialPageAliases returning null in SpecialPageFactory"
authorjenkins-bot <jenkins-bot@gerrit.wikimedia.org>
Thu, 15 May 2014 16:09:21 +0000 (16:09 +0000)
committerGerrit Code Review <gerrit@wikimedia.org>
Thu, 15 May 2014 16:09:21 +0000 (16:09 +0000)
1  2 
includes/specialpage/SpecialPageFactory.php

@@@ -243,11 -243,14 +243,14 @@@ class SpecialPageFactory 
                        $missingPages = clone self::getList();
  
                        self::$aliases = array();
-                       foreach ( $aliases as $realName => $aliasList ) {
-                               foreach ( $aliasList as $alias ) {
-                                       self::$aliases[$wgContLang->caseFold( $alias )] = $realName;
+                       // Check for $aliases being an array since Language::getSpecialPageAliases can return null
+                       if ( is_array( $aliases ) ) {
+                               foreach ( $aliases as $realName => $aliasList ) {
+                                       foreach ( $aliasList as $alias ) {
+                                               self::$aliases[$wgContLang->caseFold( $alias )] = $realName;
+                                       }
+                                       unset( $missingPages->$realName );
                                }
-                               unset( $missingPages->$realName );
                        }
                        foreach ( $missingPages as $name => $stuff ) {
                                self::$aliases[$wgContLang->caseFold( $name )] = $name;
         * Return categorised listable special pages which are available
         * for the current user, but not for everyone
         *
 +       * @param User|null $user User object to use or null for $wgUser
         * @return array ( string => Specialpage )
         */
 -      public static function getRestrictedPages() {
 -              global $wgUser;
 +      public static function getRestrictedPages( User $user = null ) {
                $pages = array();
 +              if ( $user === null ) {
 +                      global $wgUser;
 +                      $user = $wgUser;
 +              }
                foreach ( self::getList() as $name => $rec ) {
                        $page = self::getPage( $name );
                        if (
                                $page->isListed()
                                && $page->isRestricted()
 -                              && $page->userCanExecute( $wgUser )
 +                              && $page->userCanExecute( $user )
                        ) {
                                $pages[$name] = $page;
                        }
                } else {
                        // Try harder in case someone misspelled the correct casing
                        $found = false;
-                       foreach ( $aliases as $n => $values ) {
-                               if ( strcasecmp( $name, $n ) === 0 ) {
-                                       wfWarn( "Found alias defined for $n when searching for " .
-                                               "special page aliases for $name. Case mismatch?" );
-                                       $name = $values[0];
-                                       $found = true;
-                                       break;
+                       // Check for $aliases being an array since Language::getSpecialPageAliases can return null
+                       if ( is_array( $aliases ) ) {
+                               foreach ( $aliases as $n => $values ) {
+                                       if ( strcasecmp( $name, $n ) === 0 ) {
+                                               wfWarn( "Found alias defined for $n when searching for " .
+                                                       "special page aliases for $name. Case mismatch?" );
+                                               $name = $values[0];
+                                               $found = true;
+                                               break;
+                                       }
                                }
                        }
                        if ( !$found ) {