示例#1
0
     global $G_PUBLISH;
     $G_PUBLISH = new Publisher();
     if ($aData['sType'] == 'BEFORE') {
         $G_PUBLISH->AddContent('propeltable', 'paged-table', 'steps/triggersBefore_List', $oProcessMap->getStepTriggersCriteria($aData['sStep'], $_SESSION['TASK'], $aData['sType']), array('STEP' => $aData['sStep']));
     } else {
         $G_PUBLISH->AddContent('propeltable', 'paged-table', 'steps/triggersAfter_List', $oProcessMap->getStepTriggersCriteria($aData['sStep'], $_SESSION['TASK'], $aData['sType']), array('STEP' => $aData['sStep']));
     }
     G::RenderPage('publish-twocolumns', 'raw');
     break;
 case 'availableTriggers':
     $oCriteria = new Criteria('workflow');
     $oCriteria->addSelectColumn('TRI_UID');
     $oCriteria->add(StepTriggerPeer::TAS_UID, $_SESSION['TASK']);
     $oCriteria->add(StepTriggerPeer::STEP_UID, $aData['sStep']);
     $oCriteria->add(StepTriggerPeer::ST_TYPE, $aData['sType']);
     $oDataset = StepTriggerPeer::doSelectRS($oCriteria);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $oDataset->next();
     $sUIDs = "'0'";
     $aUIDs = array();
     while ($aRow = $oDataset->getRow()) {
         $sUIDs .= ",'" . $aRow['TRI_UID'] . "'";
         $aUIDs[] = $aRow['TRI_UID'];
         $oDataset->next();
     }
     $oCriteria = new Criteria('workflow');
     $oCriteria->addSelectColumn('COUNT(TRI_UID) AS CANTITY');
     $oCriteria->add(TriggersPeer::TRI_UID, $aUIDs, Criteria::NOT_IN);
     $oCriteria->add(TriggersPeer::PRO_UID, $aData['sProcess']);
     $oDataset = TriggersPeer::doSelectRS($oCriteria);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
示例#2
0
    /**

     * Get Step Trigger Rows for a Process form an array

     *

     * @param array $aTask

     * @return array $aStepTrigger

     */

    public function getStepTriggerRows ($aTask)

    {

        try {

            $aInTasks = array ();

            foreach ($aTask as $key => $val) {

                $aInTasks[] = $val['TAS_UID'];

            }



            $aTrigger = array ();

            $oCriteria = new Criteria( 'workflow' );

            $oCriteria->add( StepTriggerPeer::TAS_UID, $aInTasks, Criteria::IN );

            $oDataset = StepTriggerPeer::doSelectRS( $oCriteria );

            $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC );

            $oDataset->next();

            $aStepTrigger = array ();

            while ($aRow = $oDataset->getRow()) {

                $aStepTrigger[] = $aRow;

                $oDataset->next();

            }

            return $aStepTrigger;

        } catch (Exception $oError) {

            throw ($oError);

        }

    }
 /**
  * Method to do selects.
  *
  * @param      Criteria $criteria The Criteria object used to build the SELECT statement.
  * @param      Connection $con
  * @return     array Array of selected Objects
  * @throws     PropelException Any exceptions caught during processing will be
  *       rethrown wrapped into a PropelException.
  */
 public static function doSelect(Criteria $criteria, $con = null)
 {
     return StepTriggerPeer::populateObjects(StepTriggerPeer::doSelectRS($criteria, $con));
 }
 public function getExtAvailableStepTriggersCriteria($sProcessUID = '', $sStepUID = '', $sTaskUID = '', $sType = '')
 {
     try {
         $_SESSION['TASK'] = $sTaskUID;
         $oCriteria = new Criteria('workflow');
         $oCriteria->addSelectColumn('TRI_UID');
         $oCriteria->add(StepTriggerPeer::TAS_UID, $sTaskUID);
         $oCriteria->add(StepTriggerPeer::STEP_UID, $sStepUID);
         $oCriteria->add(StepTriggerPeer::ST_TYPE, $sType);
         $oDataset = StepTriggerPeer::doSelectRS($oCriteria);
         $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $oDataset->next();
         $sUIDs = "'0'";
         $aUIDs = array();
         while ($aRow = $oDataset->getRow()) {
             $sUIDs .= ",'" . $aRow['TRI_UID'] . "'";
             $aUIDs[] = $aRow['TRI_UID'];
             $oDataset->next();
         }
         $sDelimiter = DBAdapter::getStringDelimiter();
         $oCriteria = new Criteria('workflow');
         //$oCriteria->addSelectColumn ( ContentPeer::CON_ID );
         $oCriteria->addSelectColumn('TRI_UID');
         $oCriteria->addSelectColumn('C.CON_VALUE');
         $oCriteria->addAsColumn('TRI_TITLE', 'C.CON_VALUE');
         $oCriteria->addAlias('C', 'CONTENT');
         $aConditions = array();
         $aConditions[] = array('TRI_UID', 'C.CON_ID');
         $aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'TRI_TITLE' . $sDelimiter);
         $aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter);
         $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
         $oCriteria->add(TriggersPeer::TRI_UID, $aUIDs, Criteria::NOT_IN);
         $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID);
         $oDataset = TriggersPeer::doSelectRS($oCriteria);
         $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $oDataset->next();
         while ($aRow = $oDataset->getRow()) {
             $aBB[] = array('CON_VALUE' => $aRow['CON_VALUE'], 'STEP_UID' => $sStepUID, 'ST_TYPE' => $sType, 'TRI_UID' => $aRow['TRI_UID'], 'TRI_TITLE' => $aRow['TRI_TITLE']);
             $oDataset->next();
         }
         return $aBB;
     } catch (Exception $e) {
         throw $e;
     }
 }
