From 7f24f1d65fd5bfd16ffeeaf8b687524923dd66e9 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Fromme?= Date: Fri, 23 Aug 2024 09:18:05 +0200 Subject: [PATCH] feat: replace cookie to store tracking code with native php session --- .../Controller/AjaxTableController.php | 7 --- .../Classes/Utility/BookingUrlUtility.php | 28 +++++---- .../Classes/Utility/CookieUtility.php | 60 ------------------- .../DataProcessing/ContextProcessor.php | 3 - .../Classes/Middleware/TrackingMiddleware.php | 14 ++++- 5 files changed, 27 insertions(+), 85 deletions(-) delete mode 100644 public/typo3conf/ext/ep_products/Classes/Utility/CookieUtility.php diff --git a/public/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php b/public/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php index 68363b55..a3baad66 100644 --- a/public/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php +++ b/public/typo3conf/ext/ep_products/Classes/Controller/AjaxTableController.php @@ -281,13 +281,6 @@ class AjaxTableController extends ActionController */ public function pricetableHtmlAction(Product $product, Hotel $hotel, string $bpnBookingUrlTemplateCode = null): void { -// Disabled, not working anyways, reseller subdomains are not registered since TYPO3 10.* -// if ($reseller = $this->resellerDataService->getResellerForCurrentDomain()) { -// $paCode = $reseller['paCode']; -// } else { -// $paCode = null; -// } - $nonBookableInfo = $this->getNonBookableInfobox($product); $priceTable = $this->dateService->getPriceTable([ diff --git a/public/typo3conf/ext/ep_products/Classes/Utility/BookingUrlUtility.php b/public/typo3conf/ext/ep_products/Classes/Utility/BookingUrlUtility.php index 0fafb714..c8d56d02 100644 --- a/public/typo3conf/ext/ep_products/Classes/Utility/BookingUrlUtility.php +++ b/public/typo3conf/ext/ep_products/Classes/Utility/BookingUrlUtility.php @@ -57,22 +57,17 @@ class BookingUrlUtility $query = static::buildQuery($bookingId, $hotelId, $dateEnd, $template, $isDayTrip); - $epCookie = CookieUtility::getPaCookie(); - - if (isset($_COOKIE[static::COOKIE_NAME])) { - if (!preg_match('/^([a-z]{4}|PA)\d{3,4}$/', $_COOKIE[static::COOKIE_NAME])) { - setcookie(static::COOKIE_NAME, '', time() - 3600); - unset($_COOKIE[static::COOKIE_NAME]); - } else { - $epCookie = $_COOKIE[static::COOKIE_NAME]; - } + if ('' === session_id()) { + session_start(); } + $trackingCode = $_SESSION['ep_trk'] ?? null; + if (null !== $paCode) { $query['agenturcode'] = $paCode; - } elseif ($epCookie) { - $queryParameter = CookieUtility::getQueryParameter($epCookie); - $query[$queryParameter] = $epCookie; + } elseif (null !== $trackingCode) { + $queryParameter = static::getQueryParameter($trackingCode); + $query[$queryParameter] = $trackingCode; } return static::buildUrl($query); @@ -139,4 +134,13 @@ class BookingUrlUtility return $site->getBase() . '/buchung/maske_buchung.php?' . http_build_query($query); } + + protected static function getQueryParameter($code) + { + if (!preg_match('/^PA\d{3,4}$/', $code)) { + return 'crminfo'; + } + + return 'agenturcode'; + } } diff --git a/public/typo3conf/ext/ep_products/Classes/Utility/CookieUtility.php b/public/typo3conf/ext/ep_products/Classes/Utility/CookieUtility.php deleted file mode 100644 index 43a12558..00000000 --- a/public/typo3conf/ext/ep_products/Classes/Utility/CookieUtility.php +++ /dev/null @@ -1,60 +0,0 @@ -add(new \DateInterval('P' . static::COOKIETTL_TRK . 'D')); - setcookie( - static::COOKIENAME_TRK, - strtoupper($code), - $expiratonDate->getTimestamp(), - '/' - ); - } -} diff --git a/public/typo3conf/ext/ep_theme/Classes/DataProcessing/ContextProcessor.php b/public/typo3conf/ext/ep_theme/Classes/DataProcessing/ContextProcessor.php index 67b45294..52d5d52e 100644 --- a/public/typo3conf/ext/ep_theme/Classes/DataProcessing/ContextProcessor.php +++ b/public/typo3conf/ext/ep_theme/Classes/DataProcessing/ContextProcessor.php @@ -64,9 +64,6 @@ class ContextProcessor implements DataProcessorInterface } if ($data['tx_eptheme_context_pacode']) { $processedData['context']['paCode'] = $data['tx_eptheme_context_pacode']; -// Disabled, not working anyways, reseller subdomains are not registered since TYPO3 10.* -// } elseif ($resellerData = $this->getResellerData()) { -// $processedData['context']['paCode'] = $resellerData['paCode']; } elseif ($paCode = $this->getPaCodeFromRequest()) { $processedData['context']['paCode'] = $paCode; } diff --git a/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php b/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php index b4fc8007..32530d66 100644 --- a/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php +++ b/public/typo3conf/ext/ep_track/Classes/Middleware/TrackingMiddleware.php @@ -29,7 +29,6 @@ namespace EP\EpTrack\Middleware; use Doctrine\DBAL\DBALException; use EP\EpProducts\Traits\DbConnectionTrait; -use EP\EpProducts\Utility\CookieUtility; use Exception; use Psr\Http\Message\ResponseInterface; use Psr\Http\Message\ServerRequestInterface; @@ -102,7 +101,7 @@ class TrackingMiddleware implements MiddlewareInterface $trackingCode = $redirect['tracking_code']; if (!empty($trackingCode)) { - CookieUtility::setPaCookie($trackingCode); + $this->saveTrackingCodeToSession($trackingCode); } $targetPage = $redirect['target_page_uid']; @@ -159,7 +158,7 @@ class TrackingMiddleware implements MiddlewareInterface $urlItems = GeneralUtility::trimExplode('/', $path, true); $code = array_pop($urlItems); - CookieUtility::setPaCookie($code); + $this->saveTrackingCodeToSession($code); $uri = '/'; if (count($urlItems) > 0) { $uri = '/' . implode('/', $urlItems) . '/'; @@ -170,4 +169,13 @@ class TrackingMiddleware implements MiddlewareInterface return $uri; } + + private function saveTrackingCodeToSession(string $trackingCode) + { + if ('' === session_id()) { + session_start(); + } + + $_SESSION['ep_trk'] = $trackingCode; + } }