function create($aData) { if (!isset($aData['EVN_UID']) || $aData['EVN_UID'] == '') { $aData['EVN_UID'] = G::generateUniqueID(); } $oConnection = Propel::getConnection(EventPeer::DATABASE_NAME); try { $oEvent = new Event(); $oEvent->setEvnUid($aData['EVN_UID']); $oEvent->setProUid($aData['PRO_UID']); if (isset($aData['EVN_RELATED_TO'])) { $oEvent->setEvnRelatedTo($aData['EVN_RELATED_TO']); if ($aData['EVN_RELATED_TO'] == 'SINGLE') { if (isset($aData['TAS_UID'])) { $oEvent->setTasUid($aData['TAS_UID']); } $oEvent->setEvnTasUidTo(''); $oEvent->setEvnTasUidFrom(''); } else { $oEvent->setTasUid(''); if (isset($aData['EVN_TAS_UID_TO'])) { $oEvent->setEvnTasUidTo($aData['EVN_TAS_UID_TO']); } if (isset($aData['EVN_TAS_UID_FROM'])) { $oEvent->setEvnTasUidFrom($aData['EVN_TAS_UID_FROM']); } } } if (isset($aData['EVN_POSX'])) { $oEvent->setEvnPosx($aData['EVN_POSX']); } if (isset($aData['EVN_POSY'])) { $oEvent->setEvnPosy($aData['EVN_POSY']); } if (isset($aData['EVN_TYPE'])) { $oEvent->setEvnType($aData['EVN_TYPE']); } if (isset($aData['EVN_TAS_ESTIMATED_DURATION'])) { $oEvent->setEvnTasEstimatedDuration($aData['EVN_TAS_ESTIMATED_DURATION']); } if (isset($aData['EVN_WHEN_OCCURS'])) { $oEvent->setEvnWhenOccurs($aData['EVN_WHEN_OCCURS']); } if (isset($aData['EVN_ACTION'])) { $oEvent->setEvnAction($aData['EVN_ACTION']); } if (isset($aData['EVN_CONDITIONS'])) { $oEvent->setEvnConditions($aData['EVN_CONDITIONS']); } if (isset($aData['EVN_STATUS'])) { $oEvent->setEvnStatus($aData['EVN_STATUS']); } if (isset($aData['EVN_WHEN'])) { $oEvent->setEvnWhen($aData['EVN_WHEN']); } $oEvent->setEvnMaxAttempts(3); //start the transaction $oConnection->begin(); if (isset($aData['EVN_TYPE'])) { if ($aData['EVN_TYPE'] === 'bpmnEventEmptyEnd') { unset($aData['TRI_UID']); } } if (isset($aData['TRI_UID'])) { $oTrigger = new Triggers(); if (trim($aData['TRI_UID']) === "" || !$oTrigger->TriggerExists($aData['TRI_UID'])) { //create an empty trigger $aTrigger = array(); $aTrigger['PRO_UID'] = $aData['PRO_UID']; $aTrigger['TRI_TITLE'] = 'For event: ' . $aData['EVN_DESCRIPTION']; $aTrigger['TRI_DESCRIPTION'] = 'Autogenerated ' . $aTrigger['TRI_TITLE']; $aTrigger['TRI_WEBBOT'] = '// ' . $aTrigger['TRI_DESCRIPTION']; $oTrigger->create($aTrigger); } else { $oTrigger = TriggersPeer::retrieveByPk($aData['TRI_UID']); } $oEvent->setTriUid($oTrigger->getTriUid()); $parameters = new StdClass(); $parameters->hash = md5($oTrigger->getTriWebbot()); if (isset($aData['EVN_ACTION_PARAMETERS']->SUBJECT)) { $parameters->SUBJECT = $aData['EVN_ACTION_PARAMETERS']->SUBJECT; $parameters->TO = $aData['EVN_ACTION_PARAMETERS']->TO; $parameters->CC = $aData['EVN_ACTION_PARAMETERS']->CC; $parameters->BCC = $aData['EVN_ACTION_PARAMETERS']->BCC; $parameters->TEMPLATE = $aData['EVN_ACTION_PARAMETERS']->TEMPLATE; } $oEvent->setEvnActionParameters(serialize($parameters)); } if ($oEvent->validate()) { $iResult = $oEvent->save(); if (isset($aData['EVN_DESCRIPTION'])) { $oEvent->setEvnDescription($aData['EVN_DESCRIPTION']); } $oConnection->commit(); return $aData['EVN_UID']; } else { $sMessage = ''; $aValidationFailures = $oEvent->getValidationFailures(); foreach ($aValidationFailures as $oValidationFailure) { $sMessage .= $oValidationFailure->getMessage() . '<br />'; } throw new Exception('The row Event cannot be created!<br />' . $sMessage); } } catch (Exception $oError) { $oConnection->rollback(); throw $oError; } }