diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index 5a6bc1a8f..4137f0a99 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -1257,6 +1257,20 @@ class pmDynaform return $this->jsonsf($json, $field_id); } + public function searchFieldByName($dyn_uid, $name) + { + $a = new Criteria("workflow"); + $a->addSelectColumn(DynaformPeer::DYN_CONTENT); + $a->add(DynaformPeer::DYN_UID, $dyn_uid, Criteria::EQUAL); + $ds = ProcessPeer::doSelectRS($a); + $ds->setFetchmode(ResultSet::FETCHMODE_ASSOC); + $ds->next(); + $row = $ds->getRow(); + $json = G::json_decode($row["DYN_CONTENT"]); + $this->jsonr($json); + return $this->jsonsf($json, $name, "name"); + } + private function jsonsf(&$json, $id, $for = "id") { foreach ($json as $key => $value) { diff --git a/workflow/engine/classes/class.pmFunctions.php b/workflow/engine/classes/class.pmFunctions.php index 2ac230034..c90af1ab0 100644 --- a/workflow/engine/classes/class.pmFunctions.php +++ b/workflow/engine/classes/class.pmFunctions.php @@ -2380,6 +2380,21 @@ function jumping ($caseId, $delIndex) */ function PMFgetLabelOption ($PROCESS, $DYNAFORM_UID, $FIELD_NAME, $FIELD_SELECTED_ID) { + G::LoadClass("pmDynaform"); + $data = array(); + $data["CURRENT_DYNAFORM"] = $DYNAFORM_UID; + $dynaform = new pmDynaform($data); + if ($dynaform->isResponsive()) { + $json = $dynaform->searchFieldByName($DYNAFORM_UID, $FIELD_NAME); + $options = $json->options + $json->optionsSql; + foreach ($options as $key => $value) { + if ((string) $value->value === (string) $FIELD_SELECTED_ID) { + return $value->label; + } + } + return null; + } + $G_FORM = new Form( "{$PROCESS}/{$DYNAFORM_UID}", PATH_DYNAFORM, SYS_LANG, false ); if (isset( $G_FORM->fields[$FIELD_NAME]->option[$FIELD_SELECTED_ID] )) { return $G_FORM->fields[$FIELD_NAME]->option[$FIELD_SELECTED_ID];