src/Service/UtmManager.php line 18

Open in your IDE?
  1. <?php
  2. namespace App\Service;
  3. use Symfony\Component\HttpFoundation\Cookie;
  4. use Symfony\Component\HttpFoundation\Request;
  5. use Symfony\Component\HttpFoundation\Response;
  6. class UtmManager
  7. {
  8.     private $utms;
  9.     public function loadUtm(Request $request)
  10.     {
  11.         $utmArray $request->cookies->get('utm', []);
  12.         if (is_string($utmArray)) {
  13.             $utmArray json_decode($utmArraytrue);
  14.         }
  15.         $this->utms $utmArray;
  16.     }
  17.     public function updateUtm(Request $request)
  18.     {
  19.         $utmArray = [];
  20.         foreach (['source''content''keyword'] as $key) {
  21.             if ($request->query->has('utm_' $key)) {
  22.                 $utmArray[$key] = preg_replace('/[^-a-zA-Z0-9_]/'''$request->query->get('utm_' $key));
  23.             }
  24.         }
  25.         // MCA-784: Capture du paramètre delivered_id pour force delivery
  26.         if ($request->query->has('delivered_id')) {
  27.             $deliveredId $request->query->get('delivered_id');
  28.             // Validation : IDs numériques séparés par virgules
  29.             if (preg_match('/^[0-9]+(,[0-9]+)*$/'$deliveredId)) {
  30.                 $utmArray['delivered_id'] = $deliveredId;
  31.             }
  32.         }
  33.         //add url acquisition
  34.         $utmArray['url'] = $request->getPathInfo();
  35.         $this->utms $utmArray;
  36.     }
  37.     public function storeUtm(Request $requestResponse $response)
  38.     {
  39.         if (!empty($this->utms)) {
  40.             $response->headers->setCookie(new Cookie('utm'json_encode($this->utms), strtotime('now + 1 year')));
  41.         }
  42.     }
  43.     public function getUtms()
  44.     {
  45.         return $this->utms;
  46.     }
  47.     /* force UTM (used by API)*/
  48.     public function setUtms(array $utms)
  49.     {
  50.         $this->utms=$utms;
  51.         return $this;
  52.     }
  53.     public function getUtmSource()
  54.     {
  55.         return isset($this->utms['source']) ? $this->utms['source'] : null;
  56.     }
  57.     public function getUtmContent()
  58.     {
  59.         return isset($this->utms['content']) ? $this->utms['content'] : null;
  60.     }
  61.     public function getUtmKeyword()
  62.     {
  63.         return isset($this->utms['keyword']) ? $this->utms['keyword'] : null;
  64.     }
  65.     public function getUtmUrl()
  66.     {
  67.         return isset($this->utms['url']) ? $this->utms['url'] : null;
  68.     }
  69.     /**
  70.      * MCA-784: Récupère le paramètre delivered_id pour force delivery
  71.      * @return string|null IDs d'administrateurs séparés par virgule (ex: "123,456")
  72.      */
  73.     public function getDeliveredId()
  74.     {
  75.         return isset($this->utms['delivered_id']) ? $this->utms['delivered_id'] : null;
  76.     }
  77. }