- Implements "in any role" for WP user welcome e-mails
This commit is contained in:
@ -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);
|
||||
}
|
||||
|
||||
|
@ -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')
|
||||
|
@ -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
|
||||
);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user