- 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['segments'] = Segment::findArray();
|
||||||
$data['settings'] = Setting::getAll();
|
$data['settings'] = Setting::getAll();
|
||||||
$data['roles'] = $wp_roles->get_names();
|
$data['roles'] = $wp_roles->get_names();
|
||||||
|
$data['roles']['mailpoet_all'] = __('In any WordPress role');
|
||||||
|
|
||||||
echo $this->renderer->render('newsletters.html', $data);
|
echo $this->renderer->render('newsletters.html', $data);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -66,14 +66,26 @@ class Scheduler {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static function welcomeForNewWPUser($subscriber_id, array $wp_user) {
|
static function welcomeForNewWPUser($subscriber_id, array $wp_user, $old_user_data) {
|
||||||
$newsletters = self::getWelcomeNewsletters();
|
$newsletters = self::getWelcomeNewsletters();
|
||||||
if(!count($newsletters)) return;
|
if(!count($newsletters)) return;
|
||||||
foreach($newsletters as $newsletter) {
|
foreach($newsletters as $newsletter) {
|
||||||
if($newsletter['event'] === 'user' &&
|
if($newsletter['event'] === 'user') {
|
||||||
in_array($newsletter['role'], $wp_user['roles'])
|
if($old_user_data) {
|
||||||
) {
|
// do not schedule welcome newsletter if roles have not changed
|
||||||
self::createSendingQueueEntry($newsletter, $subscriber_id);
|
$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);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -19,16 +19,9 @@ class WP {
|
|||||||
$subscriber->delete();
|
$subscriber->delete();
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
|
case 'profile_update':
|
||||||
case 'user_register':
|
case 'user_register':
|
||||||
$schedule_welcome_newsletter = true;
|
$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':
|
case 'added_existing_user':
|
||||||
default:
|
default:
|
||||||
// get first name & last name
|
// get first name & last name
|
||||||
@ -57,7 +50,8 @@ class WP {
|
|||||||
if(isset($schedule_welcome_newsletter)) {
|
if(isset($schedule_welcome_newsletter)) {
|
||||||
Scheduler::welcomeForNewWPUser(
|
Scheduler::welcomeForNewWPUser(
|
||||||
$subscriber->id,
|
$subscriber->id,
|
||||||
(array) $wp_user
|
(array) $wp_user,
|
||||||
|
$old_wp_user_data
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user