From bbcdd2109251f5473f19aa0796866f16dcfb1242 Mon Sep 17 00:00:00 2001 From: dheeyi william Date: Mon, 20 Feb 2017 15:44:55 -0400 Subject: [PATCH] HOR-2711 [EndPoint Variables] La respuesta es distinta al get-next-Step en el caso de una variable Array --- workflow/engine/classes/class.pmDynaform.php | 3 +- .../src/ProcessMaker/BusinessModel/Cases.php | 32 ++++++++++++------- 2 files changed, 23 insertions(+), 12 deletions(-) diff --git a/workflow/engine/classes/class.pmDynaform.php b/workflow/engine/classes/class.pmDynaform.php index f68cc9083..a3dc3f43d 100644 --- a/workflow/engine/classes/class.pmDynaform.php +++ b/workflow/engine/classes/class.pmDynaform.php @@ -28,6 +28,7 @@ class pmDynaform private $dataSources = null; private $databaseProviders = null; private $propertiesToExclude = array(); + public static $prefixs = array("@@", "@#", "@%", "@?", "@$", "@="); public function __construct($fields = array()) { @@ -194,7 +195,7 @@ class pmDynaform $fn($json, $key, $value); } //set properties from trigger - $prefixs = array("@@", "@#", "@%", "@?", "@$", "@="); + $prefixs = self::$prefixs; if (is_string($value) && in_array(substr($value, 0, 2), $prefixs)) { $triggerValue = substr($value, 2); if (isset($this->fields["APP_DATA"][$triggerValue])) { diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php index 93c38834f..172feefbf 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Cases.php @@ -1698,19 +1698,29 @@ class Cases if (isset($field['type'])) { if ($field['type'] != 'form') { - if (isset($field['name']) && isset($appData[$field['name']])) { - if (isset($field['dataType']) && $field['dataType'] != 'grid') { - $caseVariable[$field['name']] = $appData[$field['name']]; - - if (isset($appData[$field['name'] . '_label'])) { - $caseVariable[$field['name'] . '_label'] = $appData[$field['name'] . '_label']; - } else { - $caseVariable[$field['name'] . '_label'] = ''; - } - } else { - $caseVariable[$field['name']] = $appData[$field['name']]; + foreach ($field as &$val) { + if (is_string($val) && in_array(substr($val, 0, 2), \pmDynaform::$prefixs)) { + $val = substr($val, 2); } } + foreach ($appData as $key => $valueKey) { + if (in_array($key, $field, true) != false) { + $keyname = array_search($key, $field); + if (isset($field['dataType']) && $field['dataType'] != 'grid') { + $caseVariable[$field[$keyname]] = $appData[$field[$keyname]]; + + if (isset($appData[$field[$keyname] . '_label'])) { + $caseVariable[$field[$keyname] . '_label'] = $appData[$field[$keyname] . '_label']; + } else { + $caseVariable[$field[$keyname] . '_label'] = ''; + } + } else { + $caseVariable[$field[$keyname]] = $appData[$field[$keyname]]; + } + break; + } + } + } else { $caseVariableAux = $this->__getFieldsAndValuesByDynaFormAndAppData($field, $appData, $caseVariable); $caseVariable = array_merge($caseVariable, $caseVariableAux);