function CreateTrigger($data, $fields)
 {
     try {
         $Trigger = new Triggers();
         $result = $Trigger->create($fields);
         $this->domain->addDomainValue('CREATED', $Trigger->getTriUid());
         return $result;
     } catch (Exception $e) {
         return array('Exception!! ' => $e->getMessage());
     }
 }
Beispiel #2
0
    /**

     * Create Step Trigger Rows for a Process form an array

     *

     * @param array $aTrigger

     * @return void

     */

    public function createTriggerRows ($aTrigger)

    {

        foreach ($aTrigger as $key => $row) {

            $oTrigger = new Triggers();

            //unset ($row['TAS_UID']);

            if ($oTrigger->TriggerExists( $row['TRI_UID'] )) {

                $oTrigger->remove( $row['TRI_UID'] );

            }

            $res = $oTrigger->create( $row );

        }

        return;

    }
Beispiel #3
0
 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;
     }
 }
 G::LoadClass("processMap");
 $response = array();
 try {
     $oTrigger = new Triggers();
     $oProcessMap = new processMap(new DBConnection());
     if (isset($_POST['form'])) {
         $value = $_POST['form'];
     } else {
         $value = $_POST;
     }
     /*----------------------------------********---------------------------------*/
     $swCreate = true;
     if ($value['TRI_UID'] != '') {
         $oTrigger->load($value['TRI_UID']);
     } else {
         $oTrigger->create($value);
         $value['TRI_UID'] = $oTrigger->getTriUid();
         $swCreate = false;
     }
     $oTrigger->update($value);
     if ($swCreate) {
         //Add Audit Log
         $fields = $oTrigger->load($value['TRI_UID']);
         $description = "Trigger Name: " . $fields['TRI_TITLE'] . ", Trigger Uid: " . $value['TRI_UID'];
         if (isset($fields['TRI_DESCRIPTION'])) {
             $description .= ", Description: " . $fields['TRI_DESCRIPTION'];
         }
         if (isset($value["TRI_WEBBOT"])) {
             $description .= ", [EDIT CODE]";
         }
         G::auditLog("UpdateTrigger", $description);
Beispiel #5
0
 * ProcessMaker Open Source Edition
 * Copyright (C) 2004 - 2008 Colosa Inc.23
 *
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU Affero General Public License as
 * published by the Free Software Foundation, either version 3 of the
 * License, or (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
 * GNU Affero General Public License for more details.
 *
 * You should have received a copy of the GNU Affero General Public License
 * along with this program. If not, see <http://www.gnu.org/licenses/>.
 *
 * For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
 * Coral Gables, FL, 33134, USA, or email info@colosa.com.
 */
if (($RBAC_Response = $RBAC->userCanAccess("PM_FACTORY")) != 1) {
    return $RBAC_Response;
}
require_once 'classes/model/Triggers.php';
$oTrigger = new Triggers();
if ($_POST['form']['TRI_UID'] != '') {
    $oTrigger->load($_POST['form']['TRI_UID']);
} else {
    $oTrigger->create($_POST['form']);
    $_POST['form']['TRI_UID'] = $oTrigger->getTriUid();
}
$oTrigger->update($_POST['form']);
Beispiel #6
0
 /**
  * Save Data for Trigger
  * @var string $sProcessUID. Uid for Process
  * @var string $dataTrigger. Data for Trigger
  * @var string $create. Create o Update Trigger
  * @var string $sTriggerUid. Uid for Trigger
  *
  * @author Brayan Pereyra (Cochalo) <*****@*****.**>
  * @copyright Colosa - Bolivia
  *
  * @return array
  */
 public function saveTrigger($sProcessUID = '', $dataTrigger = array(), $create = false, $sTriggerUid = '')
 {
     if ($sProcessUID == '' || count($dataTrigger) == 0) {
         return false;
     }
     $dataTrigger = array_change_key_case($dataTrigger, CASE_UPPER);
     if ($create && isset($dataTrigger['TRI_UID'])) {
         unset($dataTrigger['TRI_UID']);
     }
     $dataTrigger = (array) $dataTrigger;
     $dataTrigger['TRI_TYPE'] = 'SCRIPT';
     if (isset($dataTrigger['TRI_TITLE'])) {
         if (!$this->verifyNameTrigger($sProcessUID, $dataTrigger['TRI_TITLE'], $sTriggerUid)) {
             throw new \Exception(\G::LoadTranslation("ID_CANT_SAVE_TRIGGER"));
         }
     }
     /*----------------------------------********---------------------------------*/
     $dataTrigger['PRO_UID'] = $sProcessUID;
     $oTrigger = new \Triggers();
     if ($create) {
         $oTrigger->create($dataTrigger);
         $dataTrigger['TRI_UID'] = $oTrigger->getTriUid();
     }
     $oTrigger->update($dataTrigger);
     if ($create) {
         $dataResp = $oTrigger->load($dataTrigger['TRI_UID']);
         $dataResp = array_change_key_case($dataResp, CASE_LOWER);
         if (isset($dataResp['pro_uid'])) {
             unset($dataResp['pro_uid']);
         }
         return $dataResp;
     }
     return array();
 }
            $aOptionParameters = explode("=", $sOptionTrigger);
            $sOptionTrigger = trim($aOptionParameters[0]);
        }
        if ($aDataTriggers[$sOptionTrigger] != '') {
            if (strstr($aDataTriggers[$sOptionTrigger], "@@")) {
                $option = trim($aDataTriggers[$sOptionTrigger]);
            } else {
                $aDataTriggers[$sOptionTrigger] = strstr($aDataTriggers[$sOptionTrigger], 'array') ? str_replace("'", '"', $aDataTriggers[$sOptionTrigger]) : str_replace("'", "\\'", $aDataTriggers[$sOptionTrigger]);
                $option = is_numeric($aDataTriggers[$sOptionTrigger]) ? trim($aDataTriggers[$sOptionTrigger]) : strstr($aDataTriggers[$sOptionTrigger], "array") ? trim($aDataTriggers[$sOptionTrigger]) : "'" . trim($aDataTriggers[$sOptionTrigger]) . "'";
            }
        } else {
            $option = "''";
        }
        $methodParamsFinal[] = $option;
    }
}
//G::pr($methodParamsFinal);die;
$sPMfunction .= isset($aDataTriggers['TRI_ANSWER']) && $aDataTriggers['TRI_ANSWER'] != '' ? $aDataTriggers['TRI_ANSWER'] . " = " : "";
$sPMfunction .= $aDataTriggers['PMFUNTION_NAME'] . " (" . implode(",", $methodParamsFinal) . ");";
//Create Trigger
$aDataTriggers['TRI_WEBBOT'] = $sPMfunction;
$aDataTriggersParams = array();
$aDataTriggersParams['hash'] = md5($sPMfunction);
$aDataTriggersParams['params'] = $aDataTriggers;
$aDataTriggers['TRI_PARAM'] = serialize($aDataTriggersParams);
$oTrigger->create($aDataTriggers);
//Update Info
$aDataTriggers['TRI_UID'] = $oTrigger->getTriUid();
$oTrigger->update($aDataTriggers);
//Update Trigger Array
$oProcessMap->triggersList($aDataTriggers['PRO_UID']);
 /**
  * Create Trigger for a Process
  *
  * @param string $libraryName Library name
  * @param string $methodName  Method name
  * @param string $processUid  Unique id of Process
  * @param array  $arrayData   Data
  *
  * return array Return data of the new Trigger created
  */
 public function create($libraryName, $methodName, $processUid, $arrayData)
 {
     try {
         $arrayData = array_change_key_case($arrayData, CASE_UPPER);
         //Verify data
         $process = new \ProcessMaker\BusinessModel\Process();
         $trigger = new \ProcessMaker\BusinessModel\Trigger();
         $this->throwExceptionIfNotExistsMethodInLibrary($libraryName, $methodName, $this->arrayFieldNameForException["libraryName"], $this->arrayFieldNameForException["methodName"]);
         $process->throwExceptionIfNotExistsProcess($processUid, $this->arrayFieldNameForException["processUid"]);
         $process->throwExceptionIfDataNotMetFieldDefinition($arrayData, $this->arrayFieldDefinition, $this->arrayFieldNameForException, true);
         $arrayParamData = $this->throwExceptionIfDataNotMetTriggerParamsDefinition($libraryName, $methodName, $arrayData, $this->arrayFieldNameForException["libraryName"], $this->arrayFieldNameForException["methodName"], $this->arrayFieldNameForException["triggerParams"]);
         $trigger->throwExceptionIfExistsTitle($processUid, $arrayData["TRI_TITLE"], $this->arrayFieldNameForException["triggerTitle"]);
         //TRI_PARAMS
         if (isset($arrayData["TRI_PARAMS"])) {
             $arrayData["TRI_PARAMS"] = array_change_key_case($arrayData["TRI_PARAMS"], CASE_UPPER);
         }
         //Create
         $trigger = new \Triggers();
         $arrayData["PRO_UID"] = $processUid;
         $result = $trigger->create($arrayData);
         $triggerUid = $trigger->getTriUid();
         $this->setData($libraryName, $methodName, $triggerUid, $arrayParamData);
         //Return
         unset($arrayData["PRO_UID"]);
         $arrayData = array_merge(array("TRI_UID" => $triggerUid), $arrayData);
         if (!$this->formatFieldNameInUppercase) {
             if (isset($arrayData["TRI_PARAMS"])) {
                 $arrayData["TRI_PARAMS"] = array_change_key_case($arrayData["TRI_PARAMS"], CASE_LOWER);
             }
             $arrayData = array_change_key_case($arrayData, CASE_LOWER);
         }
         return $arrayData;
     } catch (\Exception $e) {
         throw $e;
     }
 }