From 55b722720d973c350bf4bd3488135e1bccf7d8e3 Mon Sep 17 00:00:00 2001 From: Oliver Bartsch <bo@cedev.de> Date: Mon, 23 Jan 2023 16:26:36 +0100 Subject: [PATCH] [BUGFIX] Handle disabled default language in PageContentErrorHandler The SiteInterface provides the "getDefaultLanguage()" method, which will always return the first configured language - usually L=0. However, this language might be disabled, which means, it should not be visible in frontend context. The PageContentErrorHandler therefore now tries to fetch the first enabled language, in case the requested language id does not exist in the current site and the sites' default language is disabled. Resolves: #99530 Releases: main, 11.5 Change-Id: Ib02cbd8f01a4fc1a69be46ad2015e8863553fae0 Reviewed-on: https://review.typo3.org/c/Packages/TYPO3.CMS/+/77440 Tested-by: core-ci <typo3@b13.com> Tested-by: Oliver Bartsch <bo@cedev.de> Reviewed-by: Oliver Bartsch <bo@cedev.de> --- .../PageErrorHandler/PageContentErrorHandler.php | 12 ++++++++++++ 1 file changed, 12 insertions(+) diff --git a/typo3/sysext/core/Classes/Error/PageErrorHandler/PageContentErrorHandler.php b/typo3/sysext/core/Classes/Error/PageErrorHandler/PageContentErrorHandler.php index db82b31263f6..ae1ee2b73b4d 100644 --- a/typo3/sysext/core/Classes/Error/PageErrorHandler/PageContentErrorHandler.php +++ b/typo3/sysext/core/Classes/Error/PageErrorHandler/PageContentErrorHandler.php @@ -321,6 +321,18 @@ class PageContentErrorHandler implements PageErrorHandlerInterface $language = $site->getDefaultLanguage(); } + // Requested language or default language is disabled in current site => Fetch first "enabled" language + if (!$language->isEnabled()) { + $enabledLanguages = $site->getLanguages(); + if ($enabledLanguages === []) { + throw new \RuntimeException( + 'Site ' . $site->getIdentifier() . ' does not define any enabled language.', + 1674487171 + ); + } + $language = reset($enabledLanguages); + } + // Build Url $uri = $site->getRouter()->generateUri( (int)$urlParams['pageuid'], -- GitLab