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
This commit is contained in:
Maurício Meneghini Fauth 2022-08-10 23:04:53 -03:00 committed by GitHub
commit d237752642
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 13 additions and 33 deletions

View File

@ -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,

View File

@ -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 (

View File

@ -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>

View File

@ -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],