Updates method names
This commit is contained in:
@ -30,7 +30,7 @@ class Scheduler {
|
|||||||
->where('post_id', $post_id)
|
->where('post_id', $post_id)
|
||||||
->findOne();
|
->findOne();
|
||||||
if($post === false) {
|
if($post === false) {
|
||||||
self::createPostNotificationQueue($newsletter);
|
self::createPostNotificationSendingTask($newsletter);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -42,7 +42,7 @@ class Scheduler {
|
|||||||
if($newsletter->event === 'segment' &&
|
if($newsletter->event === 'segment' &&
|
||||||
in_array($newsletter->segment, $segments)
|
in_array($newsletter->segment, $segments)
|
||||||
) {
|
) {
|
||||||
self::createWelcomeNotificationQueue($newsletter, $subscriber_id);
|
self::createWelcomeNotificationSendingTask($newsletter, $subscriber_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -53,7 +53,7 @@ class Scheduler {
|
|||||||
foreach($newsletters as $newsletter) {
|
foreach($newsletters as $newsletter) {
|
||||||
if($newsletter->event !== $event) continue;
|
if($newsletter->event !== $event) continue;
|
||||||
if(is_callable($scheduling_condition) && !$scheduling_condition($newsletter)) continue;
|
if(is_callable($scheduling_condition) && !$scheduling_condition($newsletter)) continue;
|
||||||
self::createAutomaticEmailQueue($newsletter, $subscriber_id, $meta);
|
self::createAutomaticEmailSendingTask($newsletter, $subscriber_id, $meta);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -79,49 +79,49 @@ class Scheduler {
|
|||||||
if($newsletter->role === self::WORDPRESS_ALL_ROLES ||
|
if($newsletter->role === self::WORDPRESS_ALL_ROLES ||
|
||||||
in_array($newsletter->role, $wp_user['roles'])
|
in_array($newsletter->role, $wp_user['roles'])
|
||||||
) {
|
) {
|
||||||
self::createWelcomeNotificationQueue($newsletter, $subscriber_id);
|
self::createWelcomeNotificationSendingTask($newsletter, $subscriber_id);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static function createWelcomeNotificationQueue($newsletter, $subscriber_id) {
|
static function createWelcomeNotificationSendingTask($newsletter, $subscriber_id) {
|
||||||
$previously_scheduled_notification = SendingQueue::joinWithSubscribers()
|
$previously_scheduled_notification = SendingQueue::joinWithSubscribers()
|
||||||
->where('queues.newsletter_id', $newsletter->id)
|
->where('queues.newsletter_id', $newsletter->id)
|
||||||
->where('subscribers.subscriber_id', $subscriber_id)
|
->where('subscribers.subscriber_id', $subscriber_id)
|
||||||
->findOne();
|
->findOne();
|
||||||
if(!empty($previously_scheduled_notification)) return;
|
if(!empty($previously_scheduled_notification)) return;
|
||||||
$queue = SendingTask::create();
|
$sending_task = SendingTask::create();
|
||||||
$queue->newsletter_id = $newsletter->id;
|
$sending_task->newsletter_id = $newsletter->id;
|
||||||
$queue->setSubscribers(array($subscriber_id));
|
$sending_task->setSubscribers(array($subscriber_id));
|
||||||
$queue->status = SendingQueue::STATUS_SCHEDULED;
|
$sending_task->status = SendingQueue::STATUS_SCHEDULED;
|
||||||
$queue->priority = SendingQueue::PRIORITY_HIGH;
|
$sending_task->priority = SendingQueue::PRIORITY_HIGH;
|
||||||
$queue->scheduled_at = self::getScheduledTimeForWelcomeNotificationOrAutomaticEmail(
|
$sending_task->scheduled_at = self::getScheduledTimeWithDelay(
|
||||||
$newsletter->afterTimeType,
|
$newsletter->afterTimeType,
|
||||||
$newsletter->afterTimeNumber
|
$newsletter->afterTimeNumber
|
||||||
);
|
);
|
||||||
return $queue->save();
|
return $sending_task->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
static function createAutomaticEmailQueue($newsletter, $subscriber_id, $meta) {
|
static function createAutomaticEmailSendingTask($newsletter, $subscriber_id, $meta) {
|
||||||
$queue = SendingTask::create();
|
$sending_task = SendingTask::create();
|
||||||
$queue->newsletter_id = $newsletter->id;
|
$sending_task->newsletter_id = $newsletter->id;
|
||||||
if($newsletter->sendTo === 'user' && $subscriber_id) {
|
if($newsletter->sendTo === 'user' && $subscriber_id) {
|
||||||
$queue->setSubscribers(array($subscriber_id));
|
$sending_task->setSubscribers(array($subscriber_id));
|
||||||
}
|
}
|
||||||
if($meta) {
|
if($meta) {
|
||||||
$queue->__set('meta', $meta);
|
$sending_task->__set('meta', $meta);
|
||||||
}
|
}
|
||||||
$queue->status = SendingQueue::STATUS_SCHEDULED;
|
$sending_task->status = SendingQueue::STATUS_SCHEDULED;
|
||||||
$queue->priority = SendingQueue::PRIORITY_MEDIUM;
|
$sending_task->priority = SendingQueue::PRIORITY_MEDIUM;
|
||||||
$queue->scheduled_at = self::getScheduledTimeForWelcomeNotificationOrAutomaticEmail(
|
$sending_task->scheduled_at = self::getScheduledTimeWithDelay(
|
||||||
$newsletter->afterTimeType,
|
$newsletter->afterTimeType,
|
||||||
$newsletter->afterTimeNumber
|
$newsletter->afterTimeNumber
|
||||||
);
|
);
|
||||||
return $queue->save();
|
return $sending_task->save();
|
||||||
}
|
}
|
||||||
|
|
||||||
static function createPostNotificationQueue($newsletter) {
|
static function createPostNotificationSendingTask($newsletter) {
|
||||||
$existing_notification_history = Newsletter::where('parent_id', $newsletter->id)
|
$existing_notification_history = Newsletter::where('parent_id', $newsletter->id)
|
||||||
->where('type', Newsletter::TYPE_NOTIFICATION_HISTORY)
|
->where('type', Newsletter::TYPE_NOTIFICATION_HISTORY)
|
||||||
->where('status', Newsletter::STATUS_SENDING)
|
->where('status', Newsletter::STATUS_SENDING)
|
||||||
@ -129,7 +129,6 @@ class Scheduler {
|
|||||||
if($existing_notification_history) {
|
if($existing_notification_history) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
$next_run_date = self::getNextRunDate($newsletter->schedule);
|
$next_run_date = self::getNextRunDate($newsletter->schedule);
|
||||||
if(!$next_run_date) return;
|
if(!$next_run_date) return;
|
||||||
// do not schedule duplicate queues for the same time
|
// do not schedule duplicate queues for the same time
|
||||||
@ -137,12 +136,12 @@ class Scheduler {
|
|||||||
->where('tasks.scheduled_at', $next_run_date)
|
->where('tasks.scheduled_at', $next_run_date)
|
||||||
->findOne();
|
->findOne();
|
||||||
if($existing_queue) return;
|
if($existing_queue) return;
|
||||||
$queue = SendingTask::create();
|
$sending_task = SendingTask::create();
|
||||||
$queue->newsletter_id = $newsletter->id;
|
$sending_task->newsletter_id = $newsletter->id;
|
||||||
$queue->status = SendingQueue::STATUS_SCHEDULED;
|
$sending_task->status = SendingQueue::STATUS_SCHEDULED;
|
||||||
$queue->scheduled_at = $next_run_date;
|
$sending_task->scheduled_at = $next_run_date;
|
||||||
$queue->save();
|
$sending_task->save();
|
||||||
return $queue;
|
return $sending_task;
|
||||||
}
|
}
|
||||||
|
|
||||||
static function processPostNotificationSchedule($newsletter) {
|
static function processPostNotificationSchedule($newsletter) {
|
||||||
@ -209,19 +208,7 @@ class Scheduler {
|
|||||||
return $previous_run_date;
|
return $previous_run_date;
|
||||||
}
|
}
|
||||||
|
|
||||||
static function getNewsletters($type, $group = false) {
|
static function getScheduledTimeWithDelay($after_time_type, $after_time_number) {
|
||||||
return Newsletter::getPublished()
|
|
||||||
->filter('filterType', $type, $group)
|
|
||||||
->filter('filterStatus', Newsletter::STATUS_ACTIVE)
|
|
||||||
->filter('filterWithOptions')
|
|
||||||
->findMany();
|
|
||||||
}
|
|
||||||
|
|
||||||
static function formatDatetimeString($datetime_string) {
|
|
||||||
return Carbon::parse($datetime_string)->format('Y-m-d H:i:s');
|
|
||||||
}
|
|
||||||
|
|
||||||
static function getScheduledTimeForWelcomeNotificationOrAutomaticEmail($after_time_type, $after_time_number) {
|
|
||||||
$current_time = Carbon::createFromTimestamp(WPFunctions::currentTime('timestamp'));
|
$current_time = Carbon::createFromTimestamp(WPFunctions::currentTime('timestamp'));
|
||||||
switch($after_time_type) {
|
switch($after_time_type) {
|
||||||
case 'hours':
|
case 'hours':
|
||||||
@ -234,4 +221,16 @@ class Scheduler {
|
|||||||
return $current_time;
|
return $current_time;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static function getNewsletters($type, $group = false) {
|
||||||
|
return Newsletter::getPublished()
|
||||||
|
->filter('filterType', $type, $group)
|
||||||
|
->filter('filterStatus', Newsletter::STATUS_ACTIVE)
|
||||||
|
->filter('filterWithOptions')
|
||||||
|
->findMany();
|
||||||
|
}
|
||||||
|
|
||||||
|
static function formatDatetimeString($datetime_string) {
|
||||||
|
return Carbon::parse($datetime_string)->format('Y-m-d H:i:s');
|
||||||
|
}
|
||||||
}
|
}
|
@ -75,12 +75,12 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
->equals('2016-04-20 16:00:00');
|
->equals('2016-04-20 16:00:00');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCreatesPostNotificationQueueRecord() {
|
function testItCreatesPostNotificationSendingTask() {
|
||||||
$newsletter = $this->_createNewsletter();
|
$newsletter = $this->_createNewsletter();
|
||||||
$newsletter->schedule = '* 5 * * *';
|
$newsletter->schedule = '* 5 * * *';
|
||||||
|
|
||||||
// new queue record should be created
|
// new queue record should be created
|
||||||
$queue = Scheduler::createPostNotificationQueue($newsletter);
|
$queue = Scheduler::createPostNotificationSendingTask($newsletter);
|
||||||
expect(SendingQueue::findMany())->count(1);
|
expect(SendingQueue::findMany())->count(1);
|
||||||
expect($queue->newsletter_id)->equals($newsletter->id);
|
expect($queue->newsletter_id)->equals($newsletter->id);
|
||||||
expect($queue->status)->equals(SendingQueue::STATUS_SCHEDULED);
|
expect($queue->status)->equals(SendingQueue::STATUS_SCHEDULED);
|
||||||
@ -88,11 +88,11 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
expect($queue->priority)->equals(SendingQueue::PRIORITY_MEDIUM);
|
expect($queue->priority)->equals(SendingQueue::PRIORITY_MEDIUM);
|
||||||
|
|
||||||
// duplicate queue record should not be created
|
// duplicate queue record should not be created
|
||||||
Scheduler::createPostNotificationQueue($newsletter);
|
Scheduler::createPostNotificationSendingTask($newsletter);
|
||||||
expect(SendingQueue::findMany())->count(1);
|
expect(SendingQueue::findMany())->count(1);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItDoesNotCreateDuplicateWelcomeNotificationQueueRecords() {
|
function testItDoesNotCreateDuplicateWelcomeNotificationSendingTasks() {
|
||||||
$newsletter = (object)array(
|
$newsletter = (object)array(
|
||||||
'id' => 1,
|
'id' => 1,
|
||||||
'afterTimeNumber' => 2,
|
'afterTimeNumber' => 2,
|
||||||
@ -105,15 +105,15 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$existing_queue->save();
|
$existing_queue->save();
|
||||||
|
|
||||||
// queue is not scheduled
|
// queue is not scheduled
|
||||||
Scheduler::createWelcomeNotificationQueue($newsletter, $existing_subscriber);
|
Scheduler::createWelcomeNotificationSendingTask($newsletter, $existing_subscriber);
|
||||||
expect(SendingQueue::findMany())->count(1);
|
expect(SendingQueue::findMany())->count(1);
|
||||||
|
|
||||||
// queue is not scheduled
|
// queue is not scheduled
|
||||||
Scheduler::createWelcomeNotificationQueue($newsletter, 1);
|
Scheduler::createWelcomeNotificationSendingTask($newsletter, 1);
|
||||||
expect(SendingQueue::findMany())->count(2);
|
expect(SendingQueue::findMany())->count(2);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCreatesWelcomeNotificationQueueRecord() {
|
function testItCreatesWelcomeNotificationSendingTask() {
|
||||||
$newsletter = (object)array(
|
$newsletter = (object)array(
|
||||||
'id' => 1,
|
'id' => 1,
|
||||||
'afterTimeNumber' => 2
|
'afterTimeNumber' => 2
|
||||||
@ -121,7 +121,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
// queue is scheduled delivery in 2 hours
|
// queue is scheduled delivery in 2 hours
|
||||||
$newsletter->afterTimeType = 'hours';
|
$newsletter->afterTimeType = 'hours';
|
||||||
Scheduler::createWelcomeNotificationQueue($newsletter, $subscriber_id = 1);
|
Scheduler::createWelcomeNotificationSendingTask($newsletter, $subscriber_id = 1);
|
||||||
$queue = SendingQueue::findTaskByNewsletterId(1)
|
$queue = SendingQueue::findTaskByNewsletterId(1)
|
||||||
->findOne();
|
->findOne();
|
||||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||||
@ -133,7 +133,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
// queue is scheduled for delivery in 2 days
|
// queue is scheduled for delivery in 2 days
|
||||||
$newsletter->afterTimeType = 'days';
|
$newsletter->afterTimeType = 'days';
|
||||||
Scheduler::createWelcomeNotificationQueue($newsletter, $subscriber_id = 1);
|
Scheduler::createWelcomeNotificationSendingTask($newsletter, $subscriber_id = 1);
|
||||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||||
$queue = SendingQueue::findTaskByNewsletterId(1)
|
$queue = SendingQueue::findTaskByNewsletterId(1)
|
||||||
->findOne();
|
->findOne();
|
||||||
@ -145,7 +145,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
// queue is scheduled for delivery in 2 weeks
|
// queue is scheduled for delivery in 2 weeks
|
||||||
$newsletter->afterTimeType = 'weeks';
|
$newsletter->afterTimeType = 'weeks';
|
||||||
Scheduler::createWelcomeNotificationQueue($newsletter, $subscriber_id = 1);
|
Scheduler::createWelcomeNotificationSendingTask($newsletter, $subscriber_id = 1);
|
||||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||||
$queue = SendingQueue::findTaskByNewsletterId(1)
|
$queue = SendingQueue::findTaskByNewsletterId(1)
|
||||||
->findOne();
|
->findOne();
|
||||||
@ -157,7 +157,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
|
|
||||||
// queue is scheduled for immediate delivery
|
// queue is scheduled for immediate delivery
|
||||||
$newsletter->afterTimeType = null;
|
$newsletter->afterTimeType = null;
|
||||||
Scheduler::createWelcomeNotificationQueue($newsletter, $subscriber_id = 1);
|
Scheduler::createWelcomeNotificationSendingTask($newsletter, $subscriber_id = 1);
|
||||||
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
|
||||||
$queue = SendingQueue::findTaskByNewsletterId(1)
|
$queue = SendingQueue::findTaskByNewsletterId(1)
|
||||||
->findOne();
|
->findOne();
|
||||||
@ -454,7 +454,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
->equals('2017-01-01 13:01:00');
|
->equals('2017-01-01 13:01:00');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCreatesAutomaticEmailQueueRecordWithSubscriberAndMeta() {
|
function testItCreatesAutomaticEmailSendingTaskWithSubscriberAndMeta() {
|
||||||
$newsletter = $this->_createNewsletter(Newsletter::TYPE_AUTOMATIC);
|
$newsletter = $this->_createNewsletter(Newsletter::TYPE_AUTOMATIC);
|
||||||
$this->_createNewsletterOptions(
|
$this->_createNewsletterOptions(
|
||||||
$newsletter->id,
|
$newsletter->id,
|
||||||
@ -471,7 +471,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
$subscriber->save();
|
$subscriber->save();
|
||||||
$meta = array('some' => 'value');
|
$meta = array('some' => 'value');
|
||||||
|
|
||||||
Scheduler::createAutomaticEmailQueue($newsletter, $subscriber->id, $meta);
|
Scheduler::createAutomaticEmailSendingTask($newsletter, $subscriber->id, $meta);
|
||||||
// new queue record should be created with meta data
|
// new queue record should be created with meta data
|
||||||
$queue = SendingQueue::where('newsletter_id', $newsletter->id)->findOne();
|
$queue = SendingQueue::where('newsletter_id', $newsletter->id)->findOne();
|
||||||
expect($queue->getMeta())->equals($meta);
|
expect($queue->getMeta())->equals($meta);
|
||||||
@ -489,7 +489,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
expect($subscribers[0]->id)->equals($subscriber->id);
|
expect($subscribers[0]->id)->equals($subscriber->id);
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItCreatesAutomaticEmailQueueRecord() {
|
function testItCreatesAutomaticEmailSendingTask() {
|
||||||
$newsletter = $this->_createNewsletter(Newsletter::TYPE_AUTOMATIC);
|
$newsletter = $this->_createNewsletter(Newsletter::TYPE_AUTOMATIC);
|
||||||
$this->_createNewsletterOptions(
|
$this->_createNewsletterOptions(
|
||||||
$newsletter->id,
|
$newsletter->id,
|
||||||
@ -502,7 +502,7 @@ class SchedulerTest extends \MailPoetTest {
|
|||||||
);
|
);
|
||||||
$newsletter = Newsletter::filter('filterWithOptions')->findOne($newsletter->id);
|
$newsletter = Newsletter::filter('filterWithOptions')->findOne($newsletter->id);
|
||||||
|
|
||||||
Scheduler::createAutomaticEmailQueue($newsletter, $subscriber = null, $meta = null);
|
Scheduler::createAutomaticEmailSendingTask($newsletter, $subscriber = null, $meta = null);
|
||||||
// new queue record should be created without meta
|
// new queue record should be created without meta
|
||||||
$queue = SendingQueue::where('newsletter_id', $newsletter->id)->findOne();
|
$queue = SendingQueue::where('newsletter_id', $newsletter->id)->findOne();
|
||||||
expect($queue->getMeta())->isEmpty();
|
expect($queue->getMeta())->isEmpty();
|
||||||
|
Reference in New Issue
Block a user