From 137cac91d556add54f64cdbe474b63e44878493b Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Fri, 12 Aug 2016 15:17:29 +0200 Subject: [PATCH] (model, migrations) add default migration strategy --- .../OPNsense/Base/BaseModelMigration.php | 20 +++++++++++++++++++ .../OPNsense/Base/FieldTypes/BaseField.php | 2 +- 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModelMigration.php b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModelMigration.php index f91acc140..381b6fc81 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModelMigration.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModelMigration.php @@ -37,7 +37,27 @@ use Phalcon\Logger\Adapter\Syslog; */ abstract class BaseModelMigration { + /** + * Walk through all nodes and check required defaults + * @param $node + */ + private function checkDefaults($node) + { + foreach ($node->__items as $key => $subnode) { + if (count($subnode->__items) > 0) { + $this->checkDefaults($subnode); + } elseif ($subnode->isEmptyAndRequired()) { + $subnode->applyDefault(); + } + } + } + + /** + * default model migration + * @param $model + */ public function run($model) { + $this->checkDefaults($model); } } diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php index cfef5dbbe..5398b3376 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php @@ -338,7 +338,7 @@ abstract class BaseField * check if this field is unused and required * @return bool */ - protected function isEmptyAndRequired() + public function isEmptyAndRequired() { if ($this->internalIsRequired && ($this->internalValue == "" || $this->internalValue == null)) { return true;