/** * Get used languages in a colPos of a page * * @param ServerRequestInterface $request * @param ResponseInterface $response * @return ResponseInterface */ public function getUsedLanguagesInPageAndColumn(ServerRequestInterface $request, ResponseInterface $response) { $params = $request->getQueryParams(); if (!isset($params['pageId'], $params['colPos'], $params['languageId'])) { $response = $response->withStatus(500); return $response; } $pageId = (int) $params['pageId']; $colPos = (int) $params['colPos']; $languageId = (int) $params['languageId']; /** @var TranslationConfigurationProvider $translationProvider */ $translationProvider = GeneralUtility::makeInstance(TranslationConfigurationProvider::class); $systemLanguages = $translationProvider->getSystemLanguages($pageId); $availableLanguages = []; // First check whether column has localized records $elementsInColumnCount = $this->localizationRepository->getLocalizedRecordCount($pageId, $colPos, $languageId); if ($elementsInColumnCount === 0) { $fetchedAvailableLanguages = $this->localizationRepository->fetchAvailableLanguages($pageId, $colPos, $languageId); $availableLanguages[] = $systemLanguages[0]; foreach ($fetchedAvailableLanguages as $language) { if (isset($systemLanguages[$language['uid']])) { $availableLanguages[] = $systemLanguages[$language['uid']]; } } } else { $result = $this->localizationRepository->fetchOriginLanguage($pageId, $colPos, $languageId); $availableLanguages[] = $systemLanguages[$result['sys_language_uid']]; } // Pre-render all flag icons foreach ($availableLanguages as &$language) { if ($language['flagIcon'] === 'empty-empty') { $language['flagIcon'] = ''; } else { $language['flagIcon'] = $this->iconFactory->getIcon($language['flagIcon'], Icon::SIZE_SMALL)->render(); } } $response->getBody()->write(json_encode($availableLanguages)); return $response; }