From 46f888a30bd5ad1ba4fecd4c39ffa065b96d66b5 Mon Sep 17 00:00:00 2001 From: David Remer Date: Thu, 30 Mar 2023 13:07:17 +0300 Subject: [PATCH] Let transactional emails pass [MAILPOET-4999] --- .../MailPoet/Actions/SendEmailAction.php | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/mailpoet/lib/Automation/Integrations/MailPoet/Actions/SendEmailAction.php b/mailpoet/lib/Automation/Integrations/MailPoet/Actions/SendEmailAction.php index 79bbfdbb52..bc736681b8 100644 --- a/mailpoet/lib/Automation/Integrations/MailPoet/Actions/SendEmailAction.php +++ b/mailpoet/lib/Automation/Integrations/MailPoet/Actions/SendEmailAction.php @@ -18,6 +18,7 @@ use MailPoet\Newsletter\NewslettersRepository; use MailPoet\Newsletter\Scheduler\AutomationEmailScheduler; use MailPoet\Settings\SettingsController; use MailPoet\Subscribers\SubscriberSegmentRepository; +use MailPoet\Subscribers\SubscribersRepository; use MailPoet\Validator\Builder; use MailPoet\Validator\Schema\ObjectSchema; use Throwable; @@ -34,6 +35,9 @@ class SendEmailAction implements Action { /** @var SubscriberSegmentRepository */ private $subscriberSegmentRepository; + /** @var SubscribersRepository */ + private $subscribersRepository; + /** @var AutomationEmailScheduler */ private $automationEmailScheduler; @@ -41,11 +45,13 @@ class SendEmailAction implements Action { SettingsController $settings, NewslettersRepository $newslettersRepository, SubscriberSegmentRepository $subscriberSegmentRepository, + SubscribersRepository $subscribersRepository, AutomationEmailScheduler $automationEmailScheduler ) { $this->settings = $settings; $this->newslettersRepository = $newslettersRepository; $this->subscriberSegmentRepository = $subscriberSegmentRepository; + $this->subscribersRepository = $subscribersRepository; $this->automationEmailScheduler = $automationEmailScheduler; } @@ -120,17 +126,17 @@ class SendEmailAction implements Action { 'status' => SubscriberEntity::STATUS_SUBSCRIBED, ]); - if (!$subscriberSegment) { + if ($newsletter->getType() !== NewsletterEntity::TYPE_TRANSACTIONAL && !$subscriberSegment) { throw InvalidStateException::create()->withMessage(sprintf("Subscriber ID '%s' is not subscribed to segment ID '%s'.", $subscriberId, $segmentId)); } - $subscriber = $subscriberSegment->getSubscriber(); + $subscriber = $subscriberSegment ? $subscriberSegment->getSubscriber() : $this->subscribersRepository->findOneById($subscriberId); if (!$subscriber) { throw InvalidStateException::create(); } $subscriberStatus = $subscriber->getStatus(); - if ($subscriberStatus !== SubscriberEntity::STATUS_SUBSCRIBED) { + if ($newsletter->getType() !== NewsletterEntity::TYPE_TRANSACTIONAL && $subscriberStatus !== SubscriberEntity::STATUS_SUBSCRIBED) { throw InvalidStateException::create()->withMessage(sprintf("Cannot schedule a newsletter for subscriber ID '%s' because their status is '%s'.", $subscriberId, $subscriberStatus)); }