/** * Update Message-Type * * @param string $messageTypeUid Unique id of Message-Type * @param array $arrayData Data * * return array Return data of the Message-Type updated */ public function update($messageTypeUid, $arrayData) { try { //Verify data $process = new \ProcessMaker\BusinessModel\Process(); $validator = new \ProcessMaker\BusinessModel\Validator(); $validator->throwExceptionIfDataIsNotArray($arrayData, "\$arrayData"); $validator->throwExceptionIfDataIsEmpty($arrayData, "\$arrayData"); //Set data $arrayData = array_change_key_case($arrayData, CASE_UPPER); $arrayDataBackup = $arrayData; unset($arrayData["MSGT_UID"]); unset($arrayData["PRJ_UID"]); if (isset($arrayData["MSGT_VARIABLES"]) && is_array($arrayData["MSGT_VARIABLES"])) { foreach ($arrayData["MSGT_VARIABLES"] as $key => $value) { $arrayData["MSGT_VARIABLES"][$key] = array_change_key_case($value, CASE_UPPER); } } //Set variables $arrayMessageTypeData = $this->getMessageType($messageTypeUid, true); //Verify data $this->throwExceptionIfNotExistsMessageType($messageTypeUid, $this->arrayFieldNameForException["messageTypeUid"]); $this->throwExceptionIfDataIsInvalid($messageTypeUid, $arrayMessageTypeData["PRJ_UID"], $arrayData); //Update $cnn = \Propel::getConnection("workflow"); try { $messageType = \MessageTypePeer::retrieveByPK($messageTypeUid); $messageType->fromArray($arrayData, \BasePeer::TYPE_FIELDNAME); if ($messageType->validate()) { $cnn->begin(); $result = $messageType->save(); $cnn->commit(); //----- ***** $variable = new \ProcessMaker\BusinessModel\MessageType\Variable(); $variable->setFormatFieldNameInUppercase($this->formatFieldNameInUppercase); $criteria = new \Criteria("workflow"); $criteria->add(\MessageTypeVariablePeer::MSGT_UID, $messageTypeUid, \Criteria::EQUAL); \MessageTypeVariablePeer::doDelete($criteria); if (isset($arrayData["MSGT_VARIABLES"]) && count($arrayData["MSGT_VARIABLES"]) > 0) { $variable = new \ProcessMaker\BusinessModel\MessageType\Variable(); $variable->setFormatFieldNameInUppercase($this->formatFieldNameInUppercase); foreach ($arrayData["MSGT_VARIABLES"] as $key => $value) { $arrayVariable = $value; $arrayResult = $variable->create($messageTypeUid, $arrayVariable); } } //----- ***** //Return $arrayData = $arrayDataBackup; if (!$this->formatFieldNameInUppercase) { $arrayData = array_change_key_case($arrayData, CASE_LOWER); } return $arrayData; } else { $msg = ""; foreach ($messageType->getValidationFailures() as $validationFailure) { $msg = $msg . ($msg != "" ? "\n" : "") . $validationFailure->getMessage(); } throw new \Exception(\G::LoadTranslation("ID_REGISTRY_CANNOT_BE_UPDATED") . ($msg != "" ? "\n" . $msg : "")); } } catch (\Exception $e) { $cnn->rollback(); throw $e; } } catch (\Exception $e) { throw $e; } }