- Saves welcome emails with high priority

- Fixes welcome emails not being sent to WP users
- Updates unit tests
This commit is contained in:
Vlad
2016-11-28 12:05:21 -05:00
parent e72a8efbd4
commit 5bc17f5e76
3 changed files with 16 additions and 10 deletions

View File

@@ -53,10 +53,10 @@ class Scheduler {
if(empty($newsletters)) return false;
foreach($newsletters as $newsletter) {
if($newsletter->event === 'user') {
if($old_user_data) {
if(!empty($old_user_data['roles'])) {
// do not schedule welcome newsletter if roles have not changed
$old_role = (array)$old_user_data->roles;
$new_role = (array)$wp_user->roles;
$old_role = $old_user_data['roles'];
$new_role = $wp_user['roles'];
if($newsletter->role === self::WORDPRESS_ALL_ROLES ||
!array_diff($old_role, $new_role)
) {
@@ -64,7 +64,7 @@ class Scheduler {
}
}
if($newsletter->role === self::WORDPRESS_ALL_ROLES ||
in_array($newsletter->role, (array)$wp_user->roles)
in_array($newsletter->role, $wp_user['roles'])
) {
self::createWelcomeNotificationQueue($newsletter, $subscriber_id);
}
@@ -99,6 +99,7 @@ class Scheduler {
$scheduled_at = $current_time;
}
$queue->status = SendingQueue::STATUS_SCHEDULED;
$queue->priority = SendingQueue::PRIORITY_HIGH;
$queue->scheduled_at = $scheduled_at;
return $queue->save();
}

View File

@@ -74,7 +74,7 @@ class WP {
Scheduler::scheduleWPUserWelcomeNotification(
$subscriber->id,
(array)$wp_user,
$old_wp_user_data
(array)$old_wp_user_data
);
}
}

View File

@@ -54,6 +54,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
expect($queue->newsletter_id)->equals($newsletter->id);
expect($queue->status)->equals(SendingQueue::STATUS_SCHEDULED);
expect($queue->scheduled_at)->equals(Scheduler::getNextRunDate('* 5 * * *'));
expect($queue->priority)->equals(SendingQueue::PRIORITY_MEDIUM);
// duplicate queue record should not be created
Scheduler::createPostNotificationQueue($newsletter);
@@ -73,6 +74,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
->findOne();
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
expect($queue->id)->greaterOrEquals(1);
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
->equals($current_time->addHours(2)->format('Y-m-d H:i'));
$this->_after();
@@ -84,6 +86,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
$queue = SendingQueue::where('newsletter_id', 1)
->findOne();
expect($queue->id)->greaterOrEquals(1);
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
->equals($current_time->addDays(2)->format('Y-m-d H:i'));
$this->_after();
@@ -95,6 +98,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
$queue = SendingQueue::where('newsletter_id', 1)
->findOne();
expect($queue->id)->greaterOrEquals(1);
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
->equals($current_time->addWeeks(2)->format('Y-m-d H:i'));
$this->_after();
@@ -106,6 +110,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
$queue = SendingQueue::where('newsletter_id', 1)
->findOne();
expect($queue->id)->greaterOrEquals(1);
expect($queue->priority)->equals(SendingQueue::PRIORITY_HIGH);
expect(Carbon::parse($queue->scheduled_at)->format('Y-m-d H:i'))
->equals($current_time->format('Y-m-d H:i'));
}
@@ -221,8 +226,8 @@ class NewsletterSchedulerTest extends MailPoetTest {
);
Scheduler::scheduleWPUserWelcomeNotification(
$subscriber_id = 10,
$wp_user = (object)array('roles' => array('editor')),
$old_user_data = (object)array('roles' => array('editor'))
$wp_user = array('roles' => array('editor')),
$old_user_data = array('roles' => array('editor'))
);
// queue is not created
@@ -245,7 +250,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
);
Scheduler::scheduleWPUserWelcomeNotification(
$subscriber_id = 10,
$wp_user = (object)array('roles' => array('administrator'))
$wp_user = array('roles' => array('administrator'))
);
// queue is not created
@@ -268,7 +273,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
);
Scheduler::scheduleWPUserWelcomeNotification(
$subscriber_id = 10,
$wp_user = (object)array('roles' => array('administrator'))
$wp_user = array('roles' => array('administrator'))
);
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));
@@ -293,7 +298,7 @@ class NewsletterSchedulerTest extends MailPoetTest {
);
Scheduler::scheduleWPUserWelcomeNotification(
$subscriber_id = 10,
$wp_user = (object)array('roles' => array('administrator'))
$wp_user = array('roles' => array('administrator'))
);
$current_time = Carbon::createFromTimestamp(current_time('timestamp'));