From 971da8a94367a703e9bcc31f6b8ae4c5005c47af Mon Sep 17 00:00:00 2001 From: Jan Jakes Date: Tue, 5 Jul 2022 15:36:30 +0200 Subject: [PATCH] Add automation email scheduler service [MAILPOET-4465] --- mailpoet/lib/DI/ContainerConfigurator.php | 1 + .../Scheduler/AutomationEmailScheduler.php | 51 +++++++++++++++++++ 2 files changed, 52 insertions(+) create mode 100644 mailpoet/lib/Newsletter/Scheduler/AutomationEmailScheduler.php diff --git a/mailpoet/lib/DI/ContainerConfigurator.php b/mailpoet/lib/DI/ContainerConfigurator.php index 88d8a9ab94..4998fbfe99 100644 --- a/mailpoet/lib/DI/ContainerConfigurator.php +++ b/mailpoet/lib/DI/ContainerConfigurator.php @@ -427,6 +427,7 @@ class ContainerConfigurator implements IContainerConfigurator { $container->autowire(\MailPoet\Newsletter\Shortcodes\Categories\Subscriber::class)->setPublic(true); $container->autowire(\MailPoet\Newsletter\Statistics\NewsletterStatisticsRepository::class)->setPublic(true); $container->autowire(\MailPoet\Newsletter\Scheduler\AutomaticEmailScheduler::class)->setPublic(true); + $container->autowire(\MailPoet\Newsletter\Scheduler\AutomationEmailScheduler::class)->setPublic(true); $container->autowire(\MailPoet\Newsletter\Scheduler\WelcomeScheduler::class)->setPublic(true); $container->autowire(\MailPoet\Newsletter\Scheduler\PostNotificationScheduler::class)->setPublic(true); $container->autowire(\MailPoet\Newsletter\Scheduler\ReEngagementScheduler::class)->setPublic(true); diff --git a/mailpoet/lib/Newsletter/Scheduler/AutomationEmailScheduler.php b/mailpoet/lib/Newsletter/Scheduler/AutomationEmailScheduler.php new file mode 100644 index 0000000000..624c4e848a --- /dev/null +++ b/mailpoet/lib/Newsletter/Scheduler/AutomationEmailScheduler.php @@ -0,0 +1,51 @@ +entityManager = $entityManager; + $this->wp = $wp; + } + + public function createSendingTask(NewsletterEntity $email, SubscriberEntity $subscriber): ScheduledTaskEntity { + $task = new ScheduledTaskEntity(); + $task->setType(Sending::TASK_TYPE); + $task->setStatus(ScheduledTaskEntity::STATUS_SCHEDULED); + $task->setScheduledAt(Carbon::createFromTimestamp($this->wp->currentTime('timestamp'))); + $task->setPriority(ScheduledTaskEntity::PRIORITY_MEDIUM); + $this->entityManager->persist($task); + + $taskSubscriber = new ScheduledTaskSubscriberEntity($task, $subscriber); + $this->entityManager->persist($taskSubscriber); + + $queue = new SendingQueueEntity(); + $queue->setTask($task); + $queue->setNewsletter($email); + $queue->setCountToProcess(1); + $queue->setCountTotal(1); + $this->entityManager->persist($queue); + + $this->entityManager->flush(); + return $task; + } +}