Updates code style and adds wp_user_id column to the list of columns
that should be ignore when updating existing subscribers
This commit is contained in:
@ -812,52 +812,53 @@ class Subscriber extends Model {
|
|||||||
}
|
}
|
||||||
|
|
||||||
static function updateMultiple($columns, $subscribers, $updated_at = false) {
|
static function updateMultiple($columns, $subscribers, $updated_at = false) {
|
||||||
$ignoreColumnsOnUpdate = array(
|
$ignore_columns_on_update = array(
|
||||||
|
'wp_user_id',
|
||||||
'email',
|
'email',
|
||||||
'created_at'
|
'created_at'
|
||||||
);
|
);
|
||||||
$subscribers = array_map('array_values', $subscribers);
|
$subscribers = array_map('array_values', $subscribers);
|
||||||
$emailPosition = array_search('email', $columns);
|
$email_position = array_search('email', $columns);
|
||||||
$sql =
|
$sql =
|
||||||
function ($type) use (
|
function($type) use (
|
||||||
$columns,
|
$columns,
|
||||||
$subscribers,
|
$subscribers,
|
||||||
$emailPosition,
|
$email_position,
|
||||||
$ignoreColumnsOnUpdate
|
$ignore_columns_on_update
|
||||||
) {
|
) {
|
||||||
return array_filter(
|
return array_filter(
|
||||||
array_map(function ($columnPosition, $columnName) use (
|
array_map(function($column_position, $column_name) use (
|
||||||
$type,
|
$type,
|
||||||
$subscribers,
|
$subscribers,
|
||||||
$emailPosition,
|
$email_position,
|
||||||
$ignoreColumnsOnUpdate
|
$ignore_columns_on_update
|
||||||
) {
|
) {
|
||||||
if(in_array($columnName, $ignoreColumnsOnUpdate)) return;
|
if(in_array($column_name, $ignore_columns_on_update)) return;
|
||||||
$query = array_map(
|
$query = array_map(
|
||||||
function ($subscriber) use ($type, $columnPosition, $emailPosition) {
|
function($subscriber) use ($type, $column_position, $email_position) {
|
||||||
return ($type === 'values') ?
|
return ($type === 'values') ?
|
||||||
array(
|
array(
|
||||||
$subscriber[$emailPosition],
|
$subscriber[$email_position],
|
||||||
$subscriber[$columnPosition]
|
$subscriber[$column_position]
|
||||||
) :
|
) :
|
||||||
'WHEN email = ? THEN ?';
|
'WHEN email = ? THEN ?';
|
||||||
}, $subscribers);
|
}, $subscribers);
|
||||||
return ($type === 'values') ?
|
return ($type === 'values') ?
|
||||||
Helpers::flattenArray($query) :
|
Helpers::flattenArray($query) :
|
||||||
$columnName . '= (CASE ' . implode(' ', $query) . ' END)';
|
$column_name . '= (CASE ' . implode(' ', $query) . ' END)';
|
||||||
}, array_keys($columns), $columns)
|
}, array_keys($columns), $columns)
|
||||||
);
|
);
|
||||||
};
|
};
|
||||||
return self::rawExecute(
|
return self::rawExecute(
|
||||||
'UPDATE `' . self::$_table . '` ' .
|
'UPDATE `' . self::$_table . '` ' .
|
||||||
'SET ' . implode(', ', $sql('statement')) . ' '.
|
'SET ' . implode(', ', $sql('statement')) . ' ' .
|
||||||
(($updated_at) ? ', updated_at = "' . $updated_at . '" ' : '') .
|
(($updated_at) ? ', updated_at = "' . $updated_at . '" ' : '') .
|
||||||
', unconfirmed_data = NULL ' .
|
', unconfirmed_data = NULL ' .
|
||||||
'WHERE email IN ' .
|
'WHERE email IN ' .
|
||||||
'(' . rtrim(str_repeat('?,', count($subscribers)), ',') . ')',
|
'(' . rtrim(str_repeat('?,', count($subscribers)), ',') . ')',
|
||||||
array_merge(
|
array_merge(
|
||||||
Helpers::flattenArray($sql('values')),
|
Helpers::flattenArray($sql('values')),
|
||||||
Helpers::arrayColumn($subscribers, $emailPosition)
|
Helpers::arrayColumn($subscribers, $email_position)
|
||||||
)
|
)
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user