-
Notifications
You must be signed in to change notification settings - Fork 6
Inadequate or missing sanity/error checks in Migrate #85
Copy link
Copy link
Open
Labels
Description
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']);
}
}
}Reactions are currently unavailable