Wipe unconfirmed subscriber data during import [MAILPOET-760]

This commit is contained in:
Alexey Stoletniy
2016-12-30 10:53:29 +03:00
parent 95f8f130ea
commit d5a1d94bca
2 changed files with 13 additions and 2 deletions

View File

@@ -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(

View File

@@ -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);