From 0a0788d360c8086f95f4a955f628eb6b287e1211 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bjo=CC=88rn=20Fromme?= Date: Wed, 8 Sep 2021 11:49:46 +0200 Subject: [PATCH] Make ep-track middleware failure-tolerant --- .../Classes/Middleware/TrackingMiddleware.php | 18 +++++++++++++++++- 1 file changed, 17 insertions(+), 1 deletion(-) diff --git a/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php b/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php index 0ab3839f..b21c408d 100644 --- a/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php +++ b/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php @@ -35,6 +35,7 @@ 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\Http\NormalizedParams; use TYPO3\CMS\Core\Http\RedirectResponse; use TYPO3\CMS\Core\Site\SiteFinder; @@ -107,9 +108,24 @@ class TrackingMiddleware implements MiddlewareInterface $targetPage = $redirect['target_page_uid']; $responseCode = $redirect['response_code']; + // Fallback for old t3:// links + if (1 === preg_match('/^t3:\/\/page\?uid=(\d+)$/', $targetPage, $matches)) { + $targetPage = $matches[1]; + } + + // Skip redirecting of non-numeric page uids like full urls + if (false === is_numeric($targetPage)) { + return null; + } + /** @var SiteFinder $siteFinder */ $siteFinder = GeneralUtility::makeInstance(SiteFinder::class); - $site = $siteFinder->getSiteByPageId($targetPage); + try { + $site = $siteFinder->getSiteByPageId((int)$targetPage); + } + catch (SiteNotFoundException $exception) { + return null; + } $params = [];