- Implements "in any role" for WP user welcome e-mails

This commit is contained in:
Vlad
2016-03-24 10:00:01 -04:00
parent b81764402b
commit 4d45635d03
3 changed files with 22 additions and 14 deletions

View File

@ -367,6 +367,8 @@ class Menu {
$data['segments'] = Segment::findArray();
$data['settings'] = Setting::getAll();
$data['roles'] = $wp_roles->get_names();
$data['roles']['mailpoet_all'] = __('In any WordPress role');
echo $this->renderer->render('newsletters.html', $data);
}

View File

@ -66,17 +66,29 @@ class Scheduler {
}
}
static function welcomeForNewWPUser($subscriber_id, array $wp_user) {
static function welcomeForNewWPUser($subscriber_id, array $wp_user, $old_user_data) {
$newsletters = self::getWelcomeNewsletters();
if(!count($newsletters)) return;
foreach($newsletters as $newsletter) {
if($newsletter['event'] === 'user' &&
if($newsletter['event'] === 'user') {
if($old_user_data) {
// do not schedule welcome newsletter if roles have not changed
$old_role = (array) $old_user_data->roles;
$new_role = (array) $wp_user->roles;
if($newsletter['role'] === 'mailpoet_all' ||
!array_diff($old_role, $new_role)
) {
continue;
}
}
if($newsletter['role'] === 'mailpoet_all' ||
in_array($newsletter['role'], $wp_user['roles'])
) {
self::createSendingQueueEntry($newsletter, $subscriber_id);
}
}
}
}
private static function getWelcomeNewsletters() {
return Newsletter::where('type', 'welcome')

View File

@ -19,16 +19,9 @@ class WP {
$subscriber->delete();
}
break;
case 'profile_update':
case 'user_register':
$schedule_welcome_newsletter = true;
case 'profile_update':
if ($old_wp_user_data) {
// do not schedule welcome newsletter if roles have not changed
$old_role = (array) $old_wp_user_data->roles;
$new_role = (array) $wp_user->roles;
if (!array_diff($old_role, $new_role))
$schedule_welcome_newsletter = false;
}
case 'added_existing_user':
default:
// get first name & last name
@ -57,7 +50,8 @@ class WP {
if(isset($schedule_welcome_newsletter)) {
Scheduler::welcomeForNewWPUser(
$subscriber->id,
(array) $wp_user
(array) $wp_user,
$old_wp_user_data
);
}
}