Add support for import subscription consent evidence
[MAILPOET-3389]
This commit is contained in:
@ -87,4 +87,8 @@ class ModelValidator extends \MailPoetVendor\Sudzy\Engine {
|
|||||||
}
|
}
|
||||||
return (is_null($newsletterBody) || (is_array($newsletterBody) && !empty($newsletterBody['html']) && !empty($newsletterBody['text'])));
|
return (is_null($newsletterBody) || (is_array($newsletterBody) && !empty($newsletterBody['html']) && !empty($newsletterBody['text'])));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function validateIPAddress(string $ip): bool {
|
||||||
|
return (bool)filter_var($ip, FILTER_VALIDATE_IP);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -200,6 +200,19 @@ class Import {
|
|||||||
}, array_keys($data), $data
|
}, array_keys($data), $data
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
if (in_array($column, ['created_at', 'confirmed_at'], true)) {
|
||||||
|
$data = $this->validateDateTime($data, $invalidRecords);
|
||||||
|
}
|
||||||
|
if (in_array($column, ['confirmed_ip', 'subscribed_ip'], true)) {
|
||||||
|
$data = array_map(
|
||||||
|
function($index, $ip) use(&$invalidRecords, $validator) {
|
||||||
|
if (!$validator->validateIPAddress($ip)) {
|
||||||
|
$invalidRecords[] = $index;
|
||||||
|
}
|
||||||
|
return $ip;
|
||||||
|
}, array_keys($data), $data
|
||||||
|
);
|
||||||
|
}
|
||||||
// if this is a custom column
|
// if this is a custom column
|
||||||
if (in_array($column, $this->subscribersCustomFields)) {
|
if (in_array($column, $this->subscribersCustomFields)) {
|
||||||
$customField = $this->customFieldsRepository->findOneById($column);
|
$customField = $this->customFieldsRepository->findOneById($column);
|
||||||
@ -208,17 +221,7 @@ class Import {
|
|||||||
}
|
}
|
||||||
// validate date type
|
// validate date type
|
||||||
if ($customField->getType() === CustomFieldEntity::TYPE_DATE) {
|
if ($customField->getType() === CustomFieldEntity::TYPE_DATE) {
|
||||||
$validationRule = 'datetime';
|
$data = $this->validateDateTime($data, $invalidRecords);
|
||||||
$data = array_map(
|
|
||||||
function($index, $date) use($validationRule, &$invalidRecords) {
|
|
||||||
if (empty($date)) return $date;
|
|
||||||
$date = (new DateConverter())->convertDateToDatetime($date, $validationRule);
|
|
||||||
if (!$date) {
|
|
||||||
$invalidRecords[] = $index;
|
|
||||||
}
|
|
||||||
return $date;
|
|
||||||
}, array_keys($data), $data
|
|
||||||
);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -232,6 +235,20 @@ class Import {
|
|||||||
return $subscribersData;
|
return $subscribersData;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private function validateDateTime(array $data, array &$invalidRecords): array {
|
||||||
|
$validationRule = 'datetime';
|
||||||
|
return array_map(
|
||||||
|
function($index, $date) use($validationRule, &$invalidRecords) {
|
||||||
|
if (empty($date)) return $date;
|
||||||
|
$date = (new DateConverter())->convertDateToDatetime($date, $validationRule);
|
||||||
|
if (!$date) {
|
||||||
|
$invalidRecords[] = $index;
|
||||||
|
}
|
||||||
|
return $date;
|
||||||
|
}, array_keys($data), $data
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
public function transformSubscribersData($subscribers, $columns) {
|
public function transformSubscribersData($subscribers, $columns) {
|
||||||
$transformedSubscribers = [];
|
$transformedSubscribers = [];
|
||||||
foreach ($columns as $column => $data) {
|
foreach ($columns as $column => $data) {
|
||||||
|
@ -48,6 +48,10 @@ class ImportExportFactory {
|
|||||||
'email' => __('Email', 'mailpoet'),
|
'email' => __('Email', 'mailpoet'),
|
||||||
'first_name' => __('First name', 'mailpoet'),
|
'first_name' => __('First name', 'mailpoet'),
|
||||||
'last_name' => __('Last name', 'mailpoet'),
|
'last_name' => __('Last name', 'mailpoet'),
|
||||||
|
'subscribed_ip' => __('Subscription IP', 'mailpoet'),
|
||||||
|
'created_at' => __('Subscription time', 'mailpoet'),
|
||||||
|
'confirmed_at' => __('Confirmation time', 'mailpoet'),
|
||||||
|
'confirmed_ip' => __('Confirmation IP', 'mailpoet'),
|
||||||
];
|
];
|
||||||
if ($this->action === 'export') {
|
if ($this->action === 'export') {
|
||||||
$fields = array_merge(
|
$fields = array_merge(
|
||||||
@ -55,10 +59,6 @@ class ImportExportFactory {
|
|||||||
[
|
[
|
||||||
'list_status' => _x('List status', 'Subscription status', 'mailpoet'),
|
'list_status' => _x('List status', 'Subscription status', 'mailpoet'),
|
||||||
'global_status' => _x('Global status', 'Subscription status', 'mailpoet'),
|
'global_status' => _x('Global status', 'Subscription status', 'mailpoet'),
|
||||||
'subscribed_ip' => __('Subscription IP', 'mailpoet'),
|
|
||||||
'created_at' => __('Subscription time', 'mailpoet'),
|
|
||||||
'confirmed_at' => __('Confirmation time', 'mailpoet'),
|
|
||||||
'confirmed_ip' => __('Confirmation IP', 'mailpoet'),
|
|
||||||
]
|
]
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user