SiteMatcher.php 1.5 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546
  1. <?php
  2. namespace Opentalent\OtOptimizer\XClass\Routing;
  3. use Opentalent\OtCore\Website\OtWebsiteRepository;
  4. use Psr\Http\Message\ServerRequestInterface;
  5. use TYPO3\CMS\Core\Routing\SiteRouteResult;
  6. use TYPO3\CMS\Core\Utility\GeneralUtility;
  7. use TYPO3\CMS\Extbase\Object\ObjectManager;
  8. /**
  9. * Hooks into the frontend request and use the index table to resolve a page uid
  10. *
  11. * @internal
  12. */
  13. class SiteMatcher extends \TYPO3\CMS\Core\Routing\SiteMatcher
  14. {
  15. /**
  16. * Override the default Typo3 \TYPO3\CMS\Core\Routing\SiteMatcher
  17. *
  18. * @param ServerRequestInterface $request
  19. * @return \TYPO3\CMS\Core\Routing\RouteResultInterface
  20. * @throws \Opentalent\OtCore\Exception\NoSuchWebsiteException
  21. */
  22. public function matchRequest(ServerRequestInterface $request): \TYPO3\CMS\Core\Routing\RouteResultInterface
  23. {
  24. if (!$_COOKIE['optimize'] == 1) {
  25. return parent::matchRequest($request);
  26. }
  27. $devMode = $_SERVER['TYPO3_CONTEXT'] == "Development";
  28. $otWebsiteRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtWebsiteRepository::class);
  29. $site = $otWebsiteRepository->matchUriToWebsite($request->getUri(), $devMode);
  30. if ($devMode) {
  31. preg_match("/\w+\/(.*)/", $request->getUri()->getPath(), $m);
  32. $tail = $m[1] ?? "";
  33. } else {
  34. $tail = $request->getUri()->getPath();
  35. }
  36. $language = $site->getDefaultLanguage();
  37. return new SiteRouteResult($request->getUri(), $site, $language, $tail);
  38. }
  39. }