public function findAvailableLocale($webspaceName, array $availableLocales, $locale)
{
if (!$webspaceName) {
return;
}
// get localization object for querying parent localizations
$webspace = $this->webspaceManager->findWebspaceByKey($webspaceName);
$localization = $webspace->getLocalization($locale);
if (null === $localization) {
return;
}
$resultLocalization = null;
// find first available localization in parents
$resultLocalization = $this->findAvailableParentLocalization($availableLocales, $localization);
// find first available localization in children, if no result is found yet
if (!$resultLocalization) {
$resultLocalization = $this->findAvailableChildLocalization($availableLocales, $localization);
}
// find any localization available, if no result is found yet
if (!$resultLocalization) {
$resultLocalization = $this->findAvailableLocalization($availableLocales, $webspace->getLocalizations());
}
if (!$resultLocalization) {
return;
}
return $resultLocalization->getLocale();
}