diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index b99731cf9..c4c9a73ac 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -181,7 +181,6 @@ class pmDynaform case 'dataVariable': $dataVariable = (preg_match('/^\s*@.(.+)\s*$/', $json->dataVariable, $arrayMatch)) ? $arrayMatch[1] : $json->dataVariable; - if (isset($this->fields['APP_DATA'][$dataVariable]) && is_array($this->fields['APP_DATA'][$dataVariable]) && !empty($this->fields['APP_DATA'][$dataVariable]) @@ -189,8 +188,7 @@ class pmDynaform foreach ($this->fields['APP_DATA'][$dataVariable] as $row) { $option = new stdClass(); $option->value = $row[0]; - $option->label = (isset($row[1])) ? $row[1] : $row[0]; - + $option->label = isset($row[1]) ? $row[1] : ""; $json->optionsSql[] = $option; } } @@ -207,7 +205,7 @@ class pmDynaform $row = $rs->getRow(); $option = new stdClass(); $option->value = $row[0]; - $option->label = isset($row[1]) ? $row[1] : $row[0]; + $option->label = isset($row[1]) ? $row[1] : ""; $json->optionsSql[] = $option; } } catch (Exception $e) { @@ -234,7 +232,6 @@ class pmDynaform $json->data->value = $this->fields["APP_DATA"][$json->name]; $json->data->label = $this->fields["APP_DATA"][$json->name]; } - $json->optionsSql = array(); } if ($key === "type" && ($value === "dropdown")) { $json->data = new stdClass(); @@ -287,7 +284,6 @@ class pmDynaform if (isset($this->fields["APP_DATA"][$json->name . "_label"])) { $json->data->label = $this->fields["APP_DATA"][$json->name . "_label"]; } - $json->optionsSql = array(); } if ($key === "type" && ($value === "radio")) { $json->data = new stdClass(); @@ -438,15 +434,15 @@ class pmDynaform } } //synchronize var_label - if ($key === "type" && ($value === "dropdown" || $value === "suggest")) { + if ($key === "type" && ($value === "dropdown" || $value === "suggest" || $value === "radio")) { if (isset($this->fields["APP_DATA"]["__VAR_CHANGED__"]) && in_array($json->name, explode(",", $this->fields["APP_DATA"]["__VAR_CHANGED__"]))) { foreach ($json->optionsSql as $io) { - if ($json->data->value === $io->value) { + if ($this->toStringNotNullValues($json->data->value) === $io->value) { $json->data->label = $io->label; } } foreach ($json->options as $io) { - if ($json->data->value === $io->value) { + if ($this->toStringNotNullValues($json->data->value) === $io->value) { $json->data->label = $io->label; } } @@ -466,14 +462,14 @@ class pmDynaform foreach ($dv as $idv) { foreach ($json->optionsSql as $os) { if ($os->value === $idv) { - array_push($dataValue, $os->value); - array_push($dataLabel, $os->label); + $dataValue[] = $os->value; + $dataLabel[] = $os->label; } } foreach ($json->options as $os) { if ($os->value === $idv) { - array_push($dataValue, $os->value); - array_push($dataLabel, $os->label); + $dataValue[] = $os->value; + $dataLabel[] = $os->label; } } } @@ -488,6 +484,10 @@ class pmDynaform $_SESSION["TRIGGER_DEBUG"]["DATA"][] = Array("key" => $json->name . "_label", "value" => $json->data->label); } } + //clear optionsSql + if ($key === "type" && ($value === "text" || $value === "textarea" || $value === "hidden" || $value === "suggest")) { + $json->optionsSql = array(); + } //grid if ($key === "type" && ($value === "grid")) { if (isset($this->fields["APP_DATA"][$json->name])) { @@ -1528,4 +1528,18 @@ class pmDynaform return array('dsn' => $dsn, 'username' => DB_USER, 'password' => DB_PASS); } + /** + * Returns the value converted to string if it is not null. + * + * @param string $string + * @return string + */ + private function toStringNotNullValues($value) + { + if (is_null($value)) { + return ""; + } + return (string) $value; + } + }