From 51ef39ef5c20b34b4b422ab933dade05c7548ff9 Mon Sep 17 00:00:00 2001 From: Roly Rudy Gutierrez Pinto Date: Fri, 4 Dec 2015 17:31:37 -0400 Subject: [PATCH] PM-4299 --- workflow/engine/classes/class.pmDynaform.php | 51 ++++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index d5cefddbf..8bc968dfb 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -24,6 +24,7 @@ class pmDynaform $this->fields = $fields; $this->getDynaform(); $this->getDynaforms(); + $this->synchronizeSubDynaform(); $this->getCredentials(); if (!isset($this->fields["APP_UID"])) { $this->fields["APP_UID"] = null; @@ -292,7 +293,16 @@ class pmDynaform $json->data->label = ""; if (isset($this->fields["APP_DATA"][$json->name])) { $json->data->value = $this->fields["APP_DATA"][$json->name]; - $json->data->label = $this->fields["APP_DATA"][$json->name]; + foreach ($json->options as $os) { + if (($json->data->value === true || $json->data->value === 1 || $json->data->value === "1") && + ($os->value === true || $os->value === 1 || $os->value === "1")) { + $json->data->label = $os->label; + } + if (($json->data->value === false || $json->data->value === 0 || $json->data->value === "0") && + ($os->value === false || $os->value === 0 || $os->value === "0")) { + $json->data->label = $os->label; + } + } } } if ($key === "type" && ($value === "checkgroup")) { @@ -494,7 +504,7 @@ class pmDynaform if ($key === "type" && ($value === "form") && $this->records != null) { foreach ($this->records as $ri) { if ($json->id === $ri["DYN_UID"] && !isset($json->jsonUpdate)) { - $jsonUpdate = json_decode($ri["DYN_CONTENT"]); + $jsonUpdate = G::json_decode($ri["DYN_CONTENT"]); $jsonUpdate = $jsonUpdate->items[0]; $jsonUpdate->colSpan = $json->colSpan; $jsonUpdate->jsonUpdate = true; @@ -544,7 +554,7 @@ class pmDynaform $data[$json->variable === "" ? $json->id : $json->variable] = $json->options[0]->value; } if (isset($json->placeholder) && $json->placeholder !== "") { - $data[$json->variable === "" ? $json->id : $json->variable] = $json->placeholder; + $data[$json->variable === "" ? $json->id : $json->variable] = ""; } if (isset($json->defaultValue) && $json->defaultValue !== "") { $data[$json->variable === "" ? $json->id : $json->variable] = $json->defaultValue; @@ -903,6 +913,41 @@ class pmDynaform return $file; } + public function synchronizeSubDynaform() + { + if (!isset($this->record["DYN_CONTENT"])) { + return; + } + $json = G::json_decode($this->record["DYN_CONTENT"]); + foreach ($this->records as $ri) { + $jsonSearch = $this->jsonsf($json, $ri["DYN_UID"], "id"); + if ($jsonSearch === null) { + continue; + } + $jsonUpdate = G::json_decode($ri["DYN_CONTENT"]); + $jsonUpdate = $jsonUpdate->items[0]; + $jsonUpdate->colSpan = $jsonSearch->colSpan; + $this->jsonReplace($json, $ri["DYN_UID"], "id", $jsonUpdate); + } + $this->record["DYN_CONTENT"] = G::json_encode($json); + } + + private function jsonReplace(&$json, $id, $for = "id", $update) + { + foreach ($json as $key => &$value) { + $sw1 = is_array($value); + $sw2 = is_object($value); + if ($sw1 || $sw2) { + $this->jsonReplace($value, $id, $for, $update); + } + if (!$sw1 && !$sw2) { + if ($key === $for && $id === $value) { + $json = $update; + } + } + } + } + public function synchronizeVariable($processUid, $newVariable, $oldVariable) { $criteria = new Criteria("workflow");