|
5 | 5 |
|
6 | 6 | use TYPO3\CMS\Core\TimeTracker\TimeTracker; |
7 | 7 | use TYPO3\CMS\Core\Utility\GeneralUtility; |
| 8 | +use TYPO3\CMS\Core\Routing\SiteMatcher; |
| 9 | +use TYPO3\CMS\Core\Routing\SiteRouteResult; |
8 | 10 | use TYPO3\CMS\Extbase\Object\ObjectManager; |
9 | 11 | use TYPO3\CMS\Frontend\Controller\TypoScriptFrontendController; |
10 | 12 | use TYPO3\CMS\Frontend\Utility\EidUtility; |
11 | 13 | use TYPO3\CMS\Lang\LanguageService; |
12 | 14 |
|
| 15 | + |
13 | 16 | /** |
14 | 17 | * Class to bootstrap TYPO3 frontend controller |
15 | 18 | */ |
@@ -143,10 +146,31 @@ private function configureFrontendController($frontendController) |
143 | 146 | */ |
144 | 147 | private function setRequestedLanguage(TypoScriptFrontendController $frontendController) |
145 | 148 | { |
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 | + } |
150 | 174 |
|
151 | 175 | if (null !== $requestedLanguageUid) { |
152 | 176 | $frontendController->config['config']['sys_language_uid'] = $requestedLanguageUid; |
|
0 commit comments