diff --git a/lib/Models/Subscriber.php b/lib/Models/Subscriber.php index 4a5973f5f8..3031d2672e 100644 --- a/lib/Models/Subscriber.php +++ b/lib/Models/Subscriber.php @@ -838,6 +838,7 @@ class Subscriber extends Model { 'UPDATE `' . self::$_table . '` ' . 'SET ' . implode(', ', $sql('statement')) . ' '. (($updated_at) ? ', updated_at = "' . $updated_at . '" ' : '') . + ', unconfirmed_data = NULL ' . 'WHERE email IN ' . '(' . rtrim(str_repeat('?,', count($subscribers)), ',') . ')', array_merge( diff --git a/tests/unit/Models/SubscriberTest.php b/tests/unit/Models/SubscriberTest.php index 1f71bd1e58..c1dcff2422 100644 --- a/tests/unit/Models/SubscriberTest.php +++ b/tests/unit/Models/SubscriberTest.php @@ -463,9 +463,19 @@ class SubscriberTest extends MailPoetTest { expect($subscriber->unconfirmed_data)->equals(json_encode($data2)); // Unconfirmed data should be wiped after any direct update - // during confirmation, manual admin editing, import etc. + // during confirmation, manual admin editing $subscriber = Subscriber::createOrUpdate($data2); - + expect($subscriber->unconfirmed_data)->isEmpty(); + // during import + $subscriber->unconfirmed_data = json_encode($data2); + $subscriber->save(); + expect($subscriber->isDirty('unconfirmed_data'))->false(); + expect($subscriber->unconfirmed_data)->notEmpty(); + Subscriber::updateMultiple( + array_keys($data2), + array(array_values($data2)) + ); + $subscriber = Subscriber::where('email', $data2['email'])->findOne(); expect($subscriber->unconfirmed_data)->isEmpty(); Setting::setValue('signup_confirmation.enabled', $original_setting_value);