diff --git a/workflow/engine/classes/model/DashletInstance.php b/workflow/engine/classes/model/DashletInstance.php index bc3f4f4b5..0244c966a 100644 --- a/workflow/engine/classes/model/DashletInstance.php +++ b/workflow/engine/classes/model/DashletInstance.php @@ -43,23 +43,37 @@ class DashletInstance extends BaseDashletInstance unset($data[$field]); } } - if (!empty($additionalFields)) { - $data['DAS_INS_ADDITIONAL_PROPERTIES'] = serialize($additionalFields); - } else { - $data['DAS_INS_ADDITIONAL_PROPERTIES'] = ''; - } + $connection = Propel::getConnection(DashletInstancePeer::DATABASE_NAME); + try { if (!isset($data['DAS_INS_UID'])) { $data['DAS_INS_UID'] = ''; } if ($data['DAS_INS_UID'] == '') { - $data['DAS_INS_UID'] = G::generateUniqueID(); - $data['DAS_INS_CREATE_DATE'] = date('Y-m-d H:i:s'); $dashletInstance = new DashletInstance(); + + $data['DAS_INS_UID'] = G::generateUniqueID(); + $data['DAS_INS_ADDITIONAL_PROPERTIES'] = (!empty($additionalFields))? serialize($additionalFields) : ''; + $data['DAS_INS_CREATE_DATE'] = date('Y-m-d H:i:s'); + $msg = 'CreateDashletInstance'; } else { $dashletInstance = DashletInstancePeer::retrieveByPK($data['DAS_INS_UID']); + + if (!empty($additionalFields)) { + $arrayAdditionalProperties = []; + + if ($dashletInstance->getDasInsAdditionalProperties() != '') { + $arrayAux = unserialize($dashletInstance->getDasInsAdditionalProperties()); + $arrayAdditionalProperties = (is_array($arrayAux))? $arrayAux : $arrayAdditionalProperties; + } + + $additionalFields = array_merge($arrayAdditionalProperties, $additionalFields); + + $data['DAS_INS_ADDITIONAL_PROPERTIES'] = serialize($additionalFields); + } + $msg = 'UpdateDashletInstance'; } $data['DAS_INS_UPDATE_DATE'] = date('Y-m-d H:i:s');