123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Checkout\Controller;
- use Magento\Catalog\Controller\Product\View\ViewInterface;
- use Magento\Checkout\Model\Cart as CustomerCart;
- /**
- * Shopping cart controller
- */
- abstract class Cart extends \Magento\Framework\App\Action\Action implements ViewInterface
- {
- /**
- * @var \Magento\Framework\App\Config\ScopeConfigInterface
- */
- protected $_scopeConfig;
- /**
- * @var \Magento\Checkout\Model\Session
- */
- protected $_checkoutSession;
- /**
- * @var \Magento\Store\Model\StoreManagerInterface
- */
- protected $_storeManager;
- /**
- * @var \Magento\Framework\Data\Form\FormKey\Validator
- */
- protected $_formKeyValidator;
- /**
- * @var \Magento\Checkout\Model\Cart
- */
- protected $cart;
- /**
- * @param \Magento\Framework\App\Action\Context $context
- * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig
- * @param \Magento\Checkout\Model\Session $checkoutSession
- * @param \Magento\Store\Model\StoreManagerInterface $storeManager
- * @param \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator
- * @param CustomerCart $cart
- * @codeCoverageIgnore
- */
- public function __construct(
- \Magento\Framework\App\Action\Context $context,
- \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig,
- \Magento\Checkout\Model\Session $checkoutSession,
- \Magento\Store\Model\StoreManagerInterface $storeManager,
- \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator,
- CustomerCart $cart
- ) {
- $this->_formKeyValidator = $formKeyValidator;
- $this->_scopeConfig = $scopeConfig;
- $this->_checkoutSession = $checkoutSession;
- $this->_storeManager = $storeManager;
- $this->cart = $cart;
- parent::__construct($context);
- }
- /**
- * Set back redirect url to response
- *
- * @param null|string $backUrl
- *
- * @return \Magento\Framework\Controller\Result\Redirect
- */
- protected function _goBack($backUrl = null)
- {
- $resultRedirect = $this->resultRedirectFactory->create();
- if ($backUrl || $backUrl = $this->getBackUrl($this->_redirect->getRefererUrl())) {
- $resultRedirect->setUrl($backUrl);
- }
- return $resultRedirect;
- }
- /**
- * Check if URL corresponds store
- *
- * @param string $url
- * @return bool
- */
- protected function _isInternalUrl($url)
- {
- if (strpos($url, 'http') === false) {
- return false;
- }
- /**
- * Url must start from base secure or base unsecure url
- */
- /** @var $store \Magento\Store\Model\Store */
- $store = $this->_storeManager->getStore();
- $unsecure = strpos($url, $store->getBaseUrl()) === 0;
- $secure = strpos($url, $store->getBaseUrl(\Magento\Framework\UrlInterface::URL_TYPE_LINK, true)) === 0;
- return $unsecure || $secure;
- }
- /**
- * Get resolved back url
- *
- * @param string|null $defaultUrl
- * @return mixed|null|string
- */
- protected function getBackUrl($defaultUrl = null)
- {
- $returnUrl = $this->getRequest()->getParam('return_url');
- if ($returnUrl && $this->_isInternalUrl($returnUrl)) {
- $this->messageManager->getMessages()->clear();
- return $returnUrl;
- }
- if ($this->shouldRedirectToCart() || $this->getRequest()->getParam('in_cart')) {
- if ($this->getRequest()->getActionName() == 'add' && !$this->getRequest()->getParam('in_cart')) {
- $this->_checkoutSession->setContinueShoppingUrl($this->_redirect->getRefererUrl());
- }
- return $this->_url->getUrl('checkout/cart');
- }
- return $defaultUrl;
- }
- /**
- * Is redirect should be performed after the product was added to cart.
- *
- * @return bool
- */
- private function shouldRedirectToCart()
- {
- return $this->_scopeConfig->isSetFlag(
- 'checkout/cart/redirect_to_cart',
- \Magento\Store\Model\ScopeInterface::SCOPE_STORE
- );
- }
- }
|