From 74fe31682fe8ff8e70bb1aa3a4d9d5cdc5992bac Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Thu, 9 Mar 2023 10:56:58 +0100 Subject: [PATCH] mvc: fix PHP warnings and dance around null/0.0.0 ambiguity If we have a model and no data we assume and write 0.0.0, but if we have a legacy data we want to have null to designate that we do actually migrate although from the top point of view 0.0.0 are the same. --- .../mvc/app/models/OPNsense/Base/BaseModel.php | 12 +++++------- src/opnsense/mvc/script/run_migrations.php | 1 - 2 files changed, 5 insertions(+), 8 deletions(-) diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php index ba96fde04..7b88f2d35 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php @@ -644,7 +644,7 @@ abstract class BaseModel { if ($this->internal_mountpoint == ':memory:') { return false; - } elseif (version_compare($this->internal_current_model_version, $this->internal_model_version, '<')) { + } elseif (version_compare($this->internal_current_model_version ?? '0.0.0', $this->internal_model_version, '<')) { $upgradePerformed = false; $migObjects = array(); $logger = new Logger( @@ -667,7 +667,7 @@ abstract class BaseModel uksort($versions, "version_compare"); foreach ($versions as $mig_version => $filename) { if ( - version_compare($this->internal_current_model_version, $mig_version, '<') && + version_compare($this->internal_current_model_version ?? '0,0.0', $mig_version, '<') && version_compare($this->internal_model_version, $mig_version, '>=') ) { // execute upgrade action @@ -690,10 +690,8 @@ abstract class BaseModel $upgradePerformed = true; } catch (Exception $e) { $logger->error("failed migrating from version " . - $this->internal_current_model_version . - " to " . $mig_version . " in " . - $class_info->getName() . - " [skipping step]"); + $this->getVersion() . " to " . $mig_version . " in " . + $class_info->getName() . " [skipping step]"); } $this->internal_current_model_version = $mig_version; } @@ -724,6 +722,6 @@ abstract class BaseModel */ public function getVersion() { - return $this->internal_current_model_version; + return $this->internal_current_model_version ?? ''; } } diff --git a/src/opnsense/mvc/script/run_migrations.php b/src/opnsense/mvc/script/run_migrations.php index 664c63b33..a734f66ce 100755 --- a/src/opnsense/mvc/script/run_migrations.php +++ b/src/opnsense/mvc/script/run_migrations.php @@ -55,7 +55,6 @@ foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($model_dir $version_post = $mdl->getVersion(); if ($version_pre != $version_post) { if ($mig_performed) { - $version_pre = !empty($version_pre) ? $version_pre : ''; echo "Migrated " . $mdl_class_info->getName() . " from " . $version_pre . " to " . $version_post . "\n";