diff --git a/assets/js/src/segments/list.jsx b/assets/js/src/segments/list.jsx index 3ab1a5c8db..a39776ea08 100644 --- a/assets/js/src/segments/list.jsx +++ b/assets/js/src/segments/list.jsx @@ -156,14 +156,12 @@ const item_actions = [ api_version: window.mailpoet_api_version, endpoint: 'segments', action: 'synchronize' - }).done((response) => { + }).done(() => { MailPoet.Modal.loading(false); - if(response === true) { - MailPoet.Notice.success( - (MailPoet.I18n.t('listSynchronized')).replace('%$1s', item.name) - ); - refresh(); - } + MailPoet.Notice.success( + (MailPoet.I18n.t('listSynchronized')).replace('%$1s', item.name) + ); + refresh(); }).fail((response) => { MailPoet.Modal.loading(false); if(response.errors.length > 0) { diff --git a/lib/Segments/WP.php b/lib/Segments/WP.php index e0e01b4600..eceaecccca 100644 --- a/lib/Segments/WP.php +++ b/lib/Segments/WP.php @@ -26,13 +26,9 @@ class WP { case 'deleted_user': case 'remove_user_from_blog': if($subscriber !== false) { - // unlink subscriber to wp user - $subscriber->setExpr('wp_user_id', 'NULL')->save(); - - // delete subscription to wp segment - SubscriberSegment::where('subscriber_id', $subscriber->id) - ->where('segment_id', $wp_segment->id) - ->deleteMany(); + // unlink subscriber from wp user and delete + $subscriber->set('wp_user_id', null); + $subscriber->delete(); } break; case 'profile_update': @@ -97,6 +93,14 @@ class WP { 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; } }