diff options
author | MaurĂcio Meneghini Fauth <mauricio@fauth.dev> | 2022-08-11 05:04:53 +0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-08-11 05:04:53 +0300 |
commit | d2377526429a07cbf19c328e98e98c209130c2b8 (patch) | |
tree | 2854b1dca66c53163e13912c39ff73c888525afb | |
parent | 35f421a69bceafd4c1cf4d596cb42d3524f80e31 (diff) | |
parent | 1e70bba8836d6df2e85acd83ab8650f47c5fbfba (diff) |
Merge pull request #17679 from kamil-tekiela/Fix-bug-that-doesn't-allow-insertion-of-set-values
Fix bug not allowing insertion of set values
-rw-r--r-- | libraries/classes/Controllers/Table/ReplaceController.php | 9 | ||||
-rw-r--r-- | libraries/classes/InsertEdit.php | 9 | ||||
-rw-r--r-- | psalm-baseline.xml | 18 | ||||
-rw-r--r-- | 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 @@ <InvalidArgument occurrences="1"> <code>$insertErrors</code> </InvalidArgument> - <MixedArgument occurrences="31"> + <MixedArgument occurrences="28"> <code>$_POST['db']</code> <code>$_POST['rel_fields_list']</code> <code>$_POST['table']</code> <code>$_POST['transform_fields_list']</code> <code>$column_name</code> <code>$column_name</code> - <code>$current_value</code> - <code>$current_value</code> - <code>$current_value</code> <code>$errorMessages</code> <code>$extra_data</code> <code>$lastMessages</code> @@ -3692,11 +3689,11 @@ <code>$where_clause</code> </MixedArgument> <MixedArgumentTypeCoercion occurrences="5"> + <code>$current_value</code> <code>$key</code> <code>$key</code> <code>$queryValues</code> <code>$queryValues</code> - <code>$rownumber</code> </MixedArgumentTypeCoercion> <MixedArrayAccess occurrences="4"> <code>$_POST['fields_name']['multi_edit']</code> @@ -3713,7 +3710,7 @@ <MixedArrayOffset occurrences="1"> <code>$mimeMap[$column_name]</code> </MixedArrayOffset> - <MixedAssignment occurrences="32"> + <MixedAssignment occurrences="31"> <code>$GLOBALS['active_page']</code> <code>$GLOBALS['cfg']['InsertRows']</code> <code>$GLOBALS['disp_message']</code> @@ -3729,7 +3726,6 @@ <code>$column_name</code> <code>$column_name</code> <code>$curr_rel_field</code> - <code>$current_value</code> <code>$extra_data['row_count']</code> <code>$insertRows</code> <code>$multi_edit_auto_increment</code> @@ -3755,12 +3751,9 @@ <code>$where_clause</code> <code>$where_clause</code> </MixedOperand> - <PossiblyNullArgument occurrences="11"> + <PossiblyNullArgument occurrences="8"> <code>$GLOBALS['urlParams']</code> <code>$GLOBALS['urlParams']</code> - <code>$current_value</code> - <code>$current_value</code> - <code>$current_value</code> <code>$multi_edit_columns_null</code> <code>$multi_edit_columns_null</code> <code>$multi_edit_columns_null_prev</code> @@ -7910,9 +7903,8 @@ </file> <file src="libraries/classes/InsertEdit.php"> <LessSpecificReturnStatement occurrences="1"/> - <MixedArgument occurrences="78"> + <MixedArgument occurrences="77"> <code>$_POST['fields']['multi_edit']</code> - <code>$_POST['fields']['multi_edit'][$rownumber][$key]</code> <code>$backupField</code> <code>$columnMime['input_transformation_options']</code> <code>$column['Default']</code> 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], |