Skip to content

Commit 61eb3fd

Browse files
Carsten Windlercundd
authored andcommitted
Add workaround to support new Site Handling
1 parent 5771444 commit 61eb3fd

File tree

1 file changed

+28
-4
lines changed

1 file changed

+28
-4
lines changed

Classes/Bootstrap.php

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,11 +5,14 @@
55

66
use TYPO3\CMS\Core\TimeTracker\TimeTracker;
77
use TYPO3\CMS\Core\Utility\GeneralUtility;
8+
use TYPO3\CMS\Core\Routing\SiteMatcher;
9+
use TYPO3\CMS\Core\Routing\SiteRouteResult;
810
use TYPO3\CMS\Extbase\Object\ObjectManager;
911
use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController;
1012
use TYPO3\CMS\Frontend\Utility\EidUtility;
1113
use TYPO3\CMS\Lang\LanguageService;
1214

15+
1316
/**
1417
* Class to bootstrap TYPO3 frontend controller
1518
*/
@@ -143,10 +146,31 @@ private function configureFrontendController($frontendController)
143146
*/
144147
private function setRequestedLanguage(TypoScriptFrontendController $frontendController)
145148
{
146-
// Set language if defined
147-
$requestedLanguageUid = GeneralUtility::_GP('L') !== null
148-
? intval(GeneralUtility::_GP('L'))
149-
: $this->getRequestedLanguageUid($frontendController);
149+
// support new Typo3 v9.2 Site Handling until middleware concept is implemented
150+
// see https://github.com/cundd/rest/issues/59
151+
if (isset($GLOBALS['TYPO3_REQUEST']) && class_exists(SiteMatcher::class)) {
152+
$request = $GLOBALS['TYPO3_REQUEST'];
153+
154+
/** @var SiteRouteResult $routeResult */
155+
$routeResult = GeneralUtility::makeInstance(SiteMatcher::class)->matchRequest($request);
156+
157+
$language = $routeResult->getLanguage();
158+
159+
$request = $request->withAttribute('site', $routeResult->getSite());
160+
$request = $request->withAttribute('language', $language);
161+
$request = $request->withAttribute('routing', $routeResult);
162+
163+
$GLOBALS['TYPO3_REQUEST'] = $request;
164+
165+
// Set language if defined
166+
$requestedLanguageUid = ($language && $language->getLanguageId() !== null)
167+
? $language->getLanguageId()
168+
: $this->getRequestedLanguageUid($frontendController);
169+
} else {
170+
$requestedLanguageUid = GeneralUtility::_GP('L') !== null
171+
? intval(GeneralUtility::_GP('L'))
172+
: $this->getRequestedLanguageUid($frontendController);
173+
}
150174

151175
if (null !== $requestedLanguageUid) {
152176
$frontendController->config['config']['sys_language_uid'] = $requestedLanguageUid;

0 commit comments

Comments
 (0)