Replaces redundant search with one-time lookup

This commit is contained in:
Vlad
2017-04-13 09:28:54 -04:00
parent b7d73dcfaa
commit aa15b9420a

View File

@ -209,9 +209,9 @@ class Import {
$wp_users = array_filter(Helpers::arrayColumn($temp_existing_subscribers, 'wp_user_id')); $wp_users = array_filter(Helpers::arrayColumn($temp_existing_subscribers, 'wp_user_id'));
// create a new two-dimensional associative array with existing subscribers ($existing_subscribers) // create a new two-dimensional associative array with existing subscribers ($existing_subscribers)
// and reduce $subscribers_data to only new subscribers by removing existing subscribers // and reduce $subscribers_data to only new subscribers by removing existing subscribers
$existing_subscribers = array(); $subscribers_emails = array_flip($subscribers_data['email']);
foreach($temp_existing_subscribers as $temp_existing_subscriber) { foreach($temp_existing_subscribers as $temp_existing_subscriber) {
$existing_subscriber_key = array_search($temp_existing_subscriber['email'], $subscribers_data['email']); $existing_subscriber_key = $subscribers_emails[$temp_existing_subscriber['email']];
foreach($subscribers_data as $field => &$value) { foreach($subscribers_data as $field => &$value) {
$existing_subscribers[$field][] = $value[$existing_subscriber_key]; $existing_subscribers[$field][] = $value[$existing_subscriber_key];
unset($value[$existing_subscriber_key]); unset($value[$existing_subscriber_key]);
@ -393,14 +393,15 @@ class Import {
if(!$subscribers_custom_fields_ids) return; if(!$subscribers_custom_fields_ids) return;
// assemble a two-dimensional array: [[custom_field_id, subscriber_id, value], [custom_field_id, subscriber_id, value], ...] // assemble a two-dimensional array: [[custom_field_id, subscriber_id, value], [custom_field_id, subscriber_id, value], ...]
$subscribers_custom_fields_data = array(); $subscribers_custom_fields_data = array();
foreach($created_or_updated_subscribers as $subscriber) { $subscribers_emails = array_flip($subscribers_data['data']['email']);
$subscriber_index = array_search($subscriber['email'], $subscribers_data['data']['email']); foreach($created_or_updated_subscribers as $created_or_updated_subscriber) {
$subscriber_index = $subscribers_emails[$created_or_updated_subscriber['email']];
foreach($subscribers_data['data'] as $field => $values) { foreach($subscribers_data['data'] as $field => $values) {
// exclude non-custom fields // exclude non-custom fields
if(!is_int($field)) continue; if(!is_int($field)) continue;
$subscribers_custom_fields_data[] = array( $subscribers_custom_fields_data[] = array(
(int)$field, (int)$field,
$subscriber['id'], $created_or_updated_subscriber['id'],
$values[$subscriber_index], $values[$subscriber_index],
); );
} }