Commit 208d267f authored by Franco Fichtner's avatar Franco Fichtner

mvc: flatten ModelRelationField logic and always use continue

(cherry picked from commit 70c502ba)
parent 59879d0a
......@@ -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);
}
}
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment