Use importExportRepository in import
[MAILPOET-3378]
This commit is contained in:
@ -12,8 +12,7 @@ use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
|||||||
use MailPoet\Segments\WP;
|
use MailPoet\Segments\WP;
|
||||||
use MailPoet\Subscribers\ImportExport\Import\Import;
|
use MailPoet\Subscribers\ImportExport\Import\Import;
|
||||||
use MailPoet\Subscribers\ImportExport\Import\MailChimp;
|
use MailPoet\Subscribers\ImportExport\Import\MailChimp;
|
||||||
use MailPoet\Subscribers\SubscriberCustomFieldRepository;
|
use MailPoet\Subscribers\ImportExport\ImportExportRepository;
|
||||||
use MailPoet\Subscribers\SubscriberSegmentRepository;
|
|
||||||
use MailPoet\Subscribers\SubscribersRepository;
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
use MailPoetVendor\Carbon\Carbon;
|
use MailPoetVendor\Carbon\Carbon;
|
||||||
|
|
||||||
@ -25,18 +24,15 @@ class ImportExport extends APIEndpoint {
|
|||||||
/** @var CustomFieldsRepository */
|
/** @var CustomFieldsRepository */
|
||||||
private $customFieldsRepository;
|
private $customFieldsRepository;
|
||||||
|
|
||||||
|
/** @var ImportExportRepository */
|
||||||
|
private $importExportRepository;
|
||||||
|
|
||||||
/** @var NewsletterOptionsRepository */
|
/** @var NewsletterOptionsRepository */
|
||||||
private $newsletterOptionsRepository;
|
private $newsletterOptionsRepository;
|
||||||
|
|
||||||
/** @var SubscriberCustomFieldRepository */
|
|
||||||
private $subscriberCustomFieldRepository;
|
|
||||||
|
|
||||||
/** @var SubscribersRepository */
|
/** @var SubscribersRepository */
|
||||||
private $subscriberRepository;
|
private $subscriberRepository;
|
||||||
|
|
||||||
/** @var SubscriberSegmentRepository */
|
|
||||||
private $subscriberSegmentRepository;
|
|
||||||
|
|
||||||
public $permissions = [
|
public $permissions = [
|
||||||
'global' => AccessControl::PERMISSION_MANAGE_SUBSCRIBERS,
|
'global' => AccessControl::PERMISSION_MANAGE_SUBSCRIBERS,
|
||||||
];
|
];
|
||||||
@ -44,17 +40,15 @@ class ImportExport extends APIEndpoint {
|
|||||||
public function __construct(
|
public function __construct(
|
||||||
WP $wpSegment,
|
WP $wpSegment,
|
||||||
CustomFieldsRepository $customFieldsRepository,
|
CustomFieldsRepository $customFieldsRepository,
|
||||||
|
ImportExportRepository $importExportRepository,
|
||||||
NewsletterOptionsRepository $newsletterOptionsRepository,
|
NewsletterOptionsRepository $newsletterOptionsRepository,
|
||||||
SubscriberCustomFieldRepository $subscriberCustomFieldRepository,
|
SubscribersRepository $subscribersRepository
|
||||||
SubscribersRepository $subscribersRepository,
|
|
||||||
SubscriberSegmentRepository $subscriberSegmentRepository
|
|
||||||
) {
|
) {
|
||||||
$this->wpSegment = $wpSegment;
|
$this->wpSegment = $wpSegment;
|
||||||
$this->customFieldsRepository = $customFieldsRepository;
|
$this->customFieldsRepository = $customFieldsRepository;
|
||||||
|
$this->importExportRepository = $importExportRepository;
|
||||||
$this->newsletterOptionsRepository = $newsletterOptionsRepository;
|
$this->newsletterOptionsRepository = $newsletterOptionsRepository;
|
||||||
$this->subscriberCustomFieldRepository = $subscriberCustomFieldRepository;
|
|
||||||
$this->subscriberRepository = $subscribersRepository;
|
$this->subscriberRepository = $subscribersRepository;
|
||||||
$this->subscriberSegmentRepository = $subscriberSegmentRepository;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getMailChimpLists($data) {
|
public function getMailChimpLists($data) {
|
||||||
@ -99,10 +93,9 @@ class ImportExport extends APIEndpoint {
|
|||||||
$import = new Import(
|
$import = new Import(
|
||||||
$this->wpSegment,
|
$this->wpSegment,
|
||||||
$this->customFieldsRepository,
|
$this->customFieldsRepository,
|
||||||
|
$this->importExportRepository,
|
||||||
$this->newsletterOptionsRepository,
|
$this->newsletterOptionsRepository,
|
||||||
$this->subscriberCustomFieldRepository,
|
|
||||||
$this->subscriberRepository,
|
$this->subscriberRepository,
|
||||||
$this->subscriberSegmentRepository,
|
|
||||||
json_decode($data, true)
|
json_decode($data, true)
|
||||||
);
|
);
|
||||||
$process = $import->process();
|
$process = $import->process();
|
||||||
|
@ -4,14 +4,15 @@ namespace MailPoet\Subscribers\ImportExport\Import;
|
|||||||
|
|
||||||
use MailPoet\CustomFields\CustomFieldsRepository;
|
use MailPoet\CustomFields\CustomFieldsRepository;
|
||||||
use MailPoet\Entities\CustomFieldEntity;
|
use MailPoet\Entities\CustomFieldEntity;
|
||||||
|
use MailPoet\Entities\SubscriberCustomFieldEntity;
|
||||||
use MailPoet\Entities\SubscriberEntity;
|
use MailPoet\Entities\SubscriberEntity;
|
||||||
|
use MailPoet\Entities\SubscriberSegmentEntity;
|
||||||
use MailPoet\Models\ModelValidator;
|
use MailPoet\Models\ModelValidator;
|
||||||
use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
||||||
use MailPoet\Segments\WP;
|
use MailPoet\Segments\WP;
|
||||||
use MailPoet\Subscribers\ImportExport\ImportExportFactory;
|
use MailPoet\Subscribers\ImportExport\ImportExportFactory;
|
||||||
|
use MailPoet\Subscribers\ImportExport\ImportExportRepository;
|
||||||
use MailPoet\Subscribers\Source;
|
use MailPoet\Subscribers\Source;
|
||||||
use MailPoet\Subscribers\SubscriberCustomFieldRepository;
|
|
||||||
use MailPoet\Subscribers\SubscriberSegmentRepository;
|
|
||||||
use MailPoet\Subscribers\SubscribersRepository;
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
use MailPoet\Util\DateConverter;
|
use MailPoet\Util\DateConverter;
|
||||||
use MailPoet\Util\Helpers;
|
use MailPoet\Util\Helpers;
|
||||||
@ -34,39 +35,37 @@ class Import {
|
|||||||
const DB_QUERY_CHUNK_SIZE = 100;
|
const DB_QUERY_CHUNK_SIZE = 100;
|
||||||
const STATUS_DONT_UPDATE = 'dont_update';
|
const STATUS_DONT_UPDATE = 'dont_update';
|
||||||
|
|
||||||
|
public const ACTION_CREATE = 'create';
|
||||||
|
public const ACTION_UPDATE = 'update';
|
||||||
|
|
||||||
/** @var WP */
|
/** @var WP */
|
||||||
private $wpSegment;
|
private $wpSegment;
|
||||||
|
|
||||||
/** @var CustomFieldsRepository */
|
/** @var CustomFieldsRepository */
|
||||||
private $customFieldsRepository;
|
private $customFieldsRepository;
|
||||||
|
|
||||||
|
/** @var ImportExportRepository */
|
||||||
|
private $importExportRepository;
|
||||||
|
|
||||||
/** @var NewsletterOptionsRepository */
|
/** @var NewsletterOptionsRepository */
|
||||||
private $newsletterOptionsRepository;
|
private $newsletterOptionsRepository;
|
||||||
|
|
||||||
/** @var SubscriberCustomFieldRepository */
|
|
||||||
private $subscriberCustomFieldRepository;
|
|
||||||
|
|
||||||
/** @var SubscribersRepository */
|
/** @var SubscribersRepository */
|
||||||
private $subscriberRepository;
|
private $subscriberRepository;
|
||||||
|
|
||||||
/** @var SubscriberSegmentRepository */
|
|
||||||
private $subscriberSegmentRepository;
|
|
||||||
|
|
||||||
public function __construct(
|
public function __construct(
|
||||||
WP $wpSegment,
|
WP $wpSegment,
|
||||||
CustomFieldsRepository $customFieldsRepository,
|
CustomFieldsRepository $customFieldsRepository,
|
||||||
|
ImportExportRepository $importExportRepository,
|
||||||
NewsletterOptionsRepository $newsletterOptionsRepository,
|
NewsletterOptionsRepository $newsletterOptionsRepository,
|
||||||
SubscriberCustomFieldRepository $subscriberCustomFieldRepository,
|
|
||||||
SubscribersRepository $subscriberRepository,
|
SubscribersRepository $subscriberRepository,
|
||||||
SubscriberSegmentRepository $subscriberSegmentRepository,
|
|
||||||
array $data
|
array $data
|
||||||
) {
|
) {
|
||||||
$this->wpSegment = $wpSegment;
|
$this->wpSegment = $wpSegment;
|
||||||
$this->customFieldsRepository = $customFieldsRepository;
|
$this->customFieldsRepository = $customFieldsRepository;
|
||||||
|
$this->importExportRepository = $importExportRepository;
|
||||||
$this->newsletterOptionsRepository = $newsletterOptionsRepository;
|
$this->newsletterOptionsRepository = $newsletterOptionsRepository;
|
||||||
$this->subscriberCustomFieldRepository = $subscriberCustomFieldRepository;
|
|
||||||
$this->subscriberRepository = $subscriberRepository;
|
$this->subscriberRepository = $subscriberRepository;
|
||||||
$this->subscriberSegmentRepository = $subscriberSegmentRepository;
|
|
||||||
$this->validateImportData($data);
|
$this->validateImportData($data);
|
||||||
$this->subscribersData = $this->transformSubscribersData(
|
$this->subscribersData = $this->transformSubscribersData(
|
||||||
$data['subscribers'],
|
$data['subscribers'],
|
||||||
@ -141,6 +140,7 @@ class Import {
|
|||||||
$newSubscribers = $this->setLinkToken($newSubscribers);
|
$newSubscribers = $this->setLinkToken($newSubscribers);
|
||||||
$createdSubscribers =
|
$createdSubscribers =
|
||||||
$this->createOrUpdateSubscribers(
|
$this->createOrUpdateSubscribers(
|
||||||
|
self::ACTION_CREATE,
|
||||||
$newSubscribers,
|
$newSubscribers,
|
||||||
$this->subscribersCustomFields
|
$this->subscribersCustomFields
|
||||||
);
|
);
|
||||||
@ -157,6 +157,7 @@ class Import {
|
|||||||
}
|
}
|
||||||
$updatedSubscribers =
|
$updatedSubscribers =
|
||||||
$this->createOrUpdateSubscribers(
|
$this->createOrUpdateSubscribers(
|
||||||
|
self::ACTION_UPDATE,
|
||||||
$existingSubscribers,
|
$existingSubscribers,
|
||||||
$this->subscribersCustomFields
|
$this->subscribersCustomFields
|
||||||
);
|
);
|
||||||
@ -380,6 +381,7 @@ class Import {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function createOrUpdateSubscribers(
|
public function createOrUpdateSubscribers(
|
||||||
|
string $action,
|
||||||
array $subscribersData,
|
array $subscribersData,
|
||||||
array $subscribersCustomFields = []
|
array $subscribersCustomFields = []
|
||||||
) {
|
) {
|
||||||
@ -390,11 +392,20 @@ class Import {
|
|||||||
}, $subscribersData['fields']);
|
}, $subscribersData['fields']);
|
||||||
}, range(0, $subscribersCount - 1));
|
}, range(0, $subscribersCount - 1));
|
||||||
foreach (array_chunk($subscribers, self::DB_QUERY_CHUNK_SIZE) as $data) {
|
foreach (array_chunk($subscribers, self::DB_QUERY_CHUNK_SIZE) as $data) {
|
||||||
$this->subscriberRepository->insertOrUpdateMultiple(
|
if ($action === self::ACTION_CREATE) {
|
||||||
$subscribersData['fields'],
|
$this->importExportRepository->insertMultiple(
|
||||||
$data,
|
SubscriberEntity::class,
|
||||||
$this->updatedAt
|
$subscribersData['fields'],
|
||||||
);
|
$data
|
||||||
|
);
|
||||||
|
} elseif ($action === self::ACTION_UPDATE) {
|
||||||
|
$this->importExportRepository->updateMultiple(
|
||||||
|
SubscriberEntity::class,
|
||||||
|
$subscribersData['fields'],
|
||||||
|
$data,
|
||||||
|
$this->updatedAt
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
$createdOrUpdatedSubscribers = [];
|
$createdOrUpdatedSubscribers = [];
|
||||||
foreach (array_chunk($subscribersData['data']['email'], self::DB_QUERY_CHUNK_SIZE) as $emails) {
|
foreach (array_chunk($subscribersData['data']['email'], self::DB_QUERY_CHUNK_SIZE) as $emails) {
|
||||||
@ -408,6 +419,7 @@ class Import {
|
|||||||
$createdOrUpdatedSubscribersIds = array_column($createdOrUpdatedSubscribers, 'id');
|
$createdOrUpdatedSubscribersIds = array_column($createdOrUpdatedSubscribers, 'id');
|
||||||
if ($subscribersCustomFields) {
|
if ($subscribersCustomFields) {
|
||||||
$this->createOrUpdateCustomFields(
|
$this->createOrUpdateCustomFields(
|
||||||
|
$action,
|
||||||
$createdOrUpdatedSubscribers,
|
$createdOrUpdatedSubscribers,
|
||||||
$subscribersData,
|
$subscribersData,
|
||||||
$subscribersCustomFields
|
$subscribersCustomFields
|
||||||
@ -421,6 +433,7 @@ class Import {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public function createOrUpdateCustomFields(
|
public function createOrUpdateCustomFields(
|
||||||
|
string $acion,
|
||||||
array $createdOrUpdatedSubscribers,
|
array $createdOrUpdatedSubscribers,
|
||||||
array $subscribersData,
|
array $subscribersData,
|
||||||
array $subscribersCustomFieldsIds
|
array $subscribersCustomFieldsIds
|
||||||
@ -455,11 +468,19 @@ class Import {
|
|||||||
'created_at',
|
'created_at',
|
||||||
];
|
];
|
||||||
foreach (array_chunk($subscribersCustomFieldsData, self::DB_QUERY_CHUNK_SIZE) as $subscribersCustomFieldsDataChunk) {
|
foreach (array_chunk($subscribersCustomFieldsData, self::DB_QUERY_CHUNK_SIZE) as $subscribersCustomFieldsDataChunk) {
|
||||||
$this->subscriberCustomFieldRepository->insertOrUpdateMultiple(
|
$this->importExportRepository->insertMultiple(
|
||||||
|
SubscriberCustomFieldEntity::class,
|
||||||
$columns,
|
$columns,
|
||||||
$subscribersCustomFieldsDataChunk,
|
$subscribersCustomFieldsDataChunk
|
||||||
$this->updatedAt
|
|
||||||
);
|
);
|
||||||
|
if ($acion === self::ACTION_UPDATE) {
|
||||||
|
$this->importExportRepository->updateMultiple(
|
||||||
|
SubscriberCustomFieldEntity::class,
|
||||||
|
$columns,
|
||||||
|
$subscribersCustomFieldsDataChunk,
|
||||||
|
$this->updatedAt
|
||||||
|
);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -484,7 +505,11 @@ class Import {
|
|||||||
];
|
];
|
||||||
}, $subscriberIdsChunk));
|
}, $subscriberIdsChunk));
|
||||||
}
|
}
|
||||||
$this->subscriberSegmentRepository->insertOrUpdateMultiple($columns, $data, $this->updatedAt);
|
$this->importExportRepository->insertMultiple(
|
||||||
|
SubscriberSegmentEntity::class,
|
||||||
|
$columns,
|
||||||
|
$data
|
||||||
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -12,6 +12,7 @@ use MailPoet\Entities\SubscriberSegmentEntity;
|
|||||||
use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
use MailPoet\Newsletter\Options\NewsletterOptionsRepository;
|
||||||
use MailPoet\Segments\SegmentsRepository;
|
use MailPoet\Segments\SegmentsRepository;
|
||||||
use MailPoet\Segments\WP;
|
use MailPoet\Segments\WP;
|
||||||
|
use MailPoet\Subscribers\ImportExport\ImportExportRepository;
|
||||||
use MailPoet\Subscribers\SubscriberCustomFieldRepository;
|
use MailPoet\Subscribers\SubscriberCustomFieldRepository;
|
||||||
use MailPoet\Subscribers\SubscriberSegmentRepository;
|
use MailPoet\Subscribers\SubscriberSegmentRepository;
|
||||||
use MailPoet\Subscribers\SubscribersRepository;
|
use MailPoet\Subscribers\SubscribersRepository;
|
||||||
@ -36,6 +37,9 @@ class ImportTest extends \MailPoetTest {
|
|||||||
/** @var CustomFieldsRepository */
|
/** @var CustomFieldsRepository */
|
||||||
private $customFieldsRepository;
|
private $customFieldsRepository;
|
||||||
|
|
||||||
|
/** @var ImportExportRepository */
|
||||||
|
private $importExportRepository;
|
||||||
|
|
||||||
/** @var NewsletterOptionsRepository */
|
/** @var NewsletterOptionsRepository */
|
||||||
private $newsletterOptionsRepository;
|
private $newsletterOptionsRepository;
|
||||||
|
|
||||||
@ -54,6 +58,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
public function _before() {
|
public function _before() {
|
||||||
$this->wpSegment = $this->diContainer->get(WP::class);
|
$this->wpSegment = $this->diContainer->get(WP::class);
|
||||||
$this->customFieldsRepository = $this->diContainer->get(CustomFieldsRepository::class);
|
$this->customFieldsRepository = $this->diContainer->get(CustomFieldsRepository::class);
|
||||||
|
$this->importExportRepository = $this->diContainer->get(ImportExportRepository::class);
|
||||||
$this->newsletterOptionsRepository = $this->diContainer->get(NewsletterOptionsRepository::class);
|
$this->newsletterOptionsRepository = $this->diContainer->get(NewsletterOptionsRepository::class);
|
||||||
$this->segmentsRepository = $this->diContainer->get(SegmentsRepository::class);
|
$this->segmentsRepository = $this->diContainer->get(SegmentsRepository::class);
|
||||||
$this->subscriberCustomFieldRepository = $this->diContainer->get(SubscriberCustomFieldRepository::class);
|
$this->subscriberCustomFieldRepository = $this->diContainer->get(SubscriberCustomFieldRepository::class);
|
||||||
@ -315,6 +320,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
'fields' => $this->subscribersFields,
|
'fields' => $this->subscribersFields,
|
||||||
];
|
];
|
||||||
$this->import->createOrUpdateSubscribers(
|
$this->import->createOrUpdateSubscribers(
|
||||||
|
Import::ACTION_CREATE,
|
||||||
$subscribersData
|
$subscribersData
|
||||||
);
|
);
|
||||||
$subscribers = $this->subscriberRepository->findAll();
|
$subscribers = $this->subscriberRepository->findAll();
|
||||||
@ -323,6 +329,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
->equals($subscribersData['data']['email'][0]);
|
->equals($subscribersData['data']['email'][0]);
|
||||||
$subscribersData['data']['first_name'][1] = 'MaryJane';
|
$subscribersData['data']['first_name'][1] = 'MaryJane';
|
||||||
$this->import->createOrUpdateSubscribers(
|
$this->import->createOrUpdateSubscribers(
|
||||||
|
Import::ACTION_UPDATE,
|
||||||
$subscribersData
|
$subscribersData
|
||||||
);
|
);
|
||||||
$this->entityManager->clear();
|
$this->entityManager->clear();
|
||||||
@ -342,6 +349,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
];
|
];
|
||||||
$subscribersData['fields'][] = 'deleted_at';
|
$subscribersData['fields'][] = 'deleted_at';
|
||||||
$this->import->createOrUpdateSubscribers(
|
$this->import->createOrUpdateSubscribers(
|
||||||
|
Import::ACTION_CREATE,
|
||||||
$subscribersData
|
$subscribersData
|
||||||
);
|
);
|
||||||
$dbSubscribers = array_map(function (SubscriberEntity $subscriber): int {
|
$dbSubscribers = array_map(function (SubscriberEntity $subscriber): int {
|
||||||
@ -370,6 +378,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
];
|
];
|
||||||
$customField = $this->subscribersCustomFields[0];
|
$customField = $this->subscribersCustomFields[0];
|
||||||
$this->import->createOrUpdateSubscribers(
|
$this->import->createOrUpdateSubscribers(
|
||||||
|
Import::ACTION_CREATE,
|
||||||
$subscribersData,
|
$subscribersData,
|
||||||
$this->subscribersFields
|
$this->subscribersFields
|
||||||
);
|
);
|
||||||
@ -380,6 +389,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
];
|
];
|
||||||
}, $this->subscriberRepository->findAll());
|
}, $this->subscriberRepository->findAll());
|
||||||
$this->import->createOrUpdateCustomFields(
|
$this->import->createOrUpdateCustomFields(
|
||||||
|
Import::ACTION_CREATE,
|
||||||
$dbSubscribers,
|
$dbSubscribers,
|
||||||
$subscribersData,
|
$subscribersData,
|
||||||
$this->subscribersCustomFields
|
$this->subscribersCustomFields
|
||||||
@ -390,6 +400,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
->equals($subscribersData['data'][$customField][0]);
|
->equals($subscribersData['data'][$customField][0]);
|
||||||
$subscribersData[$customField][1] = 'Rio';
|
$subscribersData[$customField][1] = 'Rio';
|
||||||
$this->import->createOrUpdateCustomFields(
|
$this->import->createOrUpdateCustomFields(
|
||||||
|
Import::ACTION_UPDATE,
|
||||||
$dbSubscribers,
|
$dbSubscribers,
|
||||||
$subscribersData,
|
$subscribersData,
|
||||||
$this->subscribersCustomFields
|
$this->subscribersCustomFields
|
||||||
@ -405,6 +416,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
'fields' => $this->subscribersFields,
|
'fields' => $this->subscribersFields,
|
||||||
];
|
];
|
||||||
$this->import->createOrUpdateSubscribers(
|
$this->import->createOrUpdateSubscribers(
|
||||||
|
Import::ACTION_CREATE,
|
||||||
$subscribersData,
|
$subscribersData,
|
||||||
$this->subscribersFields
|
$this->subscribersFields
|
||||||
);
|
);
|
||||||
@ -441,6 +453,7 @@ class ImportTest extends \MailPoetTest {
|
|||||||
date('Y-m-d H:i:s'),
|
date('Y-m-d H:i:s'),
|
||||||
];
|
];
|
||||||
$this->import->createOrUpdateSubscribers(
|
$this->import->createOrUpdateSubscribers(
|
||||||
|
Import::ACTION_CREATE,
|
||||||
$subscribersData
|
$subscribersData
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
@ -594,10 +607,9 @@ class ImportTest extends \MailPoetTest {
|
|||||||
return new Import(
|
return new Import(
|
||||||
$this->wpSegment,
|
$this->wpSegment,
|
||||||
$this->customFieldsRepository,
|
$this->customFieldsRepository,
|
||||||
|
$this->importExportRepository,
|
||||||
$this->newsletterOptionsRepository,
|
$this->newsletterOptionsRepository,
|
||||||
$this->subscriberCustomFieldRepository,
|
|
||||||
$this->subscriberRepository,
|
$this->subscriberRepository,
|
||||||
$this->subscriberSegmentRepository,
|
|
||||||
$data
|
$data
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user