![]() 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-checkout/Controller/ |
<?php /** * Copyright © Magento, Inc. All rights reserved. * See COPYING.txt for license details. */ namespace Magento\Checkout\Controller; use Magento\Customer\Api\AccountManagementInterface; use Magento\Customer\Api\CustomerRepositoryInterface; use Magento\Framework\Exception\NotFoundException; use Magento\Framework\App\RequestInterface; /** * @SuppressWarnings(PHPMD.CouplingBetweenObjects) */ abstract class Onepage extends Action { /** * @var array */ protected $_sectionUpdateFunctions = [ 'payment-method' => '_getPaymentMethodsHtml', 'shipping-method' => '_getShippingMethodsHtml', 'review' => '_getReviewHtml', ]; /** * @var \Magento\Sales\Model\Order */ protected $_order; /** * Core registry * * @var \Magento\Framework\Registry */ protected $_coreRegistry = null; /** * @var \Magento\Framework\Translate\InlineInterface */ protected $_translateInline; /** * @var \Magento\Framework\Data\Form\FormKey\Validator */ protected $_formKeyValidator; /** * @var \Magento\Framework\App\Config\ScopeConfigInterface */ protected $scopeConfig; /** * @var \Magento\Framework\View\LayoutFactory */ protected $layoutFactory; /** * @var \Magento\Quote\Api\CartRepositoryInterface */ protected $quoteRepository; /** * @var \Magento\Framework\View\Result\PageFactory */ protected $resultPageFactory; /** * @var \Magento\Framework\View\Result\LayoutFactory */ protected $resultLayoutFactory; /** * @var \Magento\Framework\Controller\Result\RawFactory */ protected $resultRawFactory; /** * @var \Magento\Framework\Controller\Result\JsonFactory */ protected $resultJsonFactory; /** * @param \Magento\Framework\App\Action\Context $context * @param \Magento\Customer\Model\Session $customerSession * @param CustomerRepositoryInterface $customerRepository * @param AccountManagementInterface $accountManagement * @param \Magento\Framework\Registry $coreRegistry * @param \Magento\Framework\Translate\InlineInterface $translateInline * @param \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator * @param \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig * @param \Magento\Framework\View\LayoutFactory $layoutFactory * @param \Magento\Quote\Api\CartRepositoryInterface $quoteRepository * @param \Magento\Framework\View\Result\PageFactory $resultPageFactory * @param \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory * @param \Magento\Framework\Controller\Result\RawFactory $resultRawFactory * @param \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory * * @codeCoverageIgnore * @SuppressWarnings(PHPMD.ExcessiveParameterList) */ public function __construct( \Magento\Framework\App\Action\Context $context, \Magento\Customer\Model\Session $customerSession, CustomerRepositoryInterface $customerRepository, AccountManagementInterface $accountManagement, \Magento\Framework\Registry $coreRegistry, \Magento\Framework\Translate\InlineInterface $translateInline, \Magento\Framework\Data\Form\FormKey\Validator $formKeyValidator, \Magento\Framework\App\Config\ScopeConfigInterface $scopeConfig, \Magento\Framework\View\LayoutFactory $layoutFactory, \Magento\Quote\Api\CartRepositoryInterface $quoteRepository, \Magento\Framework\View\Result\PageFactory $resultPageFactory, \Magento\Framework\View\Result\LayoutFactory $resultLayoutFactory, \Magento\Framework\Controller\Result\RawFactory $resultRawFactory, \Magento\Framework\Controller\Result\JsonFactory $resultJsonFactory ) { $this->_coreRegistry = $coreRegistry; $this->_translateInline = $translateInline; $this->_formKeyValidator = $formKeyValidator; $this->scopeConfig = $scopeConfig; $this->layoutFactory = $layoutFactory; $this->quoteRepository = $quoteRepository; $this->resultPageFactory = $resultPageFactory; $this->resultLayoutFactory = $resultLayoutFactory; $this->resultRawFactory = $resultRawFactory; $this->resultJsonFactory = $resultJsonFactory; parent::__construct( $context, $customerSession, $customerRepository, $accountManagement ); } /** * Dispatch request * * @param RequestInterface $request * @return \Magento\Framework\App\ResponseInterface * @throws \Magento\Framework\Exception\NotFoundException */ public function dispatch(RequestInterface $request) { $this->_request = $request; $result = $this->_preDispatchValidateCustomer(); if ($result instanceof \Magento\Framework\Controller\ResultInterface) { return $result; } /** @var \Magento\Quote\Model\Quote $quote */ $quote = $this->_objectManager->get(\Magento\Checkout\Model\Session::class)->getQuote(); if ($quote->isMultipleShippingAddresses()) { $quote->removeAllAddresses(); } if (!$this->_canShowForUnregisteredUsers()) { throw new NotFoundException(__('Page not found.')); } return parent::dispatch($request); } /** * @return \Magento\Framework\Controller\Result\Raw */ protected function _ajaxRedirectResponse() { $resultRaw = $this->resultRawFactory->create(); $resultRaw->setStatusHeader(403, '1.1', 'Session Expired') ->setHeader('Login-Required', 'true'); return $resultRaw; } /** * Validate ajax request and redirect on failure * * @return bool */ protected function _expireAjax() { $quote = $this->getOnepage()->getQuote(); if (!$quote->hasItems() || $quote->getHasError() || !$quote->validateMinimumAmount()) { return true; } $action = $this->getRequest()->getActionName(); if ($this->_objectManager->get(\Magento\Checkout\Model\Session::class)->getCartWasUpdated(true) && !in_array($action, ['index', 'progress']) ) { return true; } return false; } /** * Render HTML based on requested layout handle name * * @param string $handle * @return string */ protected function _getHtmlByHandle($handle) { $layout = $this->layoutFactory->create(); $layout->getUpdate()->load([$handle]); $layout->generateXml(); $layout->generateElements(); $output = $layout->getOutput(); $this->_translateInline->processResponseBody($output); return $output; } /** * Get shipping method step html * * @return string * @codeCoverageIgnore */ protected function _getShippingMethodsHtml() { return $this->_getHtmlByHandle('checkout_onepage_shippingmethod'); } /** * Get payment method step html * * @return string * @codeCoverageIgnore */ protected function _getPaymentMethodsHtml() { return $this->_getHtmlByHandle('checkout_onepage_paymentmethod'); } /** * Get progress html checkout step * * @param string $checkoutStep * @return mixed */ protected function getProgressHtml($checkoutStep = '') { $layout = $this->layoutFactory->create(); $layout->getUpdate()->load(['checkout_onepage_progress']); $layout->generateXml(); $layout->generateElements(); $block = $layout->getBlock('progress')->setAttribute('next_step', $checkoutStep); return $block->toHtml(); } /** * Get one page checkout model * * @return \Magento\Checkout\Model\Type\Onepage * @codeCoverageIgnore */ public function getOnepage() { return $this->_objectManager->get(\Magento\Checkout\Model\Type\Onepage::class); } /** * Check can page show for unregistered users * * @return boolean */ protected function _canShowForUnregisteredUsers() { return $this->_objectManager->get( \Magento\Customer\Model\Session::class )->isLoggedIn() || $this->getRequest()->getActionName() == 'index' || $this->_objectManager->get( \Magento\Checkout\Helper\Data::class )->isAllowedGuestCheckout( $this->getOnepage()->getQuote() ) || !$this->_objectManager->get( \Magento\Checkout\Helper\Data::class )->isCustomerMustBeLogged(); } }