Fix scheduling immediate standard newsletters
This commit is contained in:
@@ -64,7 +64,7 @@ class Scheduler {
|
||||
$relation->value = $schedule;
|
||||
$relation->save();
|
||||
return Newsletter::filter('filterWithOptions')
|
||||
->findOne($newsletter_id)->asArray();
|
||||
->findOne($newsletter_id);
|
||||
}
|
||||
|
||||
static function schedulePostNotification($post_id) {
|
||||
@@ -170,14 +170,14 @@ class Scheduler {
|
||||
}
|
||||
|
||||
static function createPostNotificationQueue($newsletter) {
|
||||
$next_run_date = self::getNextRunDate($newsletter['schedule']);
|
||||
$next_run_date = self::getNextRunDate($newsletter->schedule);
|
||||
// do not schedule duplicate queues for the same time
|
||||
$existing_queue = SendingQueue::where('newsletter_id', $newsletter['id'])
|
||||
$existing_queue = SendingQueue::where('newsletter_id', $newsletter->id)
|
||||
->where('scheduled_at', $next_run_date)
|
||||
->findOne();
|
||||
if($existing_queue) return;
|
||||
$queue = SendingQueue::create();
|
||||
$queue->newsletter_id = $newsletter['id'];
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
$queue->status = 'scheduled';
|
||||
$queue->scheduled_at = $next_run_date;
|
||||
$queue->save();
|
||||
|
@@ -32,24 +32,22 @@ class SendingQueue {
|
||||
'result' => false,
|
||||
'errors' => array(__('Newsletter does not exist.'))
|
||||
);
|
||||
} else {
|
||||
$newsletter = $newsletter->asArray();
|
||||
}
|
||||
|
||||
if($newsletter['type'] === 'welcome') {
|
||||
if($newsletter->type === 'welcome') {
|
||||
return array(
|
||||
'result' => true,
|
||||
'data' => array(
|
||||
'message' => __('Your welcome notification is activated.')
|
||||
)
|
||||
);
|
||||
} elseif ($newsletter['type'] === 'notification') {
|
||||
$newsletter = Scheduler::processPostNotificationSchedule($newsletter['id']);
|
||||
} elseif ($newsletter->type === 'notification') {
|
||||
$newsletter = Scheduler::processPostNotificationSchedule($newsletter->id);
|
||||
Scheduler::createPostNotificationQueue($newsletter);
|
||||
}
|
||||
|
||||
$queue = \MailPoet\Models\SendingQueue::whereNull('status')
|
||||
->where('newsletter_id', $newsletter['id'])
|
||||
->where('newsletter_id', $newsletter->id)
|
||||
->findOne();
|
||||
if(!empty($queue)) {
|
||||
return array(
|
||||
@@ -59,15 +57,15 @@ class SendingQueue {
|
||||
}
|
||||
|
||||
$queue = \MailPoet\Models\SendingQueue::where('status', 'scheduled')
|
||||
->where('newsletter_id', $newsletter['id'])
|
||||
->where('newsletter_id', $newsletter->id)
|
||||
->findOne();
|
||||
if(!$queue) {
|
||||
$queue = \MailPoet\Models\SendingQueue::create();
|
||||
$queue->newsletter_id = $newsletter['id'];
|
||||
$queue->newsletter_id = $newsletter->id;
|
||||
}
|
||||
|
||||
if($newsletter['type'] === 'notification') {
|
||||
$schedule = Cron::factory($newsletter['schedule']);
|
||||
if($newsletter->type === 'notification') {
|
||||
$schedule = Cron::factory($newsletter->schedule);
|
||||
$queue->scheduled_at =
|
||||
$schedule->getNextRunDate(current_time('mysql'))->format('Y-m-d H:i:s');
|
||||
$queue->status = 'scheduled';
|
||||
@@ -80,10 +78,10 @@ class SendingQueue {
|
||||
);
|
||||
}
|
||||
|
||||
if ((bool)$newsletter['isScheduled']) {
|
||||
if ((bool)$newsletter->isScheduled) {
|
||||
$queue->status = 'scheduled';
|
||||
$queue->scheduled_at = Scheduler::scheduleFromTimestamp(
|
||||
$newsletter['scheduledAt']
|
||||
$newsletter->scheduledAt
|
||||
);
|
||||
|
||||
$message = __('The newsletter has been scheduled.');
|
||||
|
Reference in New Issue
Block a user