Copied unchanged from public/typo3conf/ext/ of EP/website at 9593cc8631354f8a363d6609de8b7433f669a9a0 (Git-tracked files only). History stays in the old repository. Only composer.json files are added so the extensions install as path packages. Co-Authored-By: Claude Opus 5.5 <[email protected]>
44 lines
1.3 KiB
PHP
44 lines
1.3 KiB
PHP
<?php
|
|
|
|
namespace EP\EpTheme\Middleware;
|
|
|
|
use Psr\Http\Message\ResponseInterface;
|
|
use Psr\Http\Message\ServerRequestInterface;
|
|
use Psr\Http\Server\MiddlewareInterface;
|
|
use Psr\Http\Server\RequestHandlerInterface;
|
|
use TYPO3\CMS\Core\Exception\SiteNotFoundException;
|
|
use TYPO3\CMS\Core\Site\SiteFinder;
|
|
use TYPO3\CMS\Core\Utility\GeneralUtility;
|
|
|
|
class ReferrerMiddleware implements MiddlewareInterface
|
|
{
|
|
public function process(ServerRequestInterface $request, RequestHandlerInterface $handler): ResponseInterface
|
|
{
|
|
$queryParams = $request->getQueryParams();
|
|
|
|
if (!array_key_exists('ref', $queryParams)) {
|
|
return $handler->handle($request);
|
|
}
|
|
|
|
$ref = $queryParams['ref'];
|
|
|
|
if (false === is_numeric($ref)) {
|
|
return $handler->handle($request);
|
|
}
|
|
|
|
/** @var SiteFinder $siteFinder */
|
|
$siteFinder = GeneralUtility::makeInstance(SiteFinder::class);
|
|
|
|
try {
|
|
$site = $siteFinder->getSiteByPageId((int) $ref);
|
|
$url = $site->getRouter()->generateUri($ref);
|
|
$GLOBALS['TSFE']->fe_user->setKey('ses', 'referrer', $url);
|
|
$GLOBALS['TSFE']->fe_user->storeSessionData();
|
|
}
|
|
catch (SiteNotFoundException $exception) {
|
|
}
|
|
|
|
return $handler->handle($request);
|
|
}
|
|
}
|