Add link_token for new subscribers during import
[MAILPOET-2364]
This commit is contained in:
committed by
Jack Kitterhing
parent
09db91bc33
commit
d6d9885a1e
@@ -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;
|
||||
}
|
||||
|
||||
|
@@ -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);
|
||||
|
Reference in New Issue
Block a user