Skip to content

Inadequate or missing sanity/error checks in Migrate #85

@mambax7

Description

@mambax7

In PHP 8.1 I'm getting errors:

Warning: Undefined array key "publisher_categories" in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
--
Warning: Trying to access array offset on value of type null in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: foreach() argument must be of type array\|object, null given in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: Undefined array key "publisher_items" in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: Trying to access array offset on value of type null in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: foreach() argument must be of type array\|object, null given in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: Undefined array key "publisher_files" in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: Trying to access array offset on value of type null in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: foreach() argument must be of type array\|object, null given in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: Undefined array key "publisher_meta" in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: Trying to access array offset on value of type null in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: foreach() argument must be of type array\|object, null given in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: Undefined array key "publisher_mimetypes" in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: Trying to access array offset on value of type null in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: foreach() argument must be of type array\|object, null given in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: Undefined array key "publisher_rating" in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: Trying to access array offset on value of type null in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216
Warning: foreach() argument must be of type array\|object, null given in file /class/libraries/vendor/xoops/xmf/src/Database/Migrate.php line 216

After adding isset() check as below, the warnings are gone:

     if (isset($this->targetDefinitions[$tableName])) {
         foreach ($this->targetDefinitions[$tableName]['columns'] as $column) {
             $attributes = $this->tableHandler->getColumnAttributes($tableName, $column['name']);
             if ($attributes === false) {
                 $this->tableHandler->addColumn($tableName, $column['name'], $column['attributes']);
             } elseif ($column['attributes'] !== $attributes) {
                 $this->tableHandler->alterColumn($tableName, $column['name'], $column['attributes']);
             }
         }
     }

Metadata

Metadata

Assignees

Labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions