Make ep-track middleware failure-tolerant
This commit is contained in:
@@ -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 = [];
|
||||
|
||||
|
||||
Reference in New Issue
Block a user