From e5f3fabcda216e7325d0a08e00a731ae3ebcf44b Mon Sep 17 00:00:00 2001 From: Vlad Date: Tue, 21 Jun 2016 10:14:19 -0400 Subject: [PATCH] - Moves mailer logic into Mailer Task class --- .../Workers/SendingQueue/SendingQueue.php | 27 +++++++++---------- .../Workers/SendingQueue/Tasks/Mailer.php | 26 +++++++++++------- 2 files changed, 28 insertions(+), 25 deletions(-) diff --git a/lib/Cron/Workers/SendingQueue/SendingQueue.php b/lib/Cron/Workers/SendingQueue/SendingQueue.php index 2d2b7aa561..2f14d9e758 100644 --- a/lib/Cron/Workers/SendingQueue/SendingQueue.php +++ b/lib/Cron/Workers/SendingQueue/SendingQueue.php @@ -21,7 +21,7 @@ class SendingQueue { function __construct($timer = false) { $this->mailer_task = new MailerTask(); - $this->newsletter_task = new NewsletterTask(); + $this->newsletter_task = new NewsletterTask($this->mailer_task); $this->timer = ($timer) ? $timer : microtime(true); } @@ -40,8 +40,6 @@ class SendingQueue { } // get subscribers $queue->subscribers = SubscribersTask::get($queue->subscribers); - // configure mailer with newsletter data (from/reply-to) - $mailer = $this->mailer_task->configureMailer($newsletter); foreach(array_chunk($queue->subscribers['to_process'], self::BATCH_SIZE) as $subscribers_to_process_ids ) { @@ -62,7 +60,6 @@ class SendingQueue { } $queue = $this->processQueue( $queue, - $mailer, $newsletter, $found_subscribers ); @@ -70,7 +67,7 @@ class SendingQueue { } } - function processQueue($queue, $mailer, $newsletter, $subscribers) { + function processQueue($queue, $newsletter, $subscribers) { // determine if processing is done in bulk or individually $processing_method = $this->mailer_task->getProcessingMethod(); $prepared_newsletters = array(); @@ -89,7 +86,6 @@ class SendingQueue { } // format subscriber name/address according to mailer settings $prepared_subscribers[] = $this->mailer_task->prepareSubscriberForSending( - $mailer, $subscriber ); $prepared_subscribers_ids[] = $subscriber['id']; @@ -102,7 +98,7 @@ class SendingQueue { if($processing_method === 'individual') { $queue = $this->sendNewsletters( $queue, - $mailer, + $newsletter, $prepared_subscribers_ids, $prepared_newsletters[0], $prepared_subscribers[0], @@ -116,7 +112,7 @@ class SendingQueue { if($processing_method === 'bulk') { $queue = $this->sendNewsletters( $queue, - $mailer, + $newsletter, $prepared_subscribers_ids, $prepared_newsletters, $prepared_subscribers, @@ -127,24 +123,25 @@ class SendingQueue { } function sendNewsletters( - $queue, $mailer, $subscribers_ids, $newsletters, $subscribers, $statistics + $queue, $newsletter_object, $prepared_subscribers_ids, $prepared_newsletters, + $prepared_subscribers, $statistics ) { // send newsletter $send_result = $this->mailer_task->send( - $mailer, - $newsletters, - $subscribers + $newsletter_object, + $prepared_newsletters, + $prepared_subscribers ); if(!$send_result) { // update failed/to process list $queue->subscribers = SubscribersTask::updateFailedList( - $subscribers_ids, + $prepared_subscribers_ids, $queue->subscribers ); } else { // update processed/to process list $queue->subscribers = SubscribersTask::updateProcessedList( - $subscribers_ids, + $prepared_subscribers_ids, $queue->subscribers ); // log statistics @@ -154,7 +151,7 @@ class SendingQueue { $subscribers_to_process_count = count($queue->subscribers['to_process']); } $queue = $this->updateQueue($queue); - if ($subscribers_to_process_count) { + if($subscribers_to_process_count) { $this->mailer_task->checkSendingLimit(); } CronHelper::checkExecutionTimer($this->timer); diff --git a/lib/Cron/Workers/SendingQueue/Tasks/Mailer.php b/lib/Cron/Workers/SendingQueue/Tasks/Mailer.php index b87eb13df9..61bbc26777 100644 --- a/lib/Cron/Workers/SendingQueue/Tasks/Mailer.php +++ b/lib/Cron/Workers/SendingQueue/Tasks/Mailer.php @@ -13,9 +13,10 @@ class Mailer { function __construct() { $this->mta_config = $this->getMailerConfig(); $this->mta_log = $this->getMailerLog(); + $this->mailer = $this->configureMailer(); } - function configureMailer(array $newsletter) { + function configureMailer(array $newsletter = null, $mailer = false) { $sender['address'] = (!empty($newsletter['sender_address'])) ? $newsletter['sender_address'] : false; @@ -34,7 +35,13 @@ class Mailer { if(!$reply_to['address']) { $reply_to = false; } - $mailer = new MailerFactory($method = false, $sender, $reply_to); + if (!$mailer) { + $mailer = new MailerFactory($method = false, $sender, $reply_to); + } + else { + $mailer->mailer_instance->sender = $mailer->getSender($sender); + $mailer->mailer_instance->reply_to = $mailer->getReplyTo($reply_to); + } return $mailer; } @@ -69,16 +76,15 @@ class Mailer { 'individual'; } - function prepareSubscriberForSending($mailer, $subscriber) { - return ($mailer instanceof \MailPoet\Mailer\Mailer) ? - $mailer->transformSubscriber($subscriber) : - false; + function prepareSubscriberForSending(array $subscriber) { + return $this->mailer->transformSubscriber($subscriber); } - function send($mailer, $newsletter, $subscriber) { - return ($mailer instanceof \MailPoet\Mailer\Mailer) ? - $mailer->mailer_instance->send($newsletter, $subscriber) : - false; + function send(array $newsletter_object, $prepared_newsletters, + $prepared_subscribers + ) { + $mailer = $this->configureMailer($newsletter_object, $this->mailer); + return $mailer->mailer_instance->send($prepared_newsletters, $prepared_subscribers); } function checkSendingLimit() {