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\ImportExport\ImportExportFactory;
|
||||||
use MailPoet\Subscribers\Source;
|
use MailPoet\Subscribers\Source;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
|
use MailPoet\Util\Security;
|
||||||
use function MailPoet\Util\array_column;
|
use function MailPoet\Util\array_column;
|
||||||
|
|
||||||
class Import {
|
class Import {
|
||||||
@@ -110,7 +111,7 @@ class Import {
|
|||||||
// add, if required, missing required fields to new subscribers
|
// add, if required, missing required fields to new subscribers
|
||||||
$new_subscribers = $this->addMissingRequiredFields($new_subscribers);
|
$new_subscribers = $this->addMissingRequiredFields($new_subscribers);
|
||||||
$new_subscribers = $this->setSubscriptionStatusToSubscribed($new_subscribers);
|
$new_subscribers = $this->setSubscriptionStatusToSubscribed($new_subscribers);
|
||||||
$new_subscribers = $this->setSource($new_subscribers);
|
$new_subscribers = $this->setSourceAndLinkToken($new_subscribers);
|
||||||
$created_subscribers =
|
$created_subscribers =
|
||||||
$this->createOrUpdateSubscribers(
|
$this->createOrUpdateSubscribers(
|
||||||
'create',
|
'create',
|
||||||
@@ -297,14 +298,20 @@ class Import {
|
|||||||
return $subscribers_data;
|
return $subscribers_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
function setSource($subscribers_data) {
|
private function setSourceAndLinkToken($subscribers_data) {
|
||||||
$subscribers_count = count($subscribers_data['data'][key($subscribers_data['data'])]);
|
$subscribers_count = count($subscribers_data['data'][key($subscribers_data['data'])]);
|
||||||
$subscribers_data['fields'][] = 'source';
|
$subscribers_data['fields'][] = 'source';
|
||||||
|
$subscribers_data['fields'][] = 'link_token';
|
||||||
$subscribers_data['data']['source'] = array_fill(
|
$subscribers_data['data']['source'] = array_fill(
|
||||||
0,
|
0,
|
||||||
$subscribers_count,
|
$subscribers_count,
|
||||||
Source::IMPORTED
|
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;
|
return $subscribers_data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -436,7 +436,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
expect($updated_subscriber->status)->equals('unsubscribed');
|
expect($updated_subscriber->status)->equals('unsubscribed');
|
||||||
}
|
}
|
||||||
|
|
||||||
function testItImportsNewsSubscribersWithSubscribedStatusAndLastSubscribedAt() {
|
function testItImportsNewsSubscribersWithAllAdditionalParameters() {
|
||||||
$data = $this->test_data;
|
$data = $this->test_data;
|
||||||
$data['columns']['status'] = ['index' => 4];
|
$data['columns']['status'] = ['index' => 4];
|
||||||
$data['subscribers'][0][] = 'unsubscribed';
|
$data['subscribers'][0][] = 'unsubscribed';
|
||||||
@@ -453,6 +453,8 @@ class ImportTest extends \MailPoetTest {
|
|||||||
expect($new_subscribers[1]->status)->equals('subscribed');
|
expect($new_subscribers[1]->status)->equals('subscribed');
|
||||||
expect($new_subscribers[0]->source)->equals('imported');
|
expect($new_subscribers[0]->source)->equals('imported');
|
||||||
expect($new_subscribers[1]->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']);
|
$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[0]->last_subscribed_at)->equals($test_time);
|
||||||
expect($new_subscribers[1]->last_subscribed_at)->equals($test_time);
|
expect($new_subscribers[1]->last_subscribed_at)->equals($test_time);
|
||||||
|
Reference in New Issue
Block a user