From ba4fd9eb1b0dfbb4a0d138be2c7d38e993865a3f Mon Sep 17 00:00:00 2001 From: Lysy Jan Date: Mon, 3 Aug 2020 11:15:19 +0200 Subject: [PATCH] Fix subscriber status resetting on WP user creation Fixes:#2960 [MAILPOET-3016] --- lib/Segments/WP.php | 5 +++++ tests/integration/Segments/WPTest.php | 13 +++++++++++++ 2 files changed, 18 insertions(+) diff --git a/lib/Segments/WP.php b/lib/Segments/WP.php index 137def432b..ed1f1df657 100644 --- a/lib/Segments/WP.php +++ b/lib/Segments/WP.php @@ -43,6 +43,11 @@ class WP { $wpSegment = Segment::getWPSegment(); if (!$wpSegment) return; + // find subscriber by email when is false + if (!$subscriber) { + $subscriber = Subscriber::where('email', $wpUser->user_email)->findOne(); // phpcs:ignore Squiz.NamingConventions.ValidVariableName.NotCamelCaps + } + $scheduleWelcomeNewsletter = false; if (in_array($currentFilter, ['profile_update', 'user_register'])) { $scheduleWelcomeNewsletter = true; diff --git a/tests/integration/Segments/WPTest.php b/tests/integration/Segments/WPTest.php index f18ffce38d..becb14f84d 100644 --- a/tests/integration/Segments/WPTest.php +++ b/tests/integration/Segments/WPTest.php @@ -32,6 +32,19 @@ class WPTest extends \MailPoetTest { expect($dbSubscriber->status)->equals(Subscriber::STATUS_SUBSCRIBED); } + public function testSynchronizeUserKeepsStatusOfOldSubscriber() { + $randomNumber = rand(); + $subscriber = Subscriber::createOrUpdate([ + 'email' => 'user-sync-test' . $randomNumber . '@example.com', + 'status' => Subscriber::STATUS_SUBSCRIBED, + 'wp_user_id' => null, + ]); + $id = $this->insertUser($randomNumber); + WP::synchronizeUser($id); + $dbSubscriber = Subscriber::where('wp_user_id', $id)->findOne(); + expect($dbSubscriber->status)->equals($subscriber->status); + } + public function testSynchronizeUserStatusIsSubscribedForNewUserWithSignUpConfirmationDisabled() { $this->settings->set('signup_confirmation', ['enabled' => '0']); $randomNumber = rand();