From 6ed3e4fe8d4c15e3ec902baaed852a9237ff36ca Mon Sep 17 00:00:00 2001 From: Franco Fichtner Date: Thu, 14 Jan 2021 16:12:53 +0100 Subject: [PATCH] mvc: do not migrate unversioned empty model data --- .../mvc/app/models/OPNsense/Base/BaseModel.php | 10 +++++++--- src/opnsense/mvc/script/run_migrations.php | 4 ++-- 2 files changed, 9 insertions(+), 5 deletions(-) diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php index 248a1c732..7ab599f2e 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php @@ -336,10 +336,11 @@ abstract class BaseModel $this->parseXml($model_xml->items, $config_array, $this->internalData); // root may contain a version, store if found if (empty($config_array)) { - // new node, reset - $this->internal_current_model_version = "0.0.0"; + $this->internal_current_model_version = null; } elseif (!empty($config_array->attributes()['version'])) { $this->internal_current_model_version = (string)$config_array->attributes()['version']; + } else { + $this->internal_current_model_version = "0.0.0"; } // trigger post loading event @@ -629,7 +630,10 @@ abstract class BaseModel */ public function runMigrations() { - if (version_compare($this->internal_current_model_version, $this->internal_model_version, '<')) { + if ( + $this->internal_current_model_version !== null && + version_compare($this->internal_current_model_version, $this->internal_model_version, '<') + ) { $upgradePerfomed = false; $migObjects = array(); $logger = new Syslog("config", array('option' => LOG_PID, 'facility' => LOG_LOCAL4)); diff --git a/src/opnsense/mvc/script/run_migrations.php b/src/opnsense/mvc/script/run_migrations.php index d4e119a95..42d1d183f 100755 --- a/src/opnsense/mvc/script/run_migrations.php +++ b/src/opnsense/mvc/script/run_migrations.php @@ -56,7 +56,7 @@ 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 : ' '; + $version_pre = !empty($version_pre) ? $version_pre : ''; echo "Migrated " . $mdl_class_info->getName() . " from " . $version_pre . " to " . $version_post . "\n"; @@ -67,7 +67,7 @@ foreach (new RecursiveIteratorIterator(new RecursiveDirectoryIterator($model_dir } elseif (!empty($version_post)) { echo "Keep version " . $mdl_class_info->getName() . " (" . $version_post . ")\n"; } else { - echo "Unversioned " . $mdl_class_info->getName() . "\n"; + echo "Keep unversioned " . $mdl_class_info->getName() . "\n"; } } } catch (\ReflectionException $e) {