示例#5
0
    /**
     * Delete Steps and triggers of a Task
     *
     * @param string $stepUid Unique id of Step
     * @param string $taskUid Unique id of Step
     *
     * return void
     */
    public function deleteAll($taskUid)
    {
        try {
            $step = new \Step();
            $stepTrigger = new \ProcessMaker\BusinessModel\Step\Trigger();

            $criteriaTrigger = new \Criteria("workflow");
            $criteriaTrigger->addSelectColumn(\StepTriggerPeer::STEP_UID);
            $criteriaTrigger->addSelectColumn(\StepTriggerPeer::ST_TYPE);
            $criteriaTrigger->addSelectColumn(\StepTriggerPeer::TRI_UID);
            $criteriaTrigger->add(\StepTriggerPeer::TAS_UID, $taskUid, \Criteria::EQUAL);
            $rsCriteriaTrigger = \StepTriggerPeer::doSelectRS($criteriaTrigger);
            $rsCriteriaTrigger->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
            $rsCriteriaTrigger->next();

            while ($aRowTrigger = $rsCriteriaTrigger->getRow()) {

                $stepTrigger->delete($aRowTrigger['STEP_UID'], $aRowTrigger['ST_TYPE'], $taskUid, $aRowTrigger['TRI_UID']);
                $rsCriteriaTrigger->next();
            }

            $criteria = new \Criteria("workflow");
            $criteria->addSelectColumn(\StepPeer::STEP_UID);
            $criteria->add(\StepPeer::TAS_UID, $taskUid, \Criteria::EQUAL);
            $rsCriteria = \StepPeer::doSelectRS($criteria);
            $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
            $rsCriteria->next();

            while ($aRow = $rsCriteria->getRow()) {
                $step->remove($aRow['STEP_UID']);
                $rsCriteria->next();
            }

        } catch (\Exception $e) {
            throw $e;
        }
    }
示例#6
0
 public function verifyDependecies($TRI_UID)
 {
     require_once "classes/model/Event.php";
     require_once "classes/model/StepTrigger.php";
     $oResult = new stdClass();
     $oResult->dependencies = array();
     $oCriteria = new Criteria();
     $oCriteria->addSelectColumn(EventPeer::EVN_UID);
     $oCriteria->addSelectColumn(EventPeer::TRI_UID);
     $oCriteria->add(EventPeer::EVN_ACTION, '', Criteria::NOT_EQUAL);
     $oCriteria->add(EventPeer::TRI_UID, $TRI_UID);
     $oDataset = EventPeer::doSelectRS($oCriteria);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $aRows = array();
     while ($oDataset->next()) {
         array_push($aRows, $oDataset->getRow());
     }
     $oResult->dependencies['Events'] = array();
     if (count($aRows) == 0) {
         $oResult->code = 0;
     } else {
         $oResult->code = 1;
         foreach ($aRows as $row) {
             $oTrigger = TriggersPeer::retrieveByPK($row['TRI_UID']);
             array_push($oResult->dependencies['Events'], array('UID' => $oTrigger->getTriUid(), 'DESCRIPTION' => $oTrigger->getTriTitle()));
         }
     }
     //for tasks dependencies
     $oCriteria = new Criteria();
     $oCriteria->addSelectColumn(StepTriggerPeer::TAS_UID);
     $oCriteria->addSelectColumn(StepTriggerPeer::TRI_UID);
     $oCriteria->add(StepTriggerPeer::TRI_UID, $TRI_UID);
     $oDataset = StepTriggerPeer::doSelectRS($oCriteria);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $aRows = array();
     while ($oDataset->next()) {
         array_push($aRows, $oDataset->getRow());
     }
     $oResult->dependencies['Tasks'] = array();
     if ($oResult->code == 0 && count($aRows) == 0) {
         $oResult->code = 0;
     } elseif (count($aRows) > 0) {
         $oResult->code = 1;
         foreach ($aRows as $row) {
             $oTask = TaskPeer::retrieveByPK($row['TAS_UID']);
             array_push($oResult->dependencies['Tasks'], array('UID' => $oTask->getTasUid(), 'DESCRIPTION' => $oTask->getTasTitle()));
         }
     }
     //Tasks, assignment rules dependencies
     $criteria = new Criteria();
     $criteria->addSelectColumn(TaskPeer::TAS_UID);
     $criteria->add(TaskPeer::TAS_SELFSERVICE_TIMEOUT, 1);
     $criteria->add(TaskPeer::TAS_SELFSERVICE_TRIGGER_UID, $TRI_UID);
     $rsCriteria = TaskPeer::doSelectRS($criteria);
     $rsCriteria->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $arrayRow = array();
     while ($rsCriteria->next()) {
         array_push($arrayRow, $rsCriteria->getRow());
     }
     $oResult->dependencies["Assignment rules"] = array();
     if ($oResult->code == 0 && count($arrayRow) == 0) {
         $oResult->code = 0;
     } else {
         if (count($arrayRow) > 0) {
             foreach ($arrayRow as $row) {
                 $task = TaskPeer::retrieveByPK($row["TAS_UID"]);
                 array_push($oResult->dependencies["Assignment rules"], array("UID" => $task->getTasUid(), "DESCRIPTION" => $task->getTasTitle()));
             }
             $oResult->code = 1;
         }
     }
     return $oResult;
 }
示例#7
0
 public function down($sStepUID = '', $sTaskUID = '', $sTriggerUID = '', $sType = '', $iPosition = 0)
 {
     try {
         $oCriteria = new Criteria('workflow');
         $oCriteria->addSelectColumn('COUNT(*) AS MAX_POSITION');
         $oCriteria->add(StepTriggerPeer::STEP_UID, $sStepUID);
         $oCriteria->add(StepTriggerPeer::TAS_UID, $sTaskUID);
         $oCriteria->add(StepTriggerPeer::ST_TYPE, $sType);
         $oDataset = StepTriggerPeer::doSelectRS($oCriteria);
         $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $oDataset->next();
         $aRow = $oDataset->getRow();
         if ($iPosition < (int) $aRow['MAX_POSITION']) {
             $oCriteria1 = new Criteria('workflow');
             $oCriteria1->add(StepTriggerPeer::ST_POSITION, $iPosition);
             $oCriteria2 = new Criteria('workflow');
             $oCriteria2->add(StepTriggerPeer::STEP_UID, $sStepUID);
             $oCriteria2->add(StepTriggerPeer::TAS_UID, $sTaskUID);
             $oCriteria2->add(StepTriggerPeer::ST_TYPE, $sType);
             $oCriteria2->add(StepTriggerPeer::ST_POSITION, $iPosition + 1);
             BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
             $oCriteria1 = new Criteria('workflow');
             $oCriteria1->add(StepTriggerPeer::ST_POSITION, $iPosition + 1);
             $oCriteria2 = new Criteria('workflow');
             $oCriteria2->add(StepTriggerPeer::STEP_UID, $sStepUID);
             $oCriteria2->add(StepTriggerPeer::TAS_UID, $sTaskUID);
             $oCriteria2->add(StepTriggerPeer::TRI_UID, $sTriggerUID);
             $oCriteria2->add(StepTriggerPeer::ST_TYPE, $sType);
             BasePeer::doUpdate($oCriteria2, $oCriteria1, Propel::getConnection('workflow'));
         }
     } catch (Exception $oException) {
         throw $oException;
     }
 }
示例#8
0
 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;
     }
 }
示例#9
0
 /**
  * Get data of a Trigger
  *
  * @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
  *
  * return array Return an array with data of a Trigger
  */
 public function getTrigger($stepUid, $type, $taskUid, $triggerUid)
 {
     try {
         $typeIni = $type;
         $flagStepAssignTask = 0;
         if ($stepUid == "") {
             $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 (!$this->existsRecord($stepUid, $type, $taskUid, $triggerUid)) {
             throw new \Exception(\G::LoadTranslation("ID_RECORD_DOES_NOT_EXIST_IN_TABLE", array($stepUid . ", " . $type . ", " . $taskUid . ", " . $triggerUid, "STEP_TRIGGER")));
         }
         //Get data
         $trigger = new \ProcessMaker\BusinessModel\Trigger();
         $criteria = $trigger->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(\TriggersPeer::TRI_UID, $triggerUid, \Criteria::EQUAL);
         $criteria->add(\StepTriggerPeer::STEP_UID, $stepUid, \Criteria::EQUAL);
         $criteria->add(\StepTriggerPeer::TAS_UID, $taskUid, \Criteria::EQUAL);
         $criteria->add(\StepTriggerPeer::ST_TYPE, $type, \Criteria::EQUAL);
         $rsCriteria = \StepTriggerPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         $rsCriteria->next();
         $row = $rsCriteria->getRow();
         if ($flagStepAssignTask == 1) {
             $row["ST_TYPE"] = $typeIni;
         }
         return $this->getTriggerDataFromRecord($row);
     } catch (\Exception $e) {
         throw $e;
     }
 }