From 79cee8a50c3ddbc02fe0f3e1875db8bac906e655 Mon Sep 17 00:00:00 2001 From: Matthias Vogel Date: Tue, 18 Aug 2026 12:15:17 +0200 Subject: [PATCH] [TASK] better request handling add url even if $GLOBALS['TYPO3_REQUEST'] is not set. add request_type=request if no applicationType can be found. add possibility for request_type=install to the event handling. fixes #121 --- Classes/Integration/Typo3Integration.php | 27 ++++++++++++++++-------- 1 file changed, 18 insertions(+), 9 deletions(-) diff --git a/Classes/Integration/Typo3Integration.php b/Classes/Integration/Typo3Integration.php index 664ae87..f5e89b8 100644 --- a/Classes/Integration/Typo3Integration.php +++ b/Classes/Integration/Typo3Integration.php @@ -11,6 +11,7 @@ use Sentry\State\Scope; use TYPO3\CMS\Core\Core\Environment; use TYPO3\CMS\Core\Http\ApplicationType; +use TYPO3\CMS\Core\Http\ServerRequestFactory; use TYPO3\CMS\Core\Information\Typo3Version; final class Typo3Integration implements IntegrationInterface @@ -38,14 +39,9 @@ private function processEvent(Event $event): void { $request = $this->getServerRequest(); if ($request instanceof ServerRequestInterface) { - if (ApplicationType::fromRequest($GLOBALS['TYPO3_REQUEST'])->isFrontend()) { - $event->setTag('request_type', 'frontend'); - $this->setUrl($event, $request); - } elseif (ApplicationType::fromRequest($GLOBALS['TYPO3_REQUEST'])->isBackend()) { - $event->setTag('request_type', 'backend'); - $this->setUrl($event, $request); - } - } elseif (Environment::isCli()) { + $this->setUrl($event, $request); + $event->setTag('request_type', $this->getRequestType($request)); + } else { $event->setTag('request_type', 'cli'); } @@ -66,6 +62,19 @@ protected function setUrl(Event $event, ServerRequestInterface $request): void protected function getServerRequest(): ?ServerRequestInterface { - return $GLOBALS['TYPO3_REQUEST'] ?? null; + if (Environment::isCli()) { + return null; + } + return $GLOBALS['TYPO3_REQUEST'] ?? ServerRequestFactory::fromGlobals(); + } + + private function getRequestType(ServerRequestInterface $request): string + { + try { + return ApplicationType::fromRequest($request)->value; + } catch (\RuntimeException $e) { + // ignore missing application type + return 'request'; + } } }