diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php index a28046202..529b16f02 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/BaseModel.php @@ -28,7 +28,6 @@ namespace OPNsense\Base; -use OPNsense\Base\FieldTypes\ArrayField; use OPNsense\Base\FieldTypes\ContainerField; use OPNsense\Core\Config; use Phalcon\Logger\Adapter\Syslog; @@ -221,7 +220,7 @@ abstract class BaseModel $config_section_data = null; } - if ($fieldObject instanceof ArrayField) { + if ($fieldObject->isArrayType()) { // handle Array types, recurring items if ($config_section_data != null && !empty((string)$config_section_data)) { foreach ($config_section_data as $conf_section) { diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/Constraints/UniqueConstraint.php b/src/opnsense/mvc/app/models/OPNsense/Base/Constraints/UniqueConstraint.php index a7879dc51..c35887f78 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/Constraints/UniqueConstraint.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/Constraints/UniqueConstraint.php @@ -53,10 +53,7 @@ class UniqueConstraint extends BaseConstraint $parentNode = $node->getParentNode(); $level = 0; // dive into parent - while ( - $containerNode != null && - get_class($containerNode) != 'OPNsense\Base\FieldTypes\ArrayField' - ) { + while ($containerNode != null && !$containerNode->isArrayType()) { $containerNode = $containerNode->getParentNode(); $level++; } 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 0f9f121e1..1a1bdfeef 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/BaseField.php @@ -122,6 +122,16 @@ abstract class BaseField */ private $internalParentModel = null; + + /** + * @return bool + */ + public function isArrayType() + { + return is_a($this, "OPNsense\\Base\\FieldTypes\\ArrayField") || + is_subclass_of($this, "OPNsense\\Base\\FieldTypes\\ArrayField"); + } + /** * generate a new UUID v4 number * @return string uuid v4 number @@ -583,7 +593,7 @@ abstract class BaseField } // add new items to array type objects - if (get_class($this) == "OPNsense\\Base\\FieldTypes\\ArrayField") { + if ($this->isArrayType()) { foreach ($data as $dataKey => $dataValue) { if (!isset($this->__items[$dataKey])) { $node = $this->add(); @@ -600,7 +610,7 @@ abstract class BaseField */ public function addToXMLNode($node) { - if ($this->internalReference == "" || get_class($this) == "OPNsense\\Base\\FieldTypes\\ArrayField") { + if ($this->internalReference == "" || $this->isArrayType()) { // ignore tags without internal reference (root) and ArrayTypes $subnode = $node; } else {