src/AtechNet/CoreBundle/Helper/Furbify/MultiStore.php line 153

Open in your IDE?
  1. <?php
  2. namespace App\AtechNet\CoreBundle\Helper\Furbify;
  3. use App\AtechNet\CoreBundle\Entity\Domain;
  4. use App\AtechNet\CoreBundle\Entity\Language;
  5. use Doctrine\Persistence\ObjectManager;
  6. use Symfony\Component\HttpFoundation\Request;
  7. class MultiStore
  8. {
  9.     public const CUSTOMER_TYPE_RETAIL = 1;
  10.     public const CUSTOMER_TYPE_WHOLESALE = 2;
  11.     public const GUEST_CUSTOMER_ID_SK = 29548;
  12.     public const GUEST_CUSTOMER_ID_HU = 29549;
  13.     public const GUEST_CUSTOMER_ID_CZ = 32742;
  14.     public const MINIMAL_LOAN_CETELEM_SK = 100;
  15.     public const MINIMAL_LOAN_CETELEM_HU = 10000;
  16.     public const MINIMAL_LOAN_QUATRO = 110;
  17.     public const BASE_PRICE_GROSS = 'gross';
  18.     public const BASE_PRICE_NET = 'net';
  19.     private $entityManager;
  20.     private $domainId;
  21.     private $languageId;
  22.     private $localeDomainId;
  23.     private $customerTypeId;
  24.     private $defaultCountry;
  25.     private $defaultLanguageId;
  26.     private $defaultLocale;
  27.     private $basePrice;
  28.     private $languageSwitched = false;
  29.     /**
  30.      * @param ObjectManager $entityManager
  31.      * @param Request $request
  32.      */
  33.     public function __construct(ObjectManager $entityManager, Request $request)
  34.     {
  35.         $this->entityManager = $entityManager;
  36.         $this->customerTypeId = self::CUSTOMER_TYPE_RETAIL;
  37.         if ($request->getSession()->has('customerTypeId')) {
  38.             $this->customerTypeId = (int)$request->getSession()->get('customerTypeId');
  39.         }
  40.         $this->domainId = 0;
  41.         if ($request->getSession()->has('domainId')) {
  42.             $this->domainId = (int)$request->getSession()->get('domainId');
  43.         }
  44.         $this->languageId = 0;
  45.         if ($request->getSession()->has('languageId')) {
  46.             $this->languageId = (int)$request->getSession()->get('languageId');
  47.         }
  48.         $this->localeDomainId = 0;
  49.         if ($request->getSession()->has('localeDomainId')) {
  50.             $this->localeDomainId = (int)$request->getSession()->get('localeDomainId');
  51.         }
  52.         $this->defaultCountry = '';
  53.         if ($request->getSession()->has('defaultCountry')) {
  54.             $this->defaultCountry = $request->getSession()->get('defaultCountry');
  55.         }
  56.         $this->defaultLanguageId = '';
  57.         if ($request->getSession()->has('defaultLanguageId')) {
  58.             $this->defaultLanguageId = $request->getSession()->get('defaultLanguageId');
  59.         }
  60.         $this->defaultLocale = '';
  61.         if ($request->getSession()->has('defaultLocale')) {
  62.             $this->defaultLocale = $request->getSession()->get('defaultLocale');
  63.         }
  64.         $this->basePrice = 'gross';
  65.         if ($request->getSession()->has('basePrice')) {
  66.             $this->basePrice = $request->getSession()->get('basePrice');
  67.         }
  68.         //-> Switch Language
  69.         // Parts of URL
  70.         if (!is_null($request->get('slug'))) {
  71.             $parts = explode('/', $request->get('slug'));
  72.         } else {
  73.             $parts = explode('/', ltrim($request->getPathInfo(), '/'));
  74.         }
  75.         // Language Code
  76.         $languageCode = array_shift($parts);
  77.         // Language
  78.         if (in_array($languageCode, Language::SWITCHABLE_LANGUAGE_CODES)) {
  79.             $language = $this->entityManager->getRepository(Language::class)->findOneByCode($languageCode);
  80.             if ($language) {
  81.                 $request->getSession()->set('languageId', $language->getId());
  82.                 $request->getSession()->set('_locale', $language->getCode());
  83.                 $request->setLocale($language->getCode());
  84.                 $this->languageId = (int)$request->getSession()->get('languageId');
  85.                 MultiStore::setLocalDomain($request);
  86.             }
  87.         }
  88.         // State
  89.         if ($this->languageId !== $this->defaultLanguageId) {
  90.             $this->languageSwitched = true;
  91.         }
  92.         //<- Switched Language
  93.     }
  94.     /**
  95.      * @return int
  96.      */
  97.     public function getDomainId(): int
  98.     {
  99.         return $this->domainId;
  100.     }
  101.     /**
  102.      * @return null|Domain
  103.      */
  104.     public function getDomain(): ?Domain
  105.     {
  106.         return $this->entityManager->getRepository(Domain::class)->findOneById($this->domainId);
  107.     }
  108.     /**
  109.      * @param Request $request
  110.      */
  111.     public static function setDomain(Request $request)
  112.     {
  113.         $request->getSession()->set(
  114.             'domainId',
  115.             self::defineDomainId($request->getSession()->get('customerTypeId'), $request->getHost())
  116.         );
  117.     }
  118.     /**
  119.      * @param int $customerType
  120.      * @param string $host
  121.      * @return int
  122.      */
  123.     public static function defineDomainId($customerType, $host)
  124.     {
  125.         if ($customerType == self::CUSTOMER_TYPE_RETAIL) {
  126.             switch ($host) {
  127.                 case 'furbify':
  128.                 case 'furbify.sk':
  129.                 case 'www.furbify.sk':
  130.                 case 'furbify.dev.sk':
  131.                 case 'www.furbify.dev.sk':
  132.                 case 'dev66.furbify.sk':
  133.                 case 'www.dev66.furbify.sk':
  134.                 case 'furbify-staging.lacne-pc.sk':
  135.                 case 'lacne-pc.sk':
  136.                 case 'localhost':
  137.                     $domainId = Domain::DOMAIN_ID_RT_SK;
  138.                     break;
  139.                 case 'furbify.hu':
  140.                 case 'www.furbify.hu':
  141.                 case 'furbify.dev.hu':
  142.                 case 'www.furbify.dev.hu':
  143.                 case 'dev66.furbify.hu':
  144.                 case 'www.dev66.furbify.hu':
  145.                     $domainId = Domain::DOMAIN_ID_RT_HU;
  146.                     break;
  147.                 case 'furbify.cz':
  148.                 case 'www.furbify.cz':
  149.                 case 'furbify.dev.cz':
  150.                 case 'www.furbify.dev.cz':
  151.                 case 'dev66.furbify.cz':
  152.                 case 'www.dev66.furbify.cz':
  153.                     $domainId = Domain::DOMAIN_ID_RT_CZ;
  154.                     break;
  155.                 case 'furbify.eu':
  156.                 case 'www.furbify.eu':
  157.                 case 'furbify.dev.eu':
  158.                 case 'www.furbify.dev.eu':
  159.                 case 'dev66.furbify.eu':
  160.                 case 'www.dev66.furbify.eu':
  161.                     $domainId = Domain::DOMAIN_ID_RT_EU;
  162.                     break;
  163.                 default:
  164.                     $domainId = Domain::DOMAIN_ID_RT_EU;
  165.             }
  166.         } else {
  167.             switch ($host) {
  168.                 case 'furbify':
  169.                 case 'furbify.sk':
  170.                 case 'www.furbify.sk':
  171.                 case 'furbify.dev.sk':
  172.                 case 'www.furbify.dev.sk':
  173.                 case 'dev66.furbify.sk':
  174.                 case 'www.dev66.furbify.sk':
  175.                 case 'furbify-staging.lacne-pc.sk':
  176.                 case 'lacne-pc.sk':
  177.                 case 'localhost':
  178.                     $domainId = Domain::DOMAIN_ID_WS_SK;
  179.                     break;
  180.                 case 'furbify.hu':
  181.                 case 'www.furbify.hu':
  182.                 case 'furbify.dev.hu':
  183.                 case 'www.furbify.dev.hu':
  184.                 case 'dev66.furbify.hu':
  185.                 case 'www.dev66.furbify.hu':
  186.                     $domainId = Domain::DOMAIN_ID_WS_HU;
  187.                     break;
  188.                 case 'furbify.cz':
  189.                 case 'www.furbify.cz':
  190.                 case 'furbify.dev.cz':
  191.                 case 'www.furbify.dev.cz':
  192.                 case 'dev66.furbify.cz':
  193.                 case 'www.dev66.furbify.cz':
  194.                     $domainId = Domain::DOMAIN_ID_WS_CZ;
  195.                     break;
  196.                 case 'furbify.eu':
  197.                 case 'www.furbify.eu':
  198.                 case 'furbify.dev.eu':
  199.                 case 'www.furbify.dev.eu':
  200.                 case 'dev66.furbify.eu':
  201.                 case 'www.dev66.furbify.eu':
  202.                     $domainId = Domain::DOMAIN_ID_WS_EU;
  203.                     break;
  204.                 default:
  205.                     $domainId = Domain::DOMAIN_ID_WS_EU;
  206.             }
  207.         }
  208.         return $domainId;
  209.     }
  210.     /**
  211.      * @return int
  212.      */
  213.     public function getLanguageId()
  214.     {
  215.         return $this->languageId;
  216.     }
  217.     /**
  218.      * @return null|Language
  219.      */
  220.     public function getLanguage()
  221.     {
  222.         $language = $this->entityManager->getRepository(Language::class)->findOneById($this->languageId);
  223.         return $language ? $language : null;
  224.     }
  225.     /**
  226.      * @return int
  227.      */
  228.     public function getDefaultLanguageId()
  229.     {
  230.         return $this->defaultLanguageId;
  231.     }
  232.     /**
  233.      * @return null|Language
  234.      */
  235.     public function getDefaultLanguage()
  236.     {
  237.         $language = $this->entityManager->getRepository(Language::class)->findOneById($this->defaultLanguageId);
  238.         return $language ? $language : null;
  239.     }
  240.     /**
  241.      * @return string
  242.      */
  243.     public function getDefaultLocale(): string
  244.     {
  245.         if (empty($this->defaultLocale)) {
  246.             $this->defaultLocale = $this->setDefaultLocale();
  247.         }
  248.         return $this->defaultLocale;
  249.     }
  250.     private function setDefaultLocale()
  251.     {
  252.         switch ($this->domainId) {
  253.             case Domain::DOMAIN_ID_RT_SK:
  254.             case Domain::DOMAIN_ID_WS_SK:
  255.                 return 'sk';
  256.             case Domain::DOMAIN_ID_RT_HU:
  257.             case Domain::DOMAIN_ID_WS_HU:
  258.                 return 'hu';
  259.             case Domain::DOMAIN_ID_RT_CZ:
  260.             case Domain::DOMAIN_ID_WS_CZ:
  261.                 return 'cz';
  262.             case Domain::DOMAIN_ID_RT_EU:
  263.             case Domain::DOMAIN_ID_WS_EU:
  264.                 return 'en';
  265.             default:
  266.                 return 'en';
  267.         }
  268.     }
  269.     /**
  270.      * @param Request $request
  271.      */
  272.     public static function setDefaultLanguage(Request $request)
  273.     {
  274.         switch ($request->getHost()) {
  275.             case 'furbify':
  276.             case 'localhost':
  277.             case 'furbify.sk':
  278.             case 'www.furbify.sk':
  279.             case 'dev66.furbify.sk':
  280.             case 'www.dev66.furbify.sk':
  281.             case 'furbify.dev.sk':
  282.             case 'www.furbify.dev.sk':
  283.             case 'furbify-staging.lacne-pc.sk':
  284.             case 'lacne-pc.sk':
  285.                 $locale = 'sk';
  286.                 $languageId = Language::LANGUAGE_ID_SK;
  287.                 break;
  288.             case 'furbify.hu':
  289.             case 'www.furbify.hu':
  290.             case 'dev66.furbify.hu':
  291.             case 'www.dev66.furbify.hu':
  292.             case 'furbify.dev.hu':
  293.             case 'www.furbify.dev.hu':
  294.                 $locale = 'hu';
  295.                 $languageId = Language::LANGUAGE_ID_HU;
  296.                 break;
  297.             case 'furbify.cz':
  298.             case 'www.furbify.cz':
  299.             case 'dev66.furbify.cz':
  300.             case 'www.dev66.furbify.cz':
  301.             case 'furbify.dev.cz':
  302.             case 'www.furbify.dev.cz':
  303.                 $locale = 'cz';
  304.                 $languageId = Language::LANGUAGE_ID_CZ;
  305.                 break;
  306.             case 'furbify.eu':
  307.             case 'www.furbify.eu':
  308.             case 'dev66.furbify.eu':
  309.             case 'www.dev66.furbify.eu':
  310.             case 'furbify.dev.eu':
  311.             case 'www.furbify.dev.eu':
  312.                 $locale = 'en';
  313.                 $languageId = Language::LANGUAGE_ID_EN;
  314.                 break;
  315.             default:
  316.                 $locale = 'en';
  317.                 $languageId = Language::LANGUAGE_ID_EN;
  318.         }
  319.         // Set default language & locale based on domain
  320.         $request->getSession()->set('defaultLanguageId', $languageId);
  321.         $request->getSession()->set('defaultLocale', $locale);
  322.     }
  323.     /**
  324.      * @param Request $request
  325.      */
  326.     public static function setLanguage(Request $request)
  327.     {
  328.         // Check route parameters for user localisation settings
  329.         $routeParams = $request->get('_route_params');
  330.         if (isset($routeParams['_locale'])) {
  331.             $userLocale = $routeParams['_locale'];
  332.         } else {
  333.             $userLocale = '';
  334.         }
  335.         switch ($userLocale) {
  336.             // Use language & locale based on user localisation settings
  337.             case 'sk':
  338.                 $request->getSession()->set('_locale', $userLocale);
  339.                 $request->getSession()->set('languageId', Language::LANGUAGE_ID_SK);
  340.                 $request->setLocale($userLocale);
  341.                 break;
  342.             case 'hu':
  343.                 $request->getSession()->set('_locale', $userLocale);
  344.                 $request->getSession()->set('languageId', Language::LANGUAGE_ID_HU);
  345.                 $request->setLocale($userLocale);
  346.                 break;
  347.             case 'cz':
  348.                 $request->getSession()->set('_locale', $userLocale);
  349.                 $request->getSession()->set('languageId', Language::LANGUAGE_ID_CZ);
  350.                 $request->setLocale($userLocale);
  351.                 break;
  352.             case 'en':
  353.                 $request->getSession()->set('_locale', $userLocale);
  354.                 $request->getSession()->set('languageId', Language::LANGUAGE_ID_EN);
  355.                 $request->setLocale($userLocale);
  356.                 break;
  357.                 // Use default language & locale if user localisation settings is not found
  358.             default:
  359.                 $request->getSession()->set('_locale', $request->getSession()->get('defaultLocale'));
  360.                 $request->getSession()->set('languageId', $request->getSession()->get('defaultLanguageId'));
  361.                 $request->setLocale($request->getSession()->get('defaultLocale'));
  362.                 break;
  363.         }
  364.     }
  365.     /**
  366.      * @return int
  367.      */
  368.     public function getLocaleDomainId(): int
  369.     {
  370.         return $this->localeDomainId;
  371.     }
  372.     /**
  373.      * @return null|Domain
  374.      */
  375.     public function getLocaleDomain(): ?Domain
  376.     {
  377.         return $this->entityManager->getRepository(Domain::class)->findOneById($this->localeDomainId);
  378.     }
  379.     /**
  380.      * @param Request $request
  381.      */
  382.     public static function setLocalDomain(Request $request)
  383.     {
  384.         $locale = $request->getLocale();
  385.         if ($request->getSession()->get('customerTypeId') == self::CUSTOMER_TYPE_RETAIL) {
  386.             switch ($locale) {
  387.                 case '1':
  388.                 case 'sk':
  389.                     $domainId = Domain::DOMAIN_ID_RT_SK;
  390.                     break;
  391.                 case '2':
  392.                 case 'hu':
  393.                     $domainId = Domain::DOMAIN_ID_RT_HU;
  394.                     break;
  395.                 case '3':
  396.                 case 'cz':
  397.                     $domainId = Domain::DOMAIN_ID_RT_CZ;
  398.                     break;
  399.                 case '4':
  400.                 case 'en':
  401.                     $domainId = Domain::DOMAIN_ID_RT_EU;
  402.                     break;
  403.                 default:
  404.                     $domainId = Domain::DOMAIN_ID_RT_EU;
  405.             }
  406.         } else {
  407.             switch ($locale) {
  408.                 case '1':
  409.                 case 'sk':
  410.                     $domainId = Domain::DOMAIN_ID_WS_SK;
  411.                     break;
  412.                 case '2':
  413.                 case 'hu':
  414.                     $domainId = Domain::DOMAIN_ID_WS_HU;
  415.                     break;
  416.                 case '3':
  417.                 case 'cz':
  418.                     $domainId = Domain::DOMAIN_ID_WS_CZ;
  419.                     break;
  420.                 case '4':
  421.                 case 'en':
  422.                     $domainId = Domain::DOMAIN_ID_WS_EU;
  423.                     break;
  424.                 default:
  425.                     $domainId = Domain::DOMAIN_ID_WS_EU;
  426.             }
  427.         }
  428.         $request->getSession()->set('localeDomainId', $domainId);
  429.     }
  430.     /**
  431.      * @return int
  432.      */
  433.     public function getCustomerTypeId(): int
  434.     {
  435.         return $this->customerTypeId;
  436.     }
  437.     /**
  438.      * @param Request $request
  439.      * @param int $customerTypeId
  440.      */
  441.     public static function setCustomerType(Request $request, int $customerTypeId = self::CUSTOMER_TYPE_RETAIL)
  442.     {
  443.         $request->getSession()->set('customerTypeId', $customerTypeId);
  444.     }
  445.     /**
  446.      * @return string
  447.      */
  448.     public function getDefaultCountry(): string
  449.     {
  450.         return $this->defaultCountry;
  451.     }
  452.     /**
  453.      * @param Request $request
  454.      */
  455.     public static function setDefaultCountry(Request $request)
  456.     {
  457.         switch ($request->getHost()) {
  458.             case 'furbify':
  459.             case 'furbify.sk':
  460.             case 'www.furbify.sk':
  461.             case 'furbify.dev.sk':
  462.             case 'www.furbify.dev.sk':
  463.             case 'frb.sk':
  464.             case 'www.frb.sk':
  465.             case 'furbify-staging.lacne-pc.sk':
  466.             case 'lacne-pc.sk':
  467.             case 'localhost':
  468.                 $defaultCountry = 'SK';
  469.                 break;
  470.             case 'furbify.hu':
  471.             case 'www.furbify.hu':
  472.             case 'furbify.dev.hu':
  473.             case 'www.furbify.dev.hu':
  474.                 $defaultCountry = 'HU';
  475.                 break;
  476.             case 'furbify.cz':
  477.             case 'www.furbify.cz':
  478.             case 'furbify.dev.cz':
  479.             case 'www.furbify.dev.cz':
  480.                 $defaultCountry = 'CZ';
  481.                 break;
  482.             case 'furbify.eu':
  483.             case 'www.furbify.eu':
  484.             case 'furbify.dev.eu':
  485.             case 'www.furbify.dev.eu':
  486.                 $defaultCountry = 'SK';
  487.                 break;
  488.             default:
  489.                 $defaultCountry = 'SK';
  490.         }
  491.         $request->getSession()->set('defaultCountry', $defaultCountry);
  492.     }
  493.     /**
  494.      * @return array
  495.      */
  496.     public static function getRetailDomainIDs(): array
  497.     {
  498.         return [
  499.             Domain::DOMAIN_ID_RT_SK,
  500.             Domain::DOMAIN_ID_RT_HU,
  501.             Domain::DOMAIN_ID_RT_CZ,
  502.             Domain::DOMAIN_ID_RT_EU,
  503.         ];
  504.     }
  505.     /**
  506.      * @return array
  507.      */
  508.     public static function getWholesaleDomainIDs(): array
  509.     {
  510.         return [
  511.             Domain::DOMAIN_ID_WS_SK,
  512.             Domain::DOMAIN_ID_WS_HU,
  513.             Domain::DOMAIN_ID_WS_CZ,
  514.             Domain::DOMAIN_ID_WS_EU,
  515.         ];
  516.     }
  517.     /**
  518.      * @param string $pageLang
  519.      * @return string
  520.      */
  521.     public static function getBCP47LanguageCode(string $pageLang): string
  522.     {
  523.         $result = '';
  524.         switch ($pageLang) {
  525.             case 'cz':
  526.                 $result = "cs-CZ";
  527.                 break;
  528.             case 'en':
  529.                 $result = "en-US";
  530.                 break;
  531.             case 'hu':
  532.                 $result = "hu-HU";
  533.                 break;
  534.             case 'sk':
  535.                 $result = "sk-SK";
  536.                 break;
  537.         }
  538.         return $result;
  539.     }
  540.     /**
  541.      * @return null|Domain
  542.      */
  543.     public function getRetailDomainByWholesaleDomain(): ?Domain
  544.     {
  545.         $domainId = 0;
  546.         if ($this->customerTypeId == self::CUSTOMER_TYPE_WHOLESALE) {
  547.             if ($this->domainId == Domain::DOMAIN_ID_WS_SK) {
  548.                 $domainId = Domain::DOMAIN_ID_RT_SK;
  549.             } elseif ($this->domainId == Domain::DOMAIN_ID_WS_HU) {
  550.                 $domainId = Domain::DOMAIN_ID_RT_HU;
  551.             } elseif ($this->domainId == Domain::DOMAIN_ID_WS_CZ) {
  552.                 $domainId = Domain::DOMAIN_ID_RT_CZ;
  553.             } elseif ($this->domainId == Domain::DOMAIN_ID_WS_EU) {
  554.                 $domainId = Domain::DOMAIN_ID_RT_EU;
  555.             }
  556.         }
  557.         return $this->entityManager->getRepository(Domain::class)->findOneById($domainId);
  558.     }
  559.     /**
  560.      * @param int $domainId
  561.      * @return int
  562.      */
  563.     public function getBlogCategoryIdByDomainId(int $domainId): int
  564.     {
  565.         $blogCategoryId = 0;
  566.         switch ($domainId) {
  567.             case Domain::DOMAIN_ID_RT_SK:
  568.                 $blogCategoryId = 3;
  569.                 break;
  570.             case Domain::DOMAIN_ID_WS_SK:
  571.                 $blogCategoryId = 252;
  572.                 break;
  573.             case Domain::DOMAIN_ID_RT_HU:
  574.                 $blogCategoryId = 77;
  575.                 break;
  576.             case Domain::DOMAIN_ID_WS_HU:
  577.                 $blogCategoryId = 253;
  578.                 break;
  579.             case Domain::DOMAIN_ID_RT_CZ:
  580.                 $blogCategoryId = 169;
  581.                 break;
  582.             case Domain::DOMAIN_ID_WS_CZ:
  583.                 $blogCategoryId = 254;
  584.                 break;
  585.         }
  586.         return $blogCategoryId;
  587.     }
  588.     /**
  589.      * @return string
  590.      */
  591.     public function getBasePrice(): string
  592.     {
  593.         return $this->basePrice;
  594.     }
  595.     /**
  596.      * @param Request $request
  597.      */
  598.     public static function setBasePrice(Request $request)
  599.     {
  600.         if (in_array($request->getSession()->get('domainId'), [Domain::DOMAIN_ID_WS_SK, Domain::DOMAIN_ID_WS_CZ, Domain::DOMAIN_ID_WS_EU, Domain::DOMAIN_ID_WS_HU])) {
  601.             $request->getSession()->set('basePrice', self::BASE_PRICE_NET);
  602.         } else {
  603.             $request->getSession()->set('basePrice', self::BASE_PRICE_GROSS);
  604.         }
  605.     }
  606.     /**
  607.      * @param int $domainId
  608.      * @return int
  609.      */
  610.     public function getLanguageIdByDomainId(int $domainId): int
  611.     {
  612.         switch ($domainId) {
  613.             case Domain::DOMAIN_ID_RT_SK:
  614.             case Domain::DOMAIN_ID_WS_SK:
  615.                 return Language::LANGUAGE_ID_SK;
  616.             case Domain::DOMAIN_ID_RT_HU:
  617.             case Domain::DOMAIN_ID_WS_HU:
  618.                 return Language::LANGUAGE_ID_HU;
  619.             case Domain::DOMAIN_ID_RT_CZ:
  620.             case Domain::DOMAIN_ID_WS_CZ:
  621.                 return Language::LANGUAGE_ID_CZ;
  622.             case Domain::DOMAIN_ID_RT_EU:
  623.             case Domain::DOMAIN_ID_WS_EU:
  624.                 return Language::LANGUAGE_ID_EN;
  625.         }
  626.         return Language::LANGUAGE_ID_EN;
  627.     }
  628.     /**
  629.      * @param bool $state
  630.      */
  631.     public function setLanguageSwitched(bool $state)
  632.     {
  633.         $this->languageSwitched = $state;
  634.     }
  635.     /**
  636.      * @return bool
  637.      */
  638.     public function isLanguageSwitched(): bool
  639.     {
  640.         return $this->languageSwitched;
  641.     }
  642. }