/** * 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; }