123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130 |
- <?php
- /**
- * Copyright © Magento, Inc. All rights reserved.
- * See COPYING.txt for license details.
- */
- namespace Magento\Checkout\Block;
- use Magento\Framework\View\Element\Template;
- /**
- * @api
- * @since 100.0.2
- */
- class Registration extends \Magento\Framework\View\Element\Template
- {
- /**
- * @var \Magento\Checkout\Model\Session
- */
- protected $checkoutSession;
- /**
- * @var \Magento\Customer\Model\Session
- */
- protected $customerSession;
- /**
- * @var \Magento\Customer\Model\Registration
- */
- protected $registration;
- /**
- * @var \Magento\Customer\Api\AccountManagementInterface
- */
- protected $accountManagement;
- /**
- * @var \Magento\Sales\Api\OrderRepositoryInterface
- */
- protected $orderRepository;
- /**
- * @var \Magento\Sales\Model\Order\Address\Validator
- */
- protected $addressValidator;
- /**
- * @param Template\Context $context
- * @param \Magento\Checkout\Model\Session $checkoutSession
- * @param \Magento\Customer\Model\Session $customerSession
- * @param \Magento\Customer\Model\Registration $registration
- * @param \Magento\Customer\Api\AccountManagementInterface $accountManagement
- * @param \Magento\Sales\Api\OrderRepositoryInterface $orderRepository
- * @param \Magento\Sales\Model\Order\Address\Validator $addressValidator
- * @param array $data
- * @codeCoverageIgnore
- */
- public function __construct(
- Template\Context $context,
- \Magento\Checkout\Model\Session $checkoutSession,
- \Magento\Customer\Model\Session $customerSession,
- \Magento\Customer\Model\Registration $registration,
- \Magento\Customer\Api\AccountManagementInterface $accountManagement,
- \Magento\Sales\Api\OrderRepositoryInterface $orderRepository,
- \Magento\Sales\Model\Order\Address\Validator $addressValidator,
- array $data = []
- ) {
- $this->checkoutSession = $checkoutSession;
- $this->customerSession = $customerSession;
- $this->registration = $registration;
- $this->accountManagement = $accountManagement;
- $this->orderRepository = $orderRepository;
- $this->addressValidator = $addressValidator;
- parent::__construct($context, $data);
- }
- /**
- * Retrieve current email address
- *
- * @return string
- * @codeCoverageIgnore
- */
- public function getEmailAddress()
- {
- return $this->checkoutSession->getLastRealOrder()->getCustomerEmail();
- }
- /**
- * Retrieve account creation url
- *
- * @return string
- * @codeCoverageIgnore
- */
- public function getCreateAccountUrl()
- {
- return $this->getUrl('checkout/account/delegateCreate');
- }
- /**
- * {@inheritdoc}
- */
- public function toHtml()
- {
- if ($this->customerSession->isLoggedIn()
- || !$this->registration->isAllowed()
- || !$this->accountManagement->isEmailAvailable($this->getEmailAddress())
- || !$this->validateAddresses()
- ) {
- return '';
- }
- return parent::toHtml();
- }
- /**
- * Validate order addresses
- *
- * @return bool
- */
- protected function validateAddresses()
- {
- $order = $this->orderRepository->get($this->checkoutSession->getLastOrderId());
- $addresses = $order->getAddresses();
- foreach ($addresses as $address) {
- $result = $this->addressValidator->validateForCustomer($address);
- if (is_array($result) && !empty($result)) {
- return false;
- }
- }
- return true;
- }
- }
|