![]() Server : Apache System : Linux server2.corals.io 4.18.0-348.2.1.el8_5.x86_64 #1 SMP Mon Nov 15 09:17:08 EST 2021 x86_64 User : corals ( 1002) PHP Version : 7.4.33 Disable Function : exec,passthru,shell_exec,system Directory : /home/corals/old/vendor/magento/module-store/Controller/Store/ |
<?php /** * * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ declare(strict_types=1); namespace Magento\Store\Controller\Store; use Magento\Framework\App\Action\Action; use Magento\Framework\App\Action\Context as ActionContext; use Magento\Framework\App\Http\Context as HttpContext; use Magento\Framework\Exception\NoSuchEntityException; use Magento\Store\Api\StoreCookieManagerInterface; use Magento\Store\Api\StoreRepositoryInterface; use Magento\Store\Model\StoreIsInactiveException; use Magento\Store\Model\StoreManagerInterface; use Magento\Store\Model\StoreSwitcher; use Magento\Store\Model\StoreSwitcherInterface; use Magento\Framework\App\Action\HttpPostActionInterface; use Magento\Framework\App\Action\HttpGetActionInterface; use Magento\Store\Controller\Store\SwitchAction\CookieManager; /** * Handles store switching url and makes redirect. * * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ class SwitchAction extends Action implements HttpGetActionInterface, HttpPostActionInterface { /** * @var StoreCookieManagerInterface */ protected $storeCookieManager; /** * @var HttpContext * @deprecated 100.2.5 */ protected $httpContext; /** * @var StoreRepositoryInterface */ protected $storeRepository; /** * @var StoreManagerInterface * @deprecated 100.2.5 */ protected $storeManager; /** * @var StoreSwitcherInterface */ private $storeSwitcher; /** * @var CookieManager */ private $cookieManager; /** * Initialize dependencies. * * @param ActionContext $context * @param StoreCookieManagerInterface $storeCookieManager * @param HttpContext $httpContext * @param StoreRepositoryInterface $storeRepository * @param StoreManagerInterface $storeManager * @param StoreSwitcherInterface $storeSwitcher * @param CookieManager $cookieManager */ public function __construct( ActionContext $context, StoreCookieManagerInterface $storeCookieManager, HttpContext $httpContext, StoreRepositoryInterface $storeRepository, StoreManagerInterface $storeManager, StoreSwitcherInterface $storeSwitcher, CookieManager $cookieManager ) { parent::__construct($context); $this->storeCookieManager = $storeCookieManager; $this->httpContext = $httpContext; $this->storeRepository = $storeRepository; $this->storeManager = $storeManager; $this->messageManager = $context->getMessageManager(); $this->storeSwitcher = $storeSwitcher; $this->cookieManager = $cookieManager; } /** * Execute action * * @return void * @throws StoreSwitcher\CannotSwitchStoreException * @throws \Magento\Framework\Exception\InputException * @throws \Magento\Framework\Stdlib\Cookie\CookieSizeLimitReachedException * @throws \Magento\Framework\Stdlib\Cookie\FailureToSendException */ public function execute() { $targetStoreCode = $this->_request->getParam(StoreManagerInterface::PARAM_NAME); $fromStoreCode = $this->_request->getParam( '___from_store', $this->storeCookieManager->getStoreCodeFromCookie() ); $requestedUrlToRedirect = $this->_redirect->getRedirectUrl(); $redirectUrl = $requestedUrlToRedirect; $error = null; try { $fromStore = $this->storeRepository->get($fromStoreCode); $targetStore = $this->storeRepository->getActiveStoreByCode($targetStoreCode); } catch (StoreIsInactiveException $e) { $error = __('Requested store is inactive'); } catch (NoSuchEntityException $e) { $error = __("The store that was requested wasn't found. Verify the store and try again."); } if ($error !== null) { $this->messageManager->addErrorMessage($error); } else { $redirectUrl = $this->storeSwitcher->switch($fromStore, $targetStore, $requestedUrlToRedirect); $this->cookieManager->setCookieForStore($targetStore); } $this->getResponse()->setRedirect($redirectUrl); } }