diff --git a/lib/Subscribers/ImportExport/Import/Import.php b/lib/Subscribers/ImportExport/Import/Import.php index 5e8766a419..0c1d01a728 100644 --- a/lib/Subscribers/ImportExport/Import/Import.php +++ b/lib/Subscribers/ImportExport/Import/Import.php @@ -11,6 +11,7 @@ use MailPoet\Models\SubscriberSegment; use MailPoet\Subscribers\ImportExport\ImportExportFactory; use MailPoet\Subscribers\Source; use MailPoet\Util\Helpers; +use MailPoet\Util\Security; use function MailPoet\Util\array_column; class Import { @@ -110,7 +111,7 @@ class Import { // add, if required, missing required fields to new subscribers $new_subscribers = $this->addMissingRequiredFields($new_subscribers); $new_subscribers = $this->setSubscriptionStatusToSubscribed($new_subscribers); - $new_subscribers = $this->setSource($new_subscribers); + $new_subscribers = $this->setSourceAndLinkToken($new_subscribers); $created_subscribers = $this->createOrUpdateSubscribers( 'create', @@ -297,14 +298,20 @@ class Import { return $subscribers_data; } - function setSource($subscribers_data) { + private function setSourceAndLinkToken($subscribers_data) { $subscribers_count = count($subscribers_data['data'][key($subscribers_data['data'])]); $subscribers_data['fields'][] = 'source'; + $subscribers_data['fields'][] = 'link_token'; $subscribers_data['data']['source'] = array_fill( 0, $subscribers_count, Source::IMPORTED ); + $subscribers_data['data']['link_token'] = array_map( + function () { + return Security::generateRandomString(Subscriber::LINK_TOKEN_LENGTH); + }, array_fill(0, $subscribers_count, null) + ); return $subscribers_data; } diff --git a/tests/integration/Subscribers/ImportExport/Import/ImportTest.php b/tests/integration/Subscribers/ImportExport/Import/ImportTest.php index b856f9bae4..1a6e847b1e 100644 --- a/tests/integration/Subscribers/ImportExport/Import/ImportTest.php +++ b/tests/integration/Subscribers/ImportExport/Import/ImportTest.php @@ -436,7 +436,7 @@ class ImportTest extends \MailPoetTest { expect($updated_subscriber->status)->equals('unsubscribed'); } - function testItImportsNewsSubscribersWithSubscribedStatusAndLastSubscribedAt() { + function testItImportsNewsSubscribersWithAllAdditionalParameters() { $data = $this->test_data; $data['columns']['status'] = ['index' => 4]; $data['subscribers'][0][] = 'unsubscribed'; @@ -453,6 +453,8 @@ class ImportTest extends \MailPoetTest { expect($new_subscribers[1]->status)->equals('subscribed'); expect($new_subscribers[0]->source)->equals('imported'); expect($new_subscribers[1]->source)->equals('imported'); + expect(strlen($new_subscribers[0]->link_token))->equals(Subscriber::LINK_TOKEN_LENGTH); + expect(strlen($new_subscribers[1]->link_token))->equals(Subscriber::LINK_TOKEN_LENGTH); $test_time = date('Y-m-d H:i:s', $this->test_data['timestamp']); expect($new_subscribers[0]->last_subscribed_at)->equals($test_time); expect($new_subscribers[1]->last_subscribed_at)->equals($test_time);