getNewsId(); if ($newsId === 0) { return $processedData; } $menus = GeneralUtility::trimExplode(',', $processorConfiguration['menus'], true); foreach ($menus as $menu) { if (isset($processedData[$menu])) { $this->handleMenu($newsId, $processedData[$menu]); } } return $processedData; } /** * @param int $newsId * @param array $menu */ protected function handleMenu(int $newsId, array &$menu): void { $newsAvailability = GeneralUtility::makeInstance(NewsAvailability::class); foreach ($menu as &$item) { if (!$item['available']) { continue; } try { $availability = $newsAvailability->check((int)$item['languageId'], $newsId); if (!$availability) { $item['available'] = false; $item['availableReason'] = 'news'; } } catch (\Exception $e) { } } } /** * @return int */ protected function getNewsId(): int { $newsId = 0; /** @var PageArguments $pageArguments */ $pageArguments = $this->getRequest()->getAttribute('routing'); if (isset($pageArguments->getRouteArguments()['tx_news_pi1']['news'])) { $newsId = (int)$pageArguments->getRouteArguments()['tx_news_pi1']['news']; } elseif (isset($this->getRequest()->getQueryParams()['tx_news_pi1']['news'])) { $newsId = (int)$this->getRequest()->getQueryParams()['tx_news_pi1']['news']; } return $newsId; } /** * @return ServerRequestInterface */ protected function getRequest(): ServerRequestInterface { return $GLOBALS['TYPO3_REQUEST']; } }