| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- <?php
- namespace Opentalent\OtOptimizer\Routing;
- use Opentalent\OtCore\Website\OtWebsiteRepository;
- use Psr\Http\Message\ServerRequestInterface;
- use TYPO3\CMS\Core\Routing\SiteRouteResult;
- use TYPO3\CMS\Core\Site\SiteFinder;
- use TYPO3\CMS\Core\Utility\GeneralUtility;
- use TYPO3\CMS\Extbase\Object\ObjectManager;
- /**
- * Hooks into the frontend request and use the ot_websites table to resolve the site configuration
- * (frontend only)
- *
- * @internal
- */
- class SiteMatcher extends \TYPO3\CMS\Core\Routing\SiteMatcher
- {
- public function __construct($finder = null)
- {
- }
- /**
- * Override the default Typo3 \TYPO3\CMS\Core\Routing\SiteMatcher
- *
- * @param ServerRequestInterface $request
- * @return \TYPO3\CMS\Core\Routing\RouteResultInterface
- * @throws \Opentalent\OtCore\Exception\NoSuchWebsiteException
- */
- public function matchRequest(ServerRequestInterface $request): \TYPO3\CMS\Core\Routing\RouteResultInterface
- {
- $devMode = $_SERVER['TYPO3_CONTEXT'] == "Development";
- $otWebsiteRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtWebsiteRepository::class);
- $otWebsite = $otWebsiteRepository->matchUriToWebsite($request->getUri(), $devMode);
- $site = $otWebsiteRepository->generateWebsiteConfiguration($otWebsite);
- if ($devMode) {
- preg_match("/\w+\/(.*)/", $request->getUri()->getPath(), $m);
- $tail = $m[1] ?? "";
- } else {
- $tail = rtrim($request->getUri()->getPath(), '/');
- }
- $language = $site->getDefaultLanguage();
- return new SiteRouteResult($request->getUri(), $site, $language, $tail);
- }
- }
|