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:
Vlad
2017-04-09 21:54:04 -04:00
parent 3a9c006cf9
commit 7ffbf6c378

View File

@ -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)
) )
); );
} }