| Current Path : /var/www/clients/client3/web2/web/vendor/magento/module-store/Controller/Store/ |
| Current File : /var/www/clients/client3/web2/web/vendor/magento/module-store/Controller/Store/SwitchAction.php |
<?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);
}
}