From 208d267f56f5353ad8256d14858f4553a364d50e Mon Sep 17 00:00:00 2001 From: Franco Fichtner <franco@opnsense.org> Date: Thu, 9 Feb 2017 22:43:28 +0100 Subject: [PATCH] mvc: flatten ModelRelationField logic and always use continue (cherry picked from commit 70c502ba51c2867584eaf8277e9bd7af95ee2a03) --- .../Base/FieldTypes/ModelRelationField.php | 58 ++++++++++--------- 1 file changed, 31 insertions(+), 27 deletions(-) diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ModelRelationField.php b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ModelRelationField.php index bede7c6ec..ebfdc5f82 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ModelRelationField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/ModelRelationField.php @@ -2,7 +2,6 @@ /** * Copyright (C) 2015 Deciso B.V. - * * All rights reserved. * * Redistribution and use in source and binary forms, with or without @@ -25,8 +24,8 @@ * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE * POSSIBILITY OF SUCH DAMAGE. - * */ + namespace OPNsense\Base\FieldTypes; use Phalcon\Validation\Validator\InclusionIn; @@ -83,36 +82,41 @@ class ModelRelationField extends BaseField self::$internalOptionList[$this->internalCacheKey] = array(); foreach ($mdlStructure as $modelData) { // only handle valid model sources - if (isset($modelData['source']) && isset($modelData['items']) && isset($modelData['display'])) { - $className = str_replace(".", "\\", $modelData['source']); - // handle optional/missing classes, i.e. from plugins - if (!class_exists($className)) { - continue; - } - $modelObj = new $className; - foreach ($modelObj->getNodeByReference($modelData['items'])->__items as $node) { - $displayKey = $modelData['display']; - if (isset($node->getAttributes()["uuid"]) && $node->$displayKey != null) { - // check for filters and apply if found - $isMatched = true; - if (isset($modelData['filters'])) { - foreach ($modelData['filters'] as $filterKey => $filterValue) { - $fieldData = $node->$filterKey; - if (!preg_match($filterValue, $fieldData) && $fieldData != null) { - $isMatched = false; - break; - } + if (!isset($modelData['source']) || !isset($modelData['items']) || !isset($modelData['display'])) { + continue; + } + + // handle optional/missing classes, i.e. from plugins + $className = str_replace('.', '\\', $modelData['source']); + if (!class_exists($className)) { + continue; + } + + $modelObj = new $className; + + foreach ($modelObj->getNodeByReference($modelData['items'])->__items as $node) { + $displayKey = $modelData['display']; + if (isset($node->getAttributes()["uuid"]) && $node->$displayKey != null) { + // check for filters and apply if found + $isMatched = true; + if (isset($modelData['filters'])) { + foreach ($modelData['filters'] as $filterKey => $filterValue) { + $fieldData = $node->$filterKey; + if (!preg_match($filterValue, $fieldData) && $fieldData != null) { + $isMatched = false; + break; } } - if ($isMatched) { - $uuid = $node->getAttributes()['uuid']; - self::$internalOptionList[$this->internalCacheKey][$uuid] = - $node->$displayKey->__toString(); - } + } + if ($isMatched) { + $uuid = $node->getAttributes()['uuid']; + self::$internalOptionList[$this->internalCacheKey][$uuid] = + $node->$displayKey->__toString(); } } - unset($modelObj); } + + unset($modelObj); } } } -- 2.21.0