Refactor sendingQueue to distinguish bulk/individual sending method
[MAILPOET-1154]
This commit is contained in:
@ -129,12 +129,12 @@ class SendingQueue {
|
|||||||
'queue_id' => $queue->id
|
'queue_id' => $queue->id
|
||||||
);
|
);
|
||||||
if($processing_method === 'individual') {
|
if($processing_method === 'individual') {
|
||||||
$queue = $this->sendNewsletters(
|
$queue = $this->sendNewsletter(
|
||||||
$queue,
|
$queue,
|
||||||
$prepared_subscribers_ids,
|
$prepared_subscribers_ids[0],
|
||||||
$prepared_newsletters[0],
|
$prepared_newsletters[0],
|
||||||
$prepared_subscribers[0],
|
$prepared_subscribers[0],
|
||||||
$statistics,
|
$statistics[0],
|
||||||
array('unsubscribe_url' => $unsubscribe_urls[0])
|
array('unsubscribe_url' => $unsubscribe_urls[0])
|
||||||
);
|
);
|
||||||
$prepared_newsletters = array();
|
$prepared_newsletters = array();
|
||||||
@ -157,16 +157,37 @@ class SendingQueue {
|
|||||||
return $queue;
|
return $queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function sendNewsletter(
|
||||||
|
SendingTask $sending_task, $prepared_subscriber_id, $prepared_newsletter,
|
||||||
|
$prepared_subscriber, $statistics, $extra_params = array()
|
||||||
|
) {
|
||||||
|
// send newsletter
|
||||||
|
$send_result = $this->mailer_task->send(
|
||||||
|
$prepared_newsletter,
|
||||||
|
$prepared_subscriber,
|
||||||
|
$extra_params
|
||||||
|
);
|
||||||
|
return $this->processSendResult($sending_task, $send_result, [$prepared_subscriber_id], [$statistics]);
|
||||||
|
}
|
||||||
|
|
||||||
function sendNewsletters(
|
function sendNewsletters(
|
||||||
SendingTask $sending_task, $prepared_subscribers_ids, $prepared_newsletters,
|
SendingTask $sending_task, $prepared_subscribers_ids, $prepared_newsletters,
|
||||||
$prepared_subscribers, $statistics, $extra_params = array()
|
$prepared_subscribers, $statistics, $extra_params = array()
|
||||||
) {
|
) {
|
||||||
// send newsletter
|
// send newsletters
|
||||||
$send_result = $this->mailer_task->send(
|
$send_result = $this->mailer_task->sendBulk(
|
||||||
$prepared_newsletters,
|
$prepared_newsletters,
|
||||||
$prepared_subscribers,
|
$prepared_subscribers,
|
||||||
$extra_params
|
$extra_params
|
||||||
);
|
);
|
||||||
|
return $this->processSendResult($sending_task, $send_result, $prepared_subscribers_ids, $statistics);
|
||||||
|
}
|
||||||
|
|
||||||
|
private function processSendResult(
|
||||||
|
SendingTask $sending_task,
|
||||||
|
$send_result,
|
||||||
|
array $prepared_subscribers_ids, array $statistics
|
||||||
|
) {
|
||||||
// log error message and schedule retry/pause sending
|
// log error message and schedule retry/pause sending
|
||||||
if($send_result['response'] === false) {
|
if($send_result['response'] === false) {
|
||||||
$error = $send_result['error'];
|
$error = $send_result['error'];
|
||||||
|
@ -54,11 +54,25 @@ class Mailer {
|
|||||||
return $this->mailer->formatSubscriberNameAndEmailAddress($subscriber);
|
return $this->mailer->formatSubscriberNameAndEmailAddress($subscriber);
|
||||||
}
|
}
|
||||||
|
|
||||||
function send($prepared_newsletters, $prepared_subscribers, $extra_params = array()) {
|
function sendBulk($prepared_newsletters, $prepared_subscribers, $extra_params = array()) {
|
||||||
|
if($this->getProcessingMethod() === 'individual') {
|
||||||
|
throw new \LogicException('Trying to send a batch with individual processing method');
|
||||||
|
}
|
||||||
return $this->mailer->mailer_instance->send(
|
return $this->mailer->mailer_instance->send(
|
||||||
$prepared_newsletters,
|
$prepared_newsletters,
|
||||||
$prepared_subscribers,
|
$prepared_subscribers,
|
||||||
$extra_params
|
$extra_params
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function send($prepared_newsletter, $prepared_subscriber, $extra_params = array()) {
|
||||||
|
if($this->getProcessingMethod() === 'bulk') {
|
||||||
|
throw new \LogicException('Trying to send an individual email with a bulk processing method');
|
||||||
|
}
|
||||||
|
return $this->mailer->mailer_instance->send(
|
||||||
|
$prepared_newsletter,
|
||||||
|
$prepared_subscriber,
|
||||||
|
$extra_params
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -140,7 +140,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
array(
|
array(
|
||||||
'send' => null
|
'sendBulk' => null
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -174,7 +174,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
array(
|
array(
|
||||||
'send' => null
|
'sendBulk' => null
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
@ -313,7 +313,7 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
array(
|
array(
|
||||||
'send' => Expected::exactly(1, function($newsletter, $subscriber) {
|
'sendBulk' => Expected::exactly(1, function($newsletter, $subscriber) {
|
||||||
// newsletter body should not be empty
|
// newsletter body should not be empty
|
||||||
expect(!empty($newsletter[0]['body']['html']))->true();
|
expect(!empty($newsletter[0]['body']['html']))->true();
|
||||||
expect(!empty($newsletter[0]['body']['text']))->true();
|
expect(!empty($newsletter[0]['body']['text']))->true();
|
||||||
@ -598,16 +598,16 @@ class SendingQueueTest extends \MailPoetTest {
|
|||||||
Stub::make(
|
Stub::make(
|
||||||
new MailerTask(),
|
new MailerTask(),
|
||||||
array(
|
array(
|
||||||
'send' => true
|
'sendBulk' => true
|
||||||
)
|
)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
try {
|
try {
|
||||||
$sending_queue_worker->sendNewsletters(
|
$sending_queue_worker->sendNewsletters(
|
||||||
$sending_task->getObject(),
|
$sending_task->getObject(),
|
||||||
$prepared_subscribers = array(),
|
$prepared_subscribers = [],
|
||||||
$prepared_newsletters = false,
|
$prepared_newsletters = [],
|
||||||
$prepared_subscribers = false,
|
$prepared_subscribers = [],
|
||||||
$statistics = false
|
$statistics = false
|
||||||
);
|
);
|
||||||
$this->fail('Paused sending exception was not thrown.');
|
$this->fail('Paused sending exception was not thrown.');
|
||||||
|
@ -114,7 +114,10 @@ class MailerTest extends \MailPoetTest {
|
|||||||
return true;
|
return true;
|
||||||
})),
|
})),
|
||||||
$this
|
$this
|
||||||
)
|
),
|
||||||
|
'mailer_config' => [
|
||||||
|
'method' => null,
|
||||||
|
]
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
// mailer instance should be properly configured
|
// mailer instance should be properly configured
|
||||||
|
Reference in New Issue
Block a user