Sending queue refactoring WIP [MAILPOET-903]
This commit is contained in:
@ -105,8 +105,8 @@ class Newsletters extends APIEndpoint {
|
||||
$newsletter->schedule = Scheduler::processPostNotificationSchedule($newsletter);
|
||||
$next_run_date = Scheduler::getNextRunDate($newsletter->schedule);
|
||||
// find previously scheduled jobs and reschedule them using the new "next run" date
|
||||
SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
->where('status', SendingQueue::STATUS_SCHEDULED)
|
||||
SendingQueue::findTaskByNewsletterId($newsletter->id)
|
||||
->where('tasks.status', SendingQueue::STATUS_SCHEDULED)
|
||||
->findResultSet()
|
||||
->set('scheduled_at', $next_run_date)
|
||||
->save();
|
||||
@ -166,7 +166,7 @@ class Newsletters extends APIEndpoint {
|
||||
// if there are past due notifications, reschedule them for the next send date
|
||||
if($newsletter->type === Newsletter::TYPE_NOTIFICATION && $status === Newsletter::STATUS_ACTIVE) {
|
||||
$next_run_date = Scheduler::getNextRunDate($newsletter->schedule);
|
||||
$newsletter->queue()
|
||||
$newsletter->queue()->task()
|
||||
->whereLte('scheduled_at', Carbon::createFromTimestamp(current_time('timestamp')))
|
||||
->where('status', SendingQueue::STATUS_SCHEDULED)
|
||||
->findResultSet()
|
||||
|
@ -8,9 +8,9 @@ use MailPoet\Config\AccessControl;
|
||||
use MailPoet\Mailer\Mailer;
|
||||
use MailPoet\Models\Newsletter;
|
||||
use MailPoet\Models\SendingQueue as SendingQueueModel;
|
||||
use MailPoet\Models\Subscriber;
|
||||
use MailPoet\Newsletter\Scheduler\Scheduler;
|
||||
use MailPoet\Segments\SubscribersFinder;
|
||||
use MailPoet\Tasks\Sending as SendingTask;
|
||||
use MailPoet\Util\Helpers;
|
||||
|
||||
if(!defined('ABSPATH')) exit;
|
||||
@ -46,20 +46,22 @@ class SendingQueue extends APIEndpoint {
|
||||
}
|
||||
|
||||
// add newsletter to the sending queue
|
||||
$queue = SendingQueueModel::whereNull('status')
|
||||
->where('newsletter_id', $newsletter->id)
|
||||
->findOne();
|
||||
$queue = SendingQueueModel::findTaskByNewsletterId($newsletter->id)
|
||||
->whereNull('tasks.status')
|
||||
->findOne();
|
||||
|
||||
if(!empty($queue)) {
|
||||
return $this->errorResponse(array(
|
||||
APIError::NOT_FOUND => __('This newsletter is already being sent.', 'mailpoet')
|
||||
));
|
||||
}
|
||||
$queue = SendingQueueModel::where('newsletter_id', $newsletter->id)
|
||||
->where('status', SendingQueueModel::STATUS_SCHEDULED)
|
||||
$task = SendingQueueModel::findTaskByNewsletterId($newsletter->id)
|
||||
->where('tasks.status', SendingQueueModel::STATUS_SCHEDULED)
|
||||
->findOne();
|
||||
if(!$queue) {
|
||||
$queue = SendingQueueModel::create();
|
||||
if($task) {
|
||||
$queue = SendingTask::createFromTask($task);
|
||||
} else {
|
||||
$queue = SendingTask::create();
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
}
|
||||
|
||||
@ -72,8 +74,7 @@ class SendingQueue extends APIEndpoint {
|
||||
$queue->scheduled_at = Scheduler::formatDatetimeString(
|
||||
$newsletter->scheduledAt
|
||||
);
|
||||
$queue->subscribers = null;
|
||||
$queue->count_total = $queue->count_to_process = 0;
|
||||
$queue->removeAllSubscribers();
|
||||
} else {
|
||||
$segments = $newsletter->segments()->findArray();
|
||||
$finder = new SubscribersFinder();
|
||||
@ -86,12 +87,7 @@ class SendingQueue extends APIEndpoint {
|
||||
}
|
||||
$queue->status = null;
|
||||
$queue->scheduled_at = null;
|
||||
$queue->subscribers = serialize(
|
||||
array(
|
||||
'to_process' => $subscribers
|
||||
)
|
||||
);
|
||||
$queue->count_total = $queue->count_to_process = count($subscribers);
|
||||
$queue->setSubscribers($subscribers);
|
||||
|
||||
// set newsletter status
|
||||
$newsletter->setStatus(Newsletter::STATUS_SENDING);
|
||||
|
Reference in New Issue
Block a user