/**
  * Initialise and return the list of special page aliases.  Returns an object with
  * properties which can be accessed $obj->pagename - each property is an array of
  * 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
  */
 static function getAliasList()
 {
     if (!is_object(self::$aliases)) {
         global $wgContLang;
         $aliases = $wgContLang->getSpecialPageAliases();
         $missingPages = self::getList();
         self::$aliases = array();
         // 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});
             }
         }
         foreach ($missingPages as $name => $stuff) {
             self::$aliases[$wgContLang->caseFold($name)] = $name;
         }
         // Cast to object: func()[$key] doesn't work, but func()->$key does
         self::$aliases = (object) self::$aliases;
     }
     return self::$aliases;
 }
 /**
  * Initialise and return the list of special page aliases. Returns an array where
  * the key is an alias, and the value is the canonical name of the special page.
  * All registered special pages are guaranteed to map to themselves.
  * @return array
  */
 private static function getAliasList()
 {
     if (is_null(self::$aliases)) {
         global $wgContLang;
         $aliases = $wgContLang->getSpecialPageAliases();
         $pageList = self::getPageList();
         self::$aliases = [];
         $keepAlias = [];
         // Force every canonical name to be an alias for itself.
         foreach ($pageList as $name => $stuff) {
             $caseFoldedAlias = $wgContLang->caseFold($name);
             self::$aliases[$caseFoldedAlias] = $name;
             $keepAlias[$caseFoldedAlias] = 'canonical';
         }
         // Check for $aliases being an array since Language::getSpecialPageAliases can return null
         if (is_array($aliases)) {
             foreach ($aliases as $realName => $aliasList) {
                 $aliasList = array_values($aliasList);
                 foreach ($aliasList as $i => $alias) {
                     $caseFoldedAlias = $wgContLang->caseFold($alias);
                     if (isset(self::$aliases[$caseFoldedAlias]) && $realName === self::$aliases[$caseFoldedAlias]) {
                         // Ignore same-realName conflicts
                         continue;
                     }
                     if (!isset($keepAlias[$caseFoldedAlias])) {
                         self::$aliases[$caseFoldedAlias] = $realName;
                         if (!$i) {
                             $keepAlias[$caseFoldedAlias] = 'first';
                         }
                     } elseif (!$i) {
                         wfWarn("First alias '{$alias}' for {$realName} conflicts with " . "{$keepAlias[$caseFoldedAlias]} alias for " . self::$aliases[$caseFoldedAlias]);
                     }
                 }
             }
         }
     }
     return self::$aliases;
 }
 /**
  * Initialise and return the list of special page aliases.  Returns an object with
  * properties which can be accessed $obj->pagename - each property is an array of
  * 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
  */
 static function getAliasList()
 {
     if (!is_object(self::$aliases)) {
         global $wgContLang;
         $aliases = $wgContLang->getSpecialPageAliases();
         // Objects are passed by reference by default, need to create a copy
         $missingPages = clone self::getList();
         self::$aliases = array();
         foreach ($aliases as $realName => $aliasList) {
             foreach ($aliasList as $alias) {
                 self::$aliases[$wgContLang->caseFold($alias)] = $realName;
             }
             unset($missingPages->{$realName});
         }
         foreach ($missingPages as $name => $stuff) {
             self::$aliases[$wgContLang->caseFold($name)] = $name;
         }
         // Cast to object: func()[$key] doesn't work, but func()->$key does
         self::$aliases = (object) self::$aliases;
     }
     return self::$aliases;
 }