- Changes newsletter object to array in SendingQueue router
- Schedules post notification right after its creation
This commit is contained in:
@ -44,7 +44,8 @@ class SendingQueue {
|
|||||||
$newsletter = $newsletter->asArray();
|
$newsletter = $newsletter->asArray();
|
||||||
$newsletter['body'] = $this->getOrRenderNewsletterBody($queue, $newsletter);
|
$newsletter['body'] = $this->getOrRenderNewsletterBody($queue, $newsletter);
|
||||||
if ($newsletter['type'] === 'notification' &&
|
if ($newsletter['type'] === 'notification' &&
|
||||||
strpos($newsletter['body']['html'], 'data-post-id') === false) {
|
strpos($newsletter['body']['html'], 'data-post-id') === false
|
||||||
|
){
|
||||||
$queue->delete();
|
$queue->delete();
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -56,6 +56,8 @@ class Scheduler {
|
|||||||
}
|
}
|
||||||
$relation->value = $schedule;
|
$relation->value = $schedule;
|
||||||
$relation->save();
|
$relation->save();
|
||||||
|
return Newsletter::filter('filterWithOptions')
|
||||||
|
->findOne($newsletter_id)->asArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
static function schedulePostNotification($post_id) {
|
static function schedulePostNotification($post_id) {
|
||||||
|
@ -32,6 +32,8 @@ class SendingQueue {
|
|||||||
'result' => false,
|
'result' => false,
|
||||||
'errors' => array(__('Newsletter does not exist.'))
|
'errors' => array(__('Newsletter does not exist.'))
|
||||||
);
|
);
|
||||||
|
} else {
|
||||||
|
$newsletter = $newsletter->asArray();
|
||||||
}
|
}
|
||||||
|
|
||||||
// create or update newsletter options, including schedule time
|
// create or update newsletter options, including schedule time
|
||||||
@ -42,32 +44,33 @@ class SendingQueue {
|
|||||||
unset($data['options']);
|
unset($data['options']);
|
||||||
}
|
}
|
||||||
if ($options &&
|
if ($options &&
|
||||||
($newsletter->type === 'notification' || $newsletter->type === 'welcome')
|
($newsletter['type'] === 'notification' || $newsletter['type'] === 'welcome')
|
||||||
) {
|
) {
|
||||||
$option_fields = NewsletterOptionField::where(
|
$option_fields = NewsletterOptionField::where(
|
||||||
'newsletter_type', $newsletter->type
|
'newsletter_type', $newsletter['type']
|
||||||
)->findArray();
|
)->findArray();
|
||||||
foreach($option_fields as $option_field) {
|
foreach($option_fields as $option_field) {
|
||||||
if(isset($options[$option_field['name']])) {
|
if(isset($options[$option_field['name']])) {
|
||||||
$relation = NewsletterOption::where('option_field_id', $option_field['id'])
|
$relation = NewsletterOption::where('option_field_id', $option_field['id'])
|
||||||
->where('newsletter_id', $newsletter->id)
|
->where('newsletter_id', $newsletter['id'])
|
||||||
->findOne();
|
->findOne();
|
||||||
if (!$relation) {
|
if (!$relation) {
|
||||||
$relation = NewsletterOption::create();
|
$relation = NewsletterOption::create();
|
||||||
$relation->newsletter_id = $newsletter->id;
|
$relation->newsletter_id = $newsletter['id'];
|
||||||
$relation->option_field_id = $option_field['id'];
|
$relation->option_field_id = $option_field['id'];
|
||||||
}
|
}
|
||||||
$relation->value = $options[$option_field['name']];
|
$relation->value = $options[$option_field['name']];
|
||||||
$relation->save();
|
$relation->save();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($newsletter->type === 'notification') {
|
if ($newsletter['type'] === 'notification') {
|
||||||
Scheduler::processPostNotificationSchedule($newsletter->id);
|
// convert scheduling options into cron format and add to queue
|
||||||
|
$newsletter = Scheduler::processPostNotificationSchedule($newsletter['id']);
|
||||||
|
Scheduler::createPostNotificationQueue($newsletter);
|
||||||
}
|
}
|
||||||
$newsletter = Newsletter::filter('filterWithOptions')
|
|
||||||
->findOne($data['newsletter_id']);
|
|
||||||
}
|
}
|
||||||
if($newsletter->type === 'welcome') {
|
|
||||||
|
if($newsletter['type'] === 'welcome') {
|
||||||
return array(
|
return array(
|
||||||
'result' => true,
|
'result' => true,
|
||||||
'data' => array(
|
'data' => array(
|
||||||
@ -77,7 +80,7 @@ class SendingQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$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(
|
||||||
@ -86,15 +89,15 @@ class SendingQueue {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if($newsletter->type === 'notification') {
|
if($newsletter['type'] === 'notification') {
|
||||||
$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'];
|
||||||
}
|
}
|
||||||
$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';
|
||||||
@ -108,7 +111,7 @@ class SendingQueue {
|
|||||||
}
|
}
|
||||||
|
|
||||||
$queue = \MailPoet\Models\SendingQueue::create();
|
$queue = \MailPoet\Models\SendingQueue::create();
|
||||||
$queue->newsletter_id = $newsletter->id;
|
$queue->newsletter_id = $newsletter['id'];
|
||||||
|
|
||||||
$subscribers = Subscriber::getSubscribedInSegments($data['segments'])
|
$subscribers = Subscriber::getSubscribedInSegments($data['segments'])
|
||||||
->findArray();
|
->findArray();
|
||||||
|
Reference in New Issue
Block a user