Remove deleted WP users from subscribers [MAILPOET-1012]

This commit is contained in:
stoletniy
2017-07-21 17:48:48 +03:00
parent 4062e0662d
commit 78f9945296
2 changed files with 16 additions and 14 deletions

View File

@@ -156,14 +156,12 @@ const item_actions = [
api_version: window.mailpoet_api_version, api_version: window.mailpoet_api_version,
endpoint: 'segments', endpoint: 'segments',
action: 'synchronize' action: 'synchronize'
}).done((response) => { }).done(() => {
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
if(response === true) { MailPoet.Notice.success(
MailPoet.Notice.success( (MailPoet.I18n.t('listSynchronized')).replace('%$1s', item.name)
(MailPoet.I18n.t('listSynchronized')).replace('%$1s', item.name) );
); refresh();
refresh();
}
}).fail((response) => { }).fail((response) => {
MailPoet.Modal.loading(false); MailPoet.Modal.loading(false);
if(response.errors.length > 0) { if(response.errors.length > 0) {

View File

@@ -26,13 +26,9 @@ class WP {
case 'deleted_user': case 'deleted_user':
case 'remove_user_from_blog': case 'remove_user_from_blog':
if($subscriber !== false) { if($subscriber !== false) {
// unlink subscriber to wp user // unlink subscriber from wp user and delete
$subscriber->setExpr('wp_user_id', 'NULL')->save(); $subscriber->set('wp_user_id', null);
$subscriber->delete();
// delete subscription to wp segment
SubscriberSegment::where('subscriber_id', $subscriber->id)
->where('segment_id', $wp_segment->id)
->deleteMany();
} }
break; break;
case 'profile_update': case 'profile_update':
@@ -97,6 +93,14 @@ class WP {
static::synchronizeUser($wp_user_id); static::synchronizeUser($wp_user_id);
} }
// remove orphaned wp segment subscribers (not having a matching wp user id),
// e.g. if wp users were deleted directly from the database
$wp_segment->subscribers()
->whereNotIn('wp_user_id', $wp_users)
->findResultSet()
->set('wp_user_id', null)
->delete();
return true; return true;
} }
} }