public function listLocationAliases(Location $location, $custom = true, $languageCode = null, $showAllTranslations = null, array $prioritizedLanguageList = null)
{
$spiUrlAliasList = $this->urlAliasHandler->listURLAliasesForLocation($location->id, $custom);
if ($showAllTranslations === null) {
$showAllTranslations = $this->settings['showAllTranslations'];
}
if ($prioritizedLanguageList === null) {
$prioritizedLanguageList = $this->settings['prioritizedLanguageList'];
}
$urlAliasList = array();
foreach ($spiUrlAliasList as $spiUrlAlias) {
if (!$this->isUrlAliasLoadable($spiUrlAlias, $languageCode, $showAllTranslations, $prioritizedLanguageList)) {
continue;
}
$path = $this->extractPath($spiUrlAlias, $languageCode, $showAllTranslations, $prioritizedLanguageList);
if ($path === false) {
continue;
}
$urlAliasList[$spiUrlAlias->id] = $this->buildUrlAliasDomainObject($spiUrlAlias, $path);
}
$prioritizedAliasList = array();
foreach ($prioritizedLanguageList as $languageCode) {
foreach ($urlAliasList as $urlAlias) {
foreach ($urlAlias->languageCodes as $aliasLanguageCode) {
if ($aliasLanguageCode === $languageCode) {
$prioritizedAliasList[$urlAlias->id] = $urlAlias;
break;
}
}
}
}
// Add aliases not matched by prioritized language to the end of the list
return array_values($prioritizedAliasList + $urlAliasList);
}