|
@@ -1,14 +1,15 @@
|
|
|
<?php
|
|
<?php
|
|
|
declare(strict_types = 1);
|
|
declare(strict_types = 1);
|
|
|
-namespace Opentalent\OtOptimizer\XClass\Frontend\Middleware;
|
|
|
|
|
|
|
+namespace Opentalent\OtCore\Middleware\Frontend;
|
|
|
|
|
|
|
|
use Opentalent\OtCore\Exception\NoSuchWebsiteException;
|
|
use Opentalent\OtCore\Exception\NoSuchWebsiteException;
|
|
|
-use Opentalent\OtOptimizer\Routing\SiteMatcher;
|
|
|
|
|
|
|
+use Opentalent\OtCore\Website\OtWebsiteRepository;
|
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Psr\Http\Message\ResponseInterface;
|
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
|
use Psr\Http\Server\RequestHandlerInterface;
|
|
use Psr\Http\Server\RequestHandlerInterface;
|
|
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
|
|
use TYPO3\CMS\Extbase\Object\ObjectManager;
|
|
use TYPO3\CMS\Extbase\Object\ObjectManager;
|
|
|
|
|
+use TYPO3\CMS\Core\Routing\SiteRouteResult;
|
|
|
use TYPO3\CMS\Frontend\Controller\ErrorController;
|
|
use TYPO3\CMS\Frontend\Controller\ErrorController;
|
|
|
use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons;
|
|
use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons;
|
|
|
|
|
|
|
@@ -17,17 +18,6 @@ use TYPO3\CMS\Frontend\Page\PageAccessFailureReasons;
|
|
|
*/
|
|
*/
|
|
|
class OtSiteResolver extends \TYPO3\CMS\Frontend\Middleware\SiteResolver
|
|
class OtSiteResolver extends \TYPO3\CMS\Frontend\Middleware\SiteResolver
|
|
|
{
|
|
{
|
|
|
- private bool $shallFallback;
|
|
|
|
|
-
|
|
|
|
|
- public function __construct($matcher = null)
|
|
|
|
|
- {
|
|
|
|
|
- $this->shallFallback = $_COOKIE['optimize'] != 1 && $_SERVER['TYPO3_OPTIMIZE'] != 1;
|
|
|
|
|
-
|
|
|
|
|
- if ($this->shallFallback) {
|
|
|
|
|
- parent::__construct($matcher);
|
|
|
|
|
- }
|
|
|
|
|
- }
|
|
|
|
|
-
|
|
|
|
|
/**
|
|
/**
|
|
|
* Resolve the site/language information by checking the page ID or the URL.
|
|
* Resolve the site/language information by checking the page ID or the URL.
|
|
|
*
|
|
*
|
|
@@ -37,13 +27,20 @@ class OtSiteResolver extends \TYPO3\CMS\Frontend\Middleware\SiteResolver
|
|
|
*/
|
|
*/
|
|
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
|
|
{
|
|
{
|
|
|
- if ($this->shallFallback) {
|
|
|
|
|
- return parent::process($request, $handler);
|
|
|
|
|
- }
|
|
|
|
|
|
|
+ $otWebsiteRepository = GeneralUtility::makeInstance(ObjectManager::class)->get(OtWebsiteRepository::class);
|
|
|
|
|
|
|
|
- $matcher = GeneralUtility::makeInstance(ObjectManager::class)->get(SiteMatcher::class);
|
|
|
|
|
try {
|
|
try {
|
|
|
- $routeResult = $matcher->matchRequest($request);
|
|
|
|
|
|
|
+ $devMode = $_SERVER['TYPO3_CONTEXT'] == "Development";
|
|
|
|
|
+
|
|
|
|
|
+ $otWebsite = $otWebsiteRepository->matchUriToWebsite($request->getUri(), $devMode);
|
|
|
|
|
+ $site = $otWebsiteRepository->generateWebsiteConfiguration($otWebsite);
|
|
|
|
|
+ $language = $site->getDefaultLanguage();
|
|
|
|
|
+ if ($devMode) {
|
|
|
|
|
+ preg_match("/\w+\/(.*)/", $request->getUri()->getPath(), $m);
|
|
|
|
|
+ $tail = $m[1] ?? "";
|
|
|
|
|
+ } else {
|
|
|
|
|
+ $tail = rtrim($request->getUri()->getPath(), '/');
|
|
|
|
|
+ }
|
|
|
} catch (NoSuchWebsiteException $e) {
|
|
} catch (NoSuchWebsiteException $e) {
|
|
|
return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
|
|
return GeneralUtility::makeInstance(ErrorController::class)->pageNotFoundAction(
|
|
|
$request,
|
|
$request,
|
|
@@ -52,6 +49,9 @@ class OtSiteResolver extends \TYPO3\CMS\Frontend\Middleware\SiteResolver
|
|
|
);
|
|
);
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ $routeResult = new SiteRouteResult($request->getUri(), $site, $language, $tail);
|
|
|
|
|
+
|
|
|
|
|
+ $request = $request->withAttribute('ot_website', $otWebsite);
|
|
|
$request = $request->withAttribute('site', $routeResult->getSite());
|
|
$request = $request->withAttribute('site', $routeResult->getSite());
|
|
|
$request = $request->withAttribute('language', $routeResult->getLanguage());
|
|
$request = $request->withAttribute('language', $routeResult->getLanguage());
|
|
|
$request = $request->withAttribute('routing', $routeResult);
|
|
$request = $request->withAttribute('routing', $routeResult);
|