22 use Magento\Newsletter\Model\SubscriberFactory;
37 private $emailValidator;
52 SubscriberFactory $subscriberFactory,
57 EmailValidator $emailValidator =
null 60 $this->emailValidator = $emailValidator ?: ObjectManager::getInstance()->get(EmailValidator::class);
79 $websiteId = $this->_storeManager->getStore()->getWebsiteId();
80 if ($this->_customerSession->getCustomerDataObject()->getEmail() !==
$email 84 __(
'This email address is already assigned to another user.')
97 if ($this->_objectManager->get(ScopeConfigInterface::class)
99 Subscriber::XML_PATH_ALLOW_GUEST_SUBSCRIBE_FLAG,
100 ScopeInterface::SCOPE_STORE
102 && !$this->_customerSession->isLoggedIn()
106 'Sorry, but the administrator denied subscription for guests. Please <a href="%1">register</a>.',
107 $this->_customerUrl->getRegisterUrl()
122 if (!$this->emailValidator->isValid(
$email)) {
144 && (int)
$subscriber->getSubscriberStatus() === Subscriber::STATUS_SUBSCRIBED
147 __(
'This email address is already subscribed.')
151 $status = (int) $this->_subscriberFactory->create()->subscribe(
$email);
152 $this->messageManager->addSuccessMessage($this->getSuccessMessage(
$status));
154 $this->messageManager->addExceptionMessage(
156 __(
'There was a problem with the subscription: %1', $e->getMessage())
158 }
catch (\Exception $e) {
159 $this->messageManager->addExceptionMessage($e,
__(
'Something went wrong with the subscription.'));
171 if (
$status === Subscriber::STATUS_NOT_ACTIVE) {
172 return __(
'The confirmation request has been sent.');
175 return __(
'Thank you for your subscription.');
_redirect($path, $arguments=[])
validateEmailFormat($email)
$customerAccountManagement
validateEmailAvailable($email)
validateGuestSubscription()
__construct(Context $context, SubscriberFactory $subscriberFactory, Session $customerSession, StoreManagerInterface $storeManager, CustomerUrl $customerUrl, CustomerAccountManagement $customerAccountManagement, EmailValidator $emailValidator=null)