/** * @param \Generated\Shared\Transfer\NewsletterSubscriberTransfer $newsletterSubscriber * * @return \Generated\Shared\Transfer\NewsletterSubscriptionApprovalResultTransfer */ public function approveSubscriberByKey(NewsletterSubscriberTransfer $newsletterSubscriber) { $result = new NewsletterSubscriptionApprovalResultTransfer(); $subscriberEntity = $this->queryContainer->querySubscriber()->findOneBySubscriberKey($newsletterSubscriber->getSubscriberKey()); if ($subscriberEntity === null) { $result->setIsSuccess(false); $result->setErrorMessage(Messages::INVALID_SUBSCRIBER_KEY); return $result; } $subscriberEntity->setIsConfirmed(true); $subscriberEntity->save(); $result->setIsSuccess(true); return $result; }
/** * @param \Generated\Shared\Transfer\NewsletterSubscriberTransfer $newsletterSubscriber * * @return bool */ public function send(NewsletterSubscriberTransfer $newsletterSubscriber) { $config = $this->getFactory()->getConfig(); $mailTransfer = $this->createMailTransfer(); $mailTransfer->setTemplateName($config->getDoubleOptInConfirmationTemplateName()); $this->addMailRecipient($mailTransfer, $newsletterSubscriber->getEmail()); $this->setMailTransferFrom($mailTransfer, $config); $this->setMailTransferSubject($mailTransfer, $config); $globalMergeVars = $this->getMailGlobalMergeVars($config->getDoubleOptInApproveTokenUrl($newsletterSubscriber->getSubscriberKey())); $this->setMailMergeData($mailTransfer, $globalMergeVars); $mailFacade = $this->getFactory()->getMailFacade(); $responses = $mailFacade->sendMail($mailTransfer); $result = $mailFacade->isMailSent($responses); return $result; }
/** * @param \Generated\Shared\Transfer\NewsletterSubscriberTransfer $newsletterSubscriber * @param \Generated\Shared\Transfer\NewsletterTypeTransfer $newsletterType * * @return \Orm\Zed\Newsletter\Persistence\SpyNewsletterSubscription|null */ protected function getSubscription(NewsletterSubscriberTransfer $newsletterSubscriber, NewsletterTypeTransfer $newsletterType) { if ($newsletterSubscriber->getSubscriberKey() !== null) { $subscriptionEntity = $this->queryContainer->querySubscriptionBySubscriberKeyAndNewsletterTypeName($newsletterSubscriber->getSubscriberKey(), $newsletterType->getName())->findOne(); return $subscriptionEntity; } if ($newsletterSubscriber->getFkCustomer() !== null) { $subscriptionEntity = $this->queryContainer->querySubscriptionByIdCustomerAndNewsletterTypeName($newsletterSubscriber->getFkCustomer(), $newsletterType->getName())->findOne(); return $subscriptionEntity; } return null; }