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