diff --git a/libraries/classes/Table.php b/libraries/classes/Table.php index 6b9d9cb301..426ae59629 100644 --- a/libraries/classes/Table.php +++ b/libraries/classes/Table.php @@ -2241,7 +2241,11 @@ class Table implements Stringable $masterField = $multiEditColumnsName[$masterFieldMd5]; $foreignTable = $destinationTable[$masterFieldMd5]; $foreignField = $destinationColumn[$masterFieldMd5]; - if (! empty($foreignDb) && ! empty($foreignTable) && ! empty($foreignField)) { + if ( + $foreignDb !== '' + && $foreignTable !== '' && $foreignTable !== null + && $foreignField !== '' && $foreignField !== null + ) { if (! isset($existrel[$masterField])) { $updQuery = 'INSERT INTO ' . Util::backquote($relationFeature->database) @@ -2345,20 +2349,20 @@ class Table implements Stringable $emptyFields = false; foreach ($masterField as $key => $oneField) { if ( - (! empty($oneField) && empty($foreignField[$key])) - || (empty($oneField) && ! empty($foreignField[$key])) + ($oneField !== '' && (! isset($foreignField[$key]) || $foreignField[$key] === '')) + || ($oneField === '' && (isset($foreignField[$key]) && $foreignField[$key] !== '')) ) { $emptyFields = true; } - if (! empty($oneField) || ! empty($foreignField[$key])) { + if ($oneField !== '' || (isset($foreignField[$key]) && $foreignField[$key] !== '')) { continue; } unset($masterField[$key], $foreignField[$key]); } - if (! empty($foreignDb) && ! empty($foreignTable) && ! $emptyFields) { + if ($foreignDb !== '' && $foreignTable !== '' && ! $emptyFields) { if (isset($existrelForeign[$masterFieldMd5])) { $constraintName = $existrelForeign[$masterFieldMd5]['constraint']; $onDelete = ! empty( @@ -2466,8 +2470,8 @@ class Table implements Stringable $sqlQueryRecreate = '# Restoring the dropped constraint...' . "\n"; $sqlQueryRecreate .= $this->getSQLToCreateForeignKey( $table, - $masterField, - $existrelForeign[$masterFieldMd5]['ref_db_name'], + $existrelForeign[$masterFieldMd5]['index_list'], + $existrelForeign[$masterFieldMd5]['ref_db_name'] ?? $GLOBALS['db'], $existrelForeign[$masterFieldMd5]['ref_table_name'], $existrelForeign[$masterFieldMd5]['ref_index_list'], $existrelForeign[$masterFieldMd5]['constraint'], diff --git a/phpstan-baseline.neon b/phpstan-baseline.neon index 39869589bf..84e9d7e8c6 100644 --- a/phpstan-baseline.neon +++ b/phpstan-baseline.neon @@ -35032,7 +35032,7 @@ parameters: - message: "#^Cannot access offset 'index_list' on mixed\\.$#" - count: 1 + count: 2 path: libraries/classes/Table.php - @@ -35167,7 +35167,7 @@ parameters: - message: "#^Construct empty\\(\\) is not allowed\\. Use more strict comparison\\.$#" - count: 41 + count: 30 path: libraries/classes/Table.php - diff --git a/psalm-baseline.xml b/psalm-baseline.xml index 594d90b34d..5e127407a3 100644 --- a/psalm-baseline.xml +++ b/psalm-baseline.xml @@ -13397,7 +13397,7 @@ $tableAutoIncrement ?? '' - + $GLOBALS['sql_auto_increments'] $GLOBALS['sql_indexes'] $_POST['constraint_name'][$masterFieldMd5] @@ -13413,7 +13413,8 @@ $errorUrl $existrelForeign[$masterFieldMd5]['constraint'] $existrelForeign[$masterFieldMd5]['constraint'] - $existrelForeign[$masterFieldMd5]['ref_db_name'] + $existrelForeign[$masterFieldMd5]['index_list'] + $existrelForeign[$masterFieldMd5]['ref_db_name'] ?? $GLOBALS['db'] $existrelForeign[$masterFieldMd5]['ref_index_list'] $existrelForeign[$masterFieldMd5]['ref_table_name'] $fields[$column]['expr'] @@ -13459,7 +13460,7 @@ $where $where - + $_SESSION['tmpval']['table_uiprefs'][$serverId][$this->dbName][$this->name] $column['Extra'] $column['Extra'] @@ -13469,6 +13470,7 @@ $existrelForeign[$masterFieldMd5]['constraint'] $existrelForeign[$masterFieldMd5]['constraint'] $existrelForeign[$masterFieldMd5]['index_list'] + $existrelForeign[$masterFieldMd5]['index_list'] $existrelForeign[$masterFieldMd5]['on_delete'] $existrelForeign[$masterFieldMd5]['on_delete'] $existrelForeign[$masterFieldMd5]['on_update'] @@ -13619,21 +13621,23 @@ $_POST['on_update'][$masterFieldMd5] $_POST['on_update'][$masterFieldMd5] - + $GLOBALS['showtable']['Name'] $commentsCopyRow['column_name'] $commentsCopyRow['comment'] $commentsCopyRow['mimetype'] $commentsCopyRow['transformation'] $commentsCopyRow['transformation_options'] - $existrelForeign[$masterFieldMd5]['ref_db_name'] + $existrelForeign[$masterFieldMd5]['index_list'] + $existrelForeign[$masterFieldMd5]['ref_db_name'] ?? $GLOBALS['db'] $existrelForeign[$masterFieldMd5]['ref_index_list'] $existrelForeign[$masterFieldMd5]['ref_table_name'] $val - + $existrelForeign[$masterFieldMd5]['constraint'] $existrelForeign[$masterFieldMd5]['constraint'] + $existrelForeign[$masterFieldMd5]['index_list'] $existrelForeign[$masterFieldMd5]['on_delete'] $existrelForeign[$masterFieldMd5]['on_update'] $existrelForeign[$masterFieldMd5]['ref_db_name'] @@ -13653,7 +13657,8 @@ Generator::mysqlDie($tmpErrorCreate, $createQuery, false, '', false) Generator::mysqlDie($tmpErrorDrop, $dropQuery, false, '', false) - + + $existrelForeign[$masterFieldMd5] $existrelForeign[$masterFieldMd5] $existrelForeign[$masterFieldMd5] $existrelForeign[$masterFieldMd5] diff --git a/templates/table/relation/common_form.twig b/templates/table/relation/common_form.twig index 2cca11800a..b835647be7 100644 --- a/templates/table/relation/common_form.twig +++ b/templates/table/relation/common_form.twig @@ -44,14 +44,14 @@ {% set foreign_db = one_key['ref_db_name'] is defined and one_key['ref_db_name'] is not null ? one_key['ref_db_name'] : db %} - {% set foreign_table = false %} + {% set foreign_table = '' %} {% if foreign_db %} {% set foreign_table = one_key['ref_table_name'] is defined and one_key['ref_table_name'] is not null - ? one_key['ref_table_name'] : false %} + ? one_key['ref_table_name'] : '' %} {% endif %} {% set unique_columns = [] %} - {% if foreign_db and foreign_table %} + {% if foreign_db is not same as('') and foreign_table is not same as('') %} {% set table_obj = table_get(foreign_table, foreign_db) %} {% set unique_columns = table_obj.getUniqueColumns(false, false) %} {% endif %} @@ -82,8 +82,8 @@ 'table': table, 'url_params': url_params, 'databases': databases, - 'foreign_db': foreign_db, - 'foreign_table': foreign_table, + 'foreign_db': '', + 'foreign_table': '', 'unique_columns': unique_columns } only %} {% set i = i + 1 %} @@ -134,7 +134,7 @@ in the name attribute (see bug #1746964 ) #} {% set myfield_md5 = column_hash_array[myfield] %} - {% set foreign_table = false %} + {% set foreign_table = '' %} {% set foreign_column = false %} {# Database dropdown #} @@ -155,7 +155,7 @@ {# Column dropdown #} {% set unique_columns = [] %} - {% if foreign_db and foreign_table %} + {% if foreign_db is not same as('') and foreign_table is not same as('') %} {% if existrel[myfield] is defined %} {% set foreign_column = existrel[myfield]['foreign_field'] %} {% endif %} diff --git a/templates/table/relation/foreign_key_row.twig b/templates/table/relation/foreign_key_row.twig index 3d7be1cfbc..50b310ac5e 100644 --- a/templates/table/relation/foreign_key_row.twig +++ b/templates/table/relation/foreign_key_row.twig @@ -113,7 +113,7 @@ - {% if foreign_db and foreign_table %} + {% if foreign_table is not same as('') %} {% for foreign_column in one_key['ref_index_list'] %} {% include 'table/relation/relational_dropdown.twig' with { diff --git a/templates/table/relation/relational_dropdown.twig b/templates/table/relation/relational_dropdown.twig index 93b694bc76..8b0cb2b7a8 100644 --- a/templates/table/relation/relational_dropdown.twig +++ b/templates/table/relation/relational_dropdown.twig @@ -3,7 +3,7 @@ {% set seen_key = false %} {% for value in values %}