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.         //add url acquisition
  26.         $utmArray['url'] = $request->getPathInfo();
  27.         $this->utms $utmArray;
  28.     }
  29.     public function storeUtm(Request $requestResponse $response)
  30.     {
  31.         if (!empty($this->utms)) {
  32.             $response->headers->setCookie(new Cookie('utm'json_encode($this->utms), strtotime('now + 1 year')));
  33.         }
  34.     }
  35.     public function getUtms()
  36.     {
  37.         return $this->utms;
  38.     }
  39.     /* force UTM (used by API)*/
  40.     public function setUtms(array $utms)
  41.     {
  42.         $this->utms=$utms;
  43.         return $this;
  44.     }
  45.     public function getUtmSource()
  46.     {
  47.         return isset($this->utms['source']) ? $this->utms['source'] : null;
  48.     }
  49.     public function getUtmContent()
  50.     {
  51.         return isset($this->utms['content']) ? $this->utms['content'] : null;
  52.     }
  53.     public function getUtmKeyword()
  54.     {
  55.         return isset($this->utms['keyword']) ? $this->utms['keyword'] : null;
  56.     }
  57.     public function getUtmUrl()
  58.     {
  59.         return isset($this->utms['url']) ? $this->utms['url'] : null;
  60.     }
  61. }