From 2616c5a2634a6048d853e2f42d0ceaf349678037 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jan=20Jakes=CC=8C?= Date: Tue, 25 Jun 2019 17:33:24 +0200 Subject: [PATCH] Add per-subscriber cancel functionality for automatic emails [PREMIUM-121] --- lib/Newsletter/Scheduler/Scheduler.php | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/lib/Newsletter/Scheduler/Scheduler.php b/lib/Newsletter/Scheduler/Scheduler.php index 2cb9a59a70..1decce2eba 100644 --- a/lib/Newsletter/Scheduler/Scheduler.php +++ b/lib/Newsletter/Scheduler/Scheduler.php @@ -123,6 +123,27 @@ class Scheduler { } } + static function cancelAutomaticEmail($group, $event, $subscriber_id) { + $newsletters = self::getNewsletters(Newsletter::TYPE_AUTOMATIC, $group); + if (empty($newsletters)) { + return false; + } + + foreach ($newsletters as $newsletter) { + if ($newsletter->event !== $event) { + continue; + } + + // try to find existing scheduled task for given subscriber + $task = ScheduledTask::findOneScheduledByNewsletterIdAndSubscriberId($newsletter->id, $subscriber_id); + if ($task) { + SendingQueue::where('task_id', $task->id)->deleteMany(); + ScheduledTaskSubscriber::where('task_id', $task->id)->deleteMany(); + $task->delete(); + } + } + } + static function scheduleWPUserWelcomeNotification( $subscriber_id, $wp_user,