From 77c915c8971597f688d2aa14a21511c9dd0081c2 Mon Sep 17 00:00:00 2001 From: Thomas Gelf Date: Fri, 26 Aug 2016 13:48:44 +0000 Subject: [PATCH] DirectorObjectForm: normalize command field values... ...with special data types even when filled at services level fixes #12400 fixes #11692 fixes #11477 --- .../Director/Web/Form/DirectorObjectForm.php | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/library/Director/Web/Form/DirectorObjectForm.php b/library/Director/Web/Form/DirectorObjectForm.php index 2b0043c7..cd42b466 100644 --- a/library/Director/Web/Form/DirectorObjectForm.php +++ b/library/Director/Web/Form/DirectorObjectForm.php @@ -300,19 +300,21 @@ abstract class DirectorObjectForm extends QuickForm // Get value through form element. // TODO: reorder the related code. Create elements once - if (property_exists($fields, $mykey)) { - $field = $fields->$mykey; - $datafield = DirectorDatafield::load($field->datafield_id, $this->getDb()); - $name = 'var_' . $datafield->varname; - $className = $datafield->datatype; + foreach (array($fields, $checkFields) as $fieldSet) { + if (property_exists($fieldSet, $mykey)) { + $field = $fieldSet->$mykey; + $datafield = DirectorDatafield::load($field->datafield_id, $this->getDb()); + $name = 'var_' . $datafield->varname; + $className = $datafield->datatype; - if (class_exists($className)) { - $datatype = new $className; - $datatype->setSettings($datafield->getSettings()); - $el = $datatype->getFormElement($name, $this); + if (class_exists($className)) { + $datatype = new $className; + $datatype->setSettings($datafield->getSettings()); + $el = $datatype->getFormElement($name, $this); + } + + $value = $el->setValue($value)->getValue(); } - - $value = $el->setValue($value)->getValue(); } if (property_exists($fields, $mykey) && $fields->$mykey->format === 'json') {