cObj = $cObj; $this->languageMenuProcessor = $languageMenuProcessor; } public function __invoke(ModifyHrefLangTagsEvent $event): void { $newsAvailabilityChecker = GeneralUtility::makeInstance(NewsAvailability::class); if ($newsAvailabilityChecker->getNewsIdFromRequest() > 0) { $allHrefLangs = $event->getHrefLangs(); $languages = $this->languageMenuProcessor->process($this->cObj, [], [], []); $errorTriggered = false; foreach ($languages['languagemenu'] as $language) { $hreflangKey = $language['hreflang']; // skip all languages which are not used in hreflang if (!isset($allHrefLangs[$hreflangKey]) || $hreflangKey === 'x-default') { continue; } try { $check = $newsAvailabilityChecker->check($language['languageId']); if (!$check) { unset($allHrefLangs[$hreflangKey]); } } catch (\UnexpectedValueException $e) { $errorTriggered = true; } } if (!$errorTriggered) { if (count($allHrefLangs) <= 2) { unset($allHrefLangs['x-default']); } $event->setHrefLangs($allHrefLangs); } } } }