- Fixes rebase screwup
This commit is contained in:
@ -1,7 +1,6 @@
|
|||||||
<?php
|
<?php
|
||||||
namespace MailPoet\Subscribers\ImportExport\Import;
|
namespace MailPoet\Subscribers\ImportExport\Import;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
|
||||||
use MailPoet\Form\Block\Date;
|
use MailPoet\Form\Block\Date;
|
||||||
use MailPoet\Models\CustomField;
|
use MailPoet\Models\CustomField;
|
||||||
use MailPoet\Models\Newsletter;
|
use MailPoet\Models\Newsletter;
|
||||||
@ -35,16 +34,32 @@ class Import {
|
|||||||
$this->subscriber_custom_fields = $this->getCustomSubscriberFields(
|
$this->subscriber_custom_fields = $this->getCustomSubscriberFields(
|
||||||
array_keys($data['columns'])
|
array_keys($data['columns'])
|
||||||
);
|
);
|
||||||
|
$this->subscriber_fields_validation_rules = $this->getSubscriberFieldsValidationRules(
|
||||||
|
$data['columns']
|
||||||
|
);
|
||||||
$this->subscribers_count = count(reset($this->subscribers_data));
|
$this->subscribers_count = count(reset($this->subscribers_data));
|
||||||
$this->created_at = date('Y-m-d H:i:s', (int)$data['timestamp']);
|
$this->created_at = date('Y-m-d H:i:s', (int)$data['timestamp']);
|
||||||
$this->updated_at = date('Y-m-d H:i:s', (int)$data['timestamp'] + 1);
|
$this->updated_at = date('Y-m-d H:i:s', (int)$data['timestamp'] + 1);
|
||||||
$this->profiler_start = microtime(true);
|
$this->profiler_start = microtime(true);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
function getSubscriberFieldsValidationRules($subscriber_fields) {
|
||||||
|
$validation_rules = array();
|
||||||
|
foreach($subscriber_fields as $column => $field) {
|
||||||
|
$validation_rules[$column] = (!empty($field['validation_rule'])) ?
|
||||||
|
$field['validation_rule'] :
|
||||||
|
false;
|
||||||
|
}
|
||||||
|
return $validation_rules;
|
||||||
|
}
|
||||||
|
|
||||||
function process() {
|
function process() {
|
||||||
$subscriber_fields = $this->subscriber_fields;
|
$subscriber_fields = $this->subscriber_fields;
|
||||||
$subscriber_custom_fields = $this->subscriber_custom_fields;
|
$subscriber_custom_fields = $this->subscriber_custom_fields;
|
||||||
$subscribers_data = $this->validateSubscribersData($this->subscribers_data);
|
$subscribers_data = $this->validateSubscribersFields(
|
||||||
|
$this->subscribers_data,
|
||||||
|
$this->subscriber_fields_validation_rules
|
||||||
|
);
|
||||||
list ($subscribers_data, $subscriber_fields) =
|
list ($subscribers_data, $subscriber_fields) =
|
||||||
$this->filterSubscriberStatus($subscribers_data, $subscriber_fields);
|
$this->filterSubscriberStatus($subscribers_data, $subscriber_fields);
|
||||||
$this->deleteExistingTrashedSubscribers($subscribers_data);
|
$this->deleteExistingTrashedSubscribers($subscribers_data);
|
||||||
@ -101,23 +116,23 @@ class Import {
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
function validateSubscribersData($subscribers_data) {
|
function validateSubscribersFields($subscribers_data, $validation_rules) {
|
||||||
$invalid_records = array();
|
$invalid_records = array();
|
||||||
foreach($subscribers_data as $column => &$data) {
|
foreach($subscribers_data as $column => &$data) {
|
||||||
|
$validation_rule = $validation_rules[$column];
|
||||||
// if this is a custom column
|
// if this is a custom column
|
||||||
if(in_array($column, $this->subscriber_custom_fields)) {
|
if(in_array($column, $this->subscriber_custom_fields)) {
|
||||||
$custom_field = CustomField::findOne($column);
|
$custom_field = CustomField::findOne($column);
|
||||||
// validate date type
|
// validate date type
|
||||||
if($custom_field->type === 'date') {
|
if($custom_field->type === 'date') {
|
||||||
$custom_field->params = unserialize($custom_field->params);
|
$data = array_map(
|
||||||
$date_format = $custom_field->params['date_format'];
|
function($index, $date) use($validation_rule, &$invalid_records) {
|
||||||
$data = array_map(function($index, $date) use($date_format, &$invalid_records) {
|
$date = Date::convertDateToDatetime($date, $validation_rule);
|
||||||
$date = Date::validateDate($date, $date_format);
|
if(!$date) {
|
||||||
if(!$date) {
|
$invalid_records[] = $index;
|
||||||
$invalid_records[] = $index;
|
}
|
||||||
}
|
return $date;
|
||||||
return $date;
|
}, array_keys($data), $data);
|
||||||
}, array_keys($data), $data);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -131,8 +146,8 @@ class Import {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function transformSubscribersData($subscribers, $columns) {
|
function transformSubscribersData($subscribers, $columns) {
|
||||||
foreach($columns as $column => $index) {
|
foreach($columns as $column => $data) {
|
||||||
$transformed_subscribers[$column] = Helpers::arrayColumn($subscribers, $index);
|
$transformed_subscribers[$column] = Helpers::arrayColumn($subscribers, $data['index']);
|
||||||
}
|
}
|
||||||
return $transformed_subscribers;
|
return $transformed_subscribers;
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user