src/Application/Service/Session/SessionService.php line 144

Open in your IDE?
  1. <?php
  2. namespace App\Application\Service\Session;
  3. use App\Manager\System\CustomerManager;
  4. use App\Manager\System\LanguageManager;
  5. use Symfony\Component\DependencyInjection\ParameterBag\ParameterBagInterface;
  6. use Symfony\Component\HttpFoundation\RequestStack;
  7. class SessionService
  8. {
  9.     public const ALLOWED_CATALOGS_KEY 'allowedCatalogs';
  10.     private RequestStack $requestStack;
  11.     private LanguageManager $languageManager;
  12.     private ParameterBagInterface $parameterBag;
  13.     private CustomerManager $customerManager;
  14.     public function __construct(
  15.         RequestStack $requestStack,
  16.         LanguageManager $languageManager,
  17.         ParameterBagInterface $parameterBag,
  18.         CustomerManager $customerManager
  19.     ) {
  20.         $this->requestStack $requestStack;
  21.         $this->languageManager $languageManager;
  22.         $this->parameterBag $parameterBag;
  23.         $this->customerManager $customerManager;
  24.     }
  25.     // @phpstan-ignore-next-line
  26.     public function set(string $key$value): bool
  27.     {
  28.         if (!empty($key)) {
  29.             try {
  30.                 $this->requestStack->getSession()->set($key$value);
  31.             } catch (\Exception $e) {
  32.                 if ($key === 'id_lang' || $key === 'lang') {
  33.                     \Sentry\captureException($e);
  34.                 }
  35.             }
  36.             return true;
  37.         }
  38.         return false;
  39.     }
  40.     /**
  41.      * @param bool|int|string $default
  42.      */
  43.     // @phpstan-ignore-next-line
  44.     public function get(string $key$default falsebool $delete false)
  45.     {
  46.         try {
  47.             $value $this->requestStack->getSession()->get($key$default);
  48.         } catch (\Exception $e) {
  49.             \Sentry\captureException($e);
  50.             $value $default;
  51.         }
  52.         if ($delete) {
  53.             try {
  54.                 $this->requestStack->getSession()->remove($key);
  55.             } catch (\Exception $e) {
  56.                 \Sentry\captureException($e);
  57.             }
  58.         }
  59.         return $value;
  60.     }
  61.     public function deleteSessionsMultipleOrders(): void
  62.     {
  63.         $this->delete('carts_pendings');
  64.         $this->delete('payment_card');
  65.         $this->delete('parameters_order');
  66.         $this->delete('parameters_multiple_orders');
  67.         $this->delete('carts_pendings_first');
  68.     }
  69.     public function delete(string $key): void
  70.     {
  71.         try {
  72.             $this->requestStack->getSession()->remove($key);
  73.         } catch (\Exception $e) {
  74.         }
  75.     }
  76.     public function setLocale(string $locale): void
  77.     {
  78.         if (!\in_array($locale$this->parameterBag->get('locales'), true)) {
  79.             return;
  80.         }
  81.         $this->set('lang'$locale);
  82.     }
  83.     public function getLocale(): string
  84.     {
  85.         return $this->get('lang');
  86.     }
  87.     public function getLocaleId(): int
  88.     {
  89.         return $this->get('id_lang');
  90.     }
  91.     public function setLocaleId(int $languageId): void
  92.     {
  93.         $language $this->languageManager->findOneById($languageId);
  94.         if (!$language || !\in_array($language->getIsoCode(), $this->parameterBag->get('locales'), true)) {
  95.             return;
  96.         }
  97.         $this->set('id_lang'$language->getId());
  98.     }
  99.     public function setCustomerLang(int $customerId): void
  100.     {
  101.         $customer $this->customerManager->getOneById($customerId);
  102.         $this->setLocaleParameters($customer->getLanguage()->getIsoCode());
  103.     }
  104.     public function setLocaleParameters(string $locale): void
  105.     {
  106.         $language $this->languageManager->findOneByIsoCode($locale);
  107.         if (!$language || !\in_array($language->getIsoCode(), $this->parameterBag->get('locales'), true)) {
  108.             return;
  109.         }
  110.         $this->setLocaleId($language->getId());
  111.         $this->set('date_format_lite'$language->getDateFormatLite());
  112.         $this->set('date_format_full'$language->getDateFormatFull());
  113.         $this->set('currency_format'$language->getCurrencyFormat());
  114.         $this->setLocale($language->getIsoCode());
  115.     }
  116.     public function deleteFlashData(): void
  117.     {
  118.         if ($this->requestStack->getSession()->get('__flashdata')) {
  119.             $flashdata_vars $this->requestStack->getSession()->get('__flashdata');
  120.             $this->requestStack->getSession()->remove('__flashdata');
  121.             foreach ($flashdata_vars as $value) {
  122.                 $this->requestStack->getSession()->remove('__flashdata');
  123.             }
  124.             unset($flashdata_vars);
  125.         }
  126.     }
  127. }