case 'saveTriggerCondition': $oStepTrigger = new StepTrigger(); $oStepTrigger->update(array('STEP_UID' => $aData['STEP_UID'], 'TAS_UID' => $_SESSION['TASK'], 'TRI_UID' => $aData['TRI_UID'], 'ST_TYPE' => $aData['ST_TYPE'], 'ST_CONDITION' => $aData['ST_CONDITION'])); break; case 'upTrigger': $aData['iPosition'] = (int) $aData['iPosition']; $oStepTrigger = new StepTrigger(); $oStepTrigger->up($aData['sStep'], $_SESSION['TASK'], $aData['sTrigger'], $aData['sType'], $aData['iPosition']); break; case 'downTrigger': $aData['iPosition'] = (int) $aData['iPosition']; $oStepTrigger = new StepTrigger(); $oStepTrigger->down($aData['sStep'], $_SESSION['TASK'], $aData['sTrigger'], $aData['sType'], $aData['iPosition']); break; case 'ofToAssignTrigger': $oStepTrigger = new StepTrigger(); $oStepTrigger->reOrder($aData['sStep'], $_SESSION['TASK'], $aData['sType'], $aData['iPosition']); $oStepTrigger->remove($aData['sStep'], $_SESSION['TASK'], $aData['sTrigger'], $aData['sType']); break; case 'counterTriggers': G::LoadClass('processMap'); $oProcessMap = new ProcessMap(); $oCriteria1 = $oProcessMap->getStepTriggersCriteria($aData['sStep'], $_SESSION['TASK'], $aData['sType']); if ($aData['sType'] == 'BEFORE') { $oCriteria2 = $oProcessMap->getStepTriggersCriteria($aData['sStep'], $_SESSION['TASK'], 'AFTER'); } else { $oCriteria2 = $oProcessMap->getStepTriggersCriteria($aData['sStep'], $_SESSION['TASK'], 'BEFORE'); } $iCantity = StepTriggerPeer::doCount($oCriteria1); $iTotal = $iCantity + StepTriggerPeer::doCount($oCriteria2); echo $iTotal . '|' . $iCantity;
/** * Create Step Trigger Rows for a Process form an array * * @param array $aStepTrigger * @return void */ public function createStepTriggerRows ($aStepTrigger) { foreach ($aStepTrigger as $key => $row) { $oStepTrigger = new StepTrigger(); //unset ($row['TAS_UID']); if ($oStepTrigger->stepTriggerExists( $row['STEP_UID'], $row['TAS_UID'], $row['TRI_UID'], $row['ST_TYPE'] )) { $oStepTrigger->remove( $row['STEP_UID'], $row['TAS_UID'], $row['TRI_UID'], $row['ST_TYPE'] ); } $res = $oStepTrigger->createRow( $row ); } return; }
/** * Get all Triggers of a Step * * @param string $stepUid Unique id of Step * @param string $taskUid Unique id of Task * * return array Return an array with all Triggers of a Step */ public function getTriggers($stepUid, $taskUid = "") { try { $arrayTrigger = array(); //Verify data if ($stepUid != "") { $this->throwExceptionIfNotExistsStep($stepUid); } if ($stepUid == "") { $this->throwExceptionIfNotExistsTask($taskUid); } //Get data $bmTrigger = new \ProcessMaker\BusinessModel\Trigger(); $bmStepTrigger = new \ProcessMaker\BusinessModel\Step\Trigger(); $stepTrigger = new \StepTrigger(); if ($stepUid != "") { //Load Step $step = new \Step(); $arrayStepData = $step->load($stepUid); $taskUid = $arrayStepData["TAS_UID"]; } $arrayTriggerType1 = array( "BEFORE" => "BEFORE", "AFTER" => "AFTER" ); $arrayTriggerType2 = array( "BEFORE_ASSIGNMENT" => "BEFORE", "BEFORE_ROUTING" => "BEFORE", "AFTER_ROUTING" => "AFTER" ); $arrayTriggerType = ($stepUid != "")? $arrayTriggerType1 : $arrayTriggerType2; foreach ($arrayTriggerType as $index => $value) { $triggerType = $index; $type = $value; $flagStepAssignTask = 0; switch ($triggerType) { case "BEFORE_ASSIGNMENT": $stepUid = "-1"; $flagStepAssignTask = 1; break; case "BEFORE_ROUTING": $stepUid = "-2"; $flagStepAssignTask = 1; break; case "AFTER_ROUTING": $stepUid = "-2"; $flagStepAssignTask = 1; break; } $stepTrigger->orderPosition($stepUid, $taskUid, $type); //Criteria $criteria = $bmTrigger->getTriggerCriteria(); $criteria->addSelectColumn(\StepTriggerPeer::ST_TYPE); $criteria->addSelectColumn(\StepTriggerPeer::ST_CONDITION); $criteria->addSelectColumn(\StepTriggerPeer::ST_POSITION); $criteria->addJoin(\StepTriggerPeer::TRI_UID, \TriggersPeer::TRI_UID, \Criteria::LEFT_JOIN); $criteria->add(\StepTriggerPeer::STEP_UID, $stepUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::TAS_UID, $taskUid, \Criteria::EQUAL); $criteria->add(\StepTriggerPeer::ST_TYPE, $type, \Criteria::EQUAL); $criteria->addAscendingOrderByColumn(\StepTriggerPeer::ST_POSITION); $rsCriteria = \StepTriggerPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); if ($flagStepAssignTask == 1) { $row["ST_TYPE"] = $triggerType; } $arrayTrigger[] = $bmStepTrigger->getTriggerDataFromRecord($row); } } return $arrayTrigger; } catch (\Exception $e) { throw $e; } }
/** * Validates all modified columns of given StepTrigger object. * If parameter $columns is either a single column name or an array of column names * than only those columns are validated. * * NOTICE: This does not apply to primary or foreign keys for now. * * @param StepTrigger $obj The object to validate. * @param mixed $cols Column name or array of column names. * * @return mixed TRUE if all columns are valid or the error message of the first invalid column. */ public static function doValidate(StepTrigger $obj, $cols = null) { $columns = array(); if ($cols) { $dbMap = Propel::getDatabaseMap(StepTriggerPeer::DATABASE_NAME); $tableMap = $dbMap->getTable(StepTriggerPeer::TABLE_NAME); if (!is_array($cols)) { $cols = array($cols); } foreach ($cols as $colName) { if ($tableMap->containsColumn($colName)) { $get = 'get' . $tableMap->getColumn($colName)->getPhpName(); $columns[$colName] = $obj->{$get}(); } } } else { if ($obj->isNew() || $obj->isColumnModified(StepTriggerPeer::ST_TYPE)) { $columns[StepTriggerPeer::ST_TYPE] = $obj->getStType(); } } return BasePeer::doValidate(StepTriggerPeer::DATABASE_NAME, StepTriggerPeer::TABLE_NAME, $columns); }
/** * Delete Trigger * @var string $sTriggerUID. Uid for Trigger * * @author Brayan Pereyra (Cochalo) <*****@*****.**> * @copyright Colosa - Bolivia * * @return void */ public function deleteTrigger($sTriggerUID = '') { $oTrigger = new \Triggers(); $oTrigger->load($sTriggerUID); $res = $oTrigger->verifyDependecies($sTriggerUID); $messageEnd = ''; if ($res->code != 0) { foreach ($res->dependencies as $Object => $aDeps) { $nDeps = count($aDeps); $message = str_replace('{N}', $nDeps, \G::LoadTranslation('ID_TRIGGERS_VALIDATION_ERR2')); $message = str_replace('{Object}', $Object, $message); $messageEnd .= $message . "\n"; foreach ($aDeps as $dep) { if (substr($Object, -1) == 's') { $Object = substr($Object, 0, strlen($Object) - 1); } $message = str_replace('{Object}', $Object, \G::LoadTranslation('ID_TRIGGERS_VALIDATION_ERR3')); $message = str_replace('{Description}', '"' . $dep['DESCRIPTION'] . '"', $message); $messageEnd .= $message . "\n"; } $messageEnd .= "\n"; } throw new \Exception($messageEnd); } $oTrigger->remove($sTriggerUID); $oStepTrigger = new \StepTrigger(); $oStepTrigger->removeTrigger($sTriggerUID); }
function remove($sStepUID) { require_once 'classes/model/StepTrigger.php'; $oStepTriggers = new StepTrigger(); $oCriteria = new Criteria('workflow'); $oCriteria->add(StepTriggerPeer::STEP_UID, $sStepUID); $oDataset = StepTriggerPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); while ($oDataset->next()) { $aRow = $oDataset->getRow(); $oStepTriggers->remove($aRow['STEP_UID'], $aRow['TAS_UID'], $aRow['TRI_UID'], $aRow['ST_TYPE']); } /*$con = Propel::getConnection(StepPeer::DATABASE_NAME); try { $con->begin(); //$this->fromArray($fields,BasePeer::TYPE_FIELDNAME); $this->setStepUid($sStepUID); $result=$this->delete(); $con->commit(); return $result; } catch(Exception $e) { $con->rollback(); throw($e); }*/ $oConnection = Propel::getConnection(StepPeer::DATABASE_NAME); try { $oStep = StepPeer::retrieveByPK($sStepUID); if (!is_null($oStep)) { $oConnection->begin(); $iResult = $oStep->delete(); $oConnection->commit(); return $iResult; } else { throw new Exception('This row doesn\'t exist!'); } } catch (Exception $oError) { $oConnection->rollback(); throw $oError; } }
/** * Update Trigger of a Step * * @param string $stepUid Unique id of Step * @param string $type Type (BEFORE, AFTER, BEFORE_ASSIGNMENT, BEFORE_ROUTING, AFTER_ROUTING) * @param string $taskUid Unique id of Task * @param string $triggerUid Unique id of Trigger * @param array $arrayData Data * * return array Data updated of the Trigger assigned to a Step */ public function updateAll($stepUid, $type, $taskUid, $triggerUid, $arrayData) { try { $flagStepAssignTask = 0; if ($stepUid == "" || $stepUid == "-1" || $stepUid == "-2") { $flagStepAssignTask = 1; switch ($type) { case "BEFORE_ASSIGNMENT": $stepUid = "-1"; $type = "BEFORE"; break; case "BEFORE_ROUTING": $stepUid = "-2"; $type = "BEFORE"; break; case "AFTER_ROUTING": $stepUid = "-2"; $type = "AFTER"; break; } } //Verify data if ($flagStepAssignTask == 0) { $step = new \Step(); if (!$step->StepExists($stepUid)) { throw new \Exception(\G::LoadTranslation("ID_STEP_DOES_NOT_EXIST", array("step_uid", $stepUid))); } } $trigger = new \Triggers(); if (!$trigger->TriggerExists($triggerUid)) { throw new \Exception(\G::LoadTranslation("ID_TRIGGER_DOES_NOT_EXIST", array("tri_uid", $triggerUid))); } //Update $stepTrigger = new \StepTrigger(); $arrayUpdateData = array(); $arrayUpdateData["STEP_UID"] = $stepUid; $arrayUpdateData["TAS_UID"] = $taskUid; $arrayUpdateData["TRI_UID"] = $triggerUid; $arrayUpdateData["ST_TYPE"] = $type; if (isset($arrayData["st_condition"])) { $arrayUpdateData["ST_CONDITION"] = $arrayData["st_condition"]; } $stepTrigger->update($arrayUpdateData); return array_change_key_case($arrayUpdateData, CASE_LOWER); } catch (\Exception $e) { throw $e; } }
* 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; } try { require_once 'classes/model/Triggers.php'; $oTrigger = new Triggers(); $triggerObj = $oTrigger->load($_POST['TRI_UID']); $oTrigger->remove($_POST['TRI_UID']); require_once 'classes/model/StepTrigger.php'; $oStepTrigger = new StepTrigger(); $oStepTrigger->removeTrigger($_POST['TRI_UID']); $result->success = true; $result->msg = G::LoadTranslation('ID_TRIGGERS_REMOVED'); } catch (Exception $e) { $result->success = false; $result->msg = $e->getMessage(); } print G::json_encode($result);
case 'subprocessProperties': require_once 'classes/model/Content.php'; $lang = defined('SYS_LANG') ? SYS_LANG : 'en'; //$cont = Content::addContent( 'SP_TITLE', '', $_POST['form']['SP_UID'], $lang, $_POST['form']['SPROCESS_NAME'] ); $cont = Content::addContent('TAS_TITLE', '', $_POST['TAS_PARENT'], $lang, $_POST['SPROCESS_NAME']); break; case 'deleteTriggers': try { require_once 'classes/model/Triggers.php'; require_once 'classes/model/StepTrigger.php'; $TRI_UIDS = explode(',', $_POST['TRI_UID']); foreach ($TRI_UIDS as $i => $TRI_UID) { $oTrigger = new Triggers(); $triggerObj = $oTrigger->load($TRI_UID); $oTrigger->remove($TRI_UID); $oStepTrigger = new StepTrigger(); $oStepTrigger->removeTrigger($TRI_UID); } $result->success = true; $result->message = G::LoadTranslation('ID_TRIGGERS_REMOVED'); } catch (Exception $e) { $result->success = false; $result->message = $e->getMessage(); } print G::json_encode($result); break; case 'getOutputDocsTemplates': require_once 'classes/model/OutputDocument.php'; $ooutputDocument = new OutputDocument(); if (isset($_GET['OUT_DOC_UID'])) { $rows = $ooutputDocument->load($_GET['OUT_DOC_UID']);