From 5d457fed104e5859d4bb44bab223ceb591c9ee13 Mon Sep 17 00:00:00 2001 From: Ad Schellevis Date: Tue, 29 Aug 2017 21:08:12 +0200 Subject: [PATCH] model, extend NetworkField so multiple items can be returned as a list (like other options), for https://github.com/opnsense/core/issues/1793 --- .../OPNsense/Base/FieldTypes/NetworkField.php | 37 +++++++++++++++++++ 1 file changed, 37 insertions(+) diff --git a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/NetworkField.php b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/NetworkField.php index 75d80bd8a..4d80ea6ec 100644 --- a/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/NetworkField.php +++ b/src/opnsense/mvc/app/models/OPNsense/Base/FieldTypes/NetworkField.php @@ -62,6 +62,11 @@ class NetworkField extends BaseField */ protected $internalWildcardEnabled = true; + /** + * @var bool when set, results are returned as list (with all options enabled) + */ + private $internalAsList = false; + /** * always lowercase / trim networks * @param string $value @@ -106,6 +111,38 @@ class NetworkField extends BaseField } } + /** + * select if multiple networks may be selected at once + * @param $value boolean value 0/1 + */ + public function setAsList($value) + { + if (trim(strtoupper($value)) == "Y") { + $this->internalAsList = true; + } else { + $this->internalAsList = false; + } + } + + /** + * get valid options, descriptions and selected value + * @return array + */ + public function getNodeData() + { + if ($this->internalAsList) { + // return result as list + $result = array(); + foreach (explode(',', $this->internalValue) as $net) { + $result[$net] = array("value" => $net, "selected" => 1); + } + return $result; + } else { + // normal, single field response + return $this->internalValue; + } + } + /** * retrieve field validators for this field type * @return array returns Text/regex validator