From 1e70bba8836d6df2e85acd83ab8650f47c5fbfba Mon Sep 17 00:00:00 2001 From: Kamil Tekiela Date: Sun, 7 Aug 2022 21:50:05 +0100 Subject: [PATCH] Fix bug not allowing insertion of set values Signed-off-by: Kamil Tekiela --- .../Controllers/Table/ReplaceController.php | 9 +++++++-- libraries/classes/InsertEdit.php | 9 +-------- psalm-baseline.xml | 18 +++++------------- test/classes/InsertEditTest.php | 10 ---------- 4 files changed, 13 insertions(+), 33 deletions(-) diff --git a/libraries/classes/Controllers/Table/ReplaceController.php b/libraries/classes/Controllers/Table/ReplaceController.php index 8e4022bb5f..448e2f24dc 100644 --- a/libraries/classes/Controllers/Table/ReplaceController.php +++ b/libraries/classes/Controllers/Table/ReplaceController.php @@ -30,6 +30,7 @@ use function class_exists; use function count; use function implode; use function in_array; +use function is_array; use function is_file; use function is_numeric; use function method_exists; @@ -180,10 +181,15 @@ final class ReplaceController extends AbstractController // when inserting multiple entries $insert_fail = false; foreach ($multi_edit_columns_name as $key => $column_name) { - $current_value = $multi_edit_columns[$key]; // Note: $key is an md5 of the fieldname. The actual fieldname is // available in $multi_edit_columns_name[$key] + $current_value = $multi_edit_columns[$key]; + if (is_array($current_value)) { + // Some column types accept comma-separated values e.g. set + $current_value = implode(',', $current_value); + } + $file_to_insert = new File(); $file_to_insert->checkTblChangeForm((string) $key, (string) $rownumber); @@ -244,7 +250,6 @@ final class ReplaceController extends AbstractController $multi_edit_columns_type, $current_value, $multi_edit_auto_increment, - $rownumber, $multi_edit_columns_name, $multi_edit_columns_null, $multi_edit_columns_null_prev, diff --git a/libraries/classes/InsertEdit.php b/libraries/classes/InsertEdit.php index 5e14d53400..97b46419f2 100644 --- a/libraries/classes/InsertEdit.php +++ b/libraries/classes/InsertEdit.php @@ -1691,7 +1691,6 @@ class InsertEdit * @param array|null $multiEditColumnsType array of multi edit column types * @param string $currentValue current column value in the form * @param array|null $multiEditAutoIncrement multi edit auto increment - * @param int $rownumber index of where clause array * @param array $multiEditColumnsName multi edit column names array * @param array $multiEditColumnsNull multi edit columns null array * @param array $multiEditColumnsNullPrev multi edit columns previous null @@ -1708,7 +1707,6 @@ class InsertEdit ?array $multiEditColumnsType, string $currentValue, ?array $multiEditAutoIncrement, - $rownumber, $multiEditColumnsName, $multiEditColumnsNull, $multiEditColumnsNullPrev, @@ -1732,12 +1730,7 @@ class InsertEdit $currentValue = 'NULL'; } } elseif ($type === 'set') { - $currentValue = "''"; - if (! empty($_POST['fields']['multi_edit'][$rownumber][$key])) { - $currentValue = implode(',', $_POST['fields']['multi_edit'][$rownumber][$key]); - $currentValue = "'" - . $this->dbi->escapeString($currentValue) . "'"; - } + $currentValue = "'" . $this->dbi->escapeString($currentValue) . "'"; } elseif ($type === 'protected') { // Fetch the current values of a row to use in case we have a protected field if ( diff --git a/psalm-baseline.xml b/psalm-baseline.xml index b071d0db63..a3e526e3b7 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -3658,16 +3658,13 @@ $insertErrors - + $_POST['db'] $_POST['rel_fields_list'] $_POST['table'] $_POST['transform_fields_list'] $column_name $column_name - $current_value - $current_value - $current_value $errorMessages $extra_data $lastMessages @@ -3692,11 +3689,11 @@ $where_clause + $current_value $key $key $queryValues $queryValues - $rownumber $_POST['fields_name']['multi_edit'] @@ -3713,7 +3710,7 @@ $mimeMap[$column_name] - + $GLOBALS['active_page'] $GLOBALS['cfg']['InsertRows'] $GLOBALS['disp_message'] @@ -3729,7 +3726,6 @@ $column_name $column_name $curr_rel_field - $current_value $extra_data['row_count'] $insertRows $multi_edit_auto_increment @@ -3755,12 +3751,9 @@ $where_clause $where_clause - + $GLOBALS['urlParams'] $GLOBALS['urlParams'] - $current_value - $current_value - $current_value $multi_edit_columns_null $multi_edit_columns_null $multi_edit_columns_null_prev @@ -7910,9 +7903,8 @@ - + $_POST['fields']['multi_edit'] - $_POST['fields']['multi_edit'][$rownumber][$key] $backupField $columnMime['input_transformation_options'] $column['Default'] diff --git a/test/classes/InsertEditTest.php b/test/classes/InsertEditTest.php index ecdff50432..0d0776ce62 100644 --- a/test/classes/InsertEditTest.php +++ b/test/classes/InsertEditTest.php @@ -2187,7 +2187,6 @@ class InsertEditTest extends AbstractTestCase [], '', [], - 0, [], [], [], @@ -2206,7 +2205,6 @@ class InsertEditTest extends AbstractTestCase ['test'], '', [1], - 0, [], [], [], @@ -2225,7 +2223,6 @@ class InsertEditTest extends AbstractTestCase ['test'], '', [], - 0, [], [], [], @@ -2245,7 +2242,6 @@ class InsertEditTest extends AbstractTestCase ['set'], '', [], - 0, [], [], [], @@ -2264,7 +2260,6 @@ class InsertEditTest extends AbstractTestCase ['protected'], '', [], - 0, ['name'], [], [], @@ -2283,7 +2278,6 @@ class InsertEditTest extends AbstractTestCase ['protected'], '', [], - 0, ['a'], [], [], @@ -2302,7 +2296,6 @@ class InsertEditTest extends AbstractTestCase ['bit'], '20\'12', [], - 0, ['a'], [], [], @@ -2321,7 +2314,6 @@ class InsertEditTest extends AbstractTestCase ['date'], '20\'12', [], - 0, ['a'], [], [], @@ -2341,7 +2333,6 @@ class InsertEditTest extends AbstractTestCase ['set'], '', [], - 0, [], [1], [], @@ -2360,7 +2351,6 @@ class InsertEditTest extends AbstractTestCase ['protected'], '', [], - 0, ['a'], [], [1],