/** * Verify if doesn't exists the Task * * @param string $processUid Unique id of Process * @param string $taskUid Unique id of Task * @param string $fieldNameForException Field name for the exception * * return void Throw exception if doesn't exists the Task */ public function throwExceptionIfNotExistsTask($processUid, $taskUid, $fieldNameForException) { try { $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\TaskPeer::TAS_UID); if ($processUid != "") { $criteria->add(\TaskPeer::PRO_UID, $processUid, \Criteria::EQUAL); } $criteria->add(\TaskPeer::TAS_UID, $taskUid, \Criteria::EQUAL); $rsCriteria = \TaskPeer::doSelectRS($criteria); if (!$rsCriteria->next()) { throw new \Exception(\G::LoadTranslation("ID_ACTIVITY_DOES_NOT_EXIST", array($fieldNameForException, $taskUid))); } } catch (\Exception $e) { throw $e; } }
public function getMaximunTaskX($processUid) { $criteria = new Criteria('workflow'); $criteria->addSelectColumn('MAX(TAS_POSX) AS MAX_X'); $criteria->add(TaskPeer::PRO_UID, $processUid); $dataset = TaskPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); $row = $dataset->getRow(); return (int) $row['MAX_X']; }
/** * Get the list of groups of unassigned users of the specified task from * database * * @param string $ProUID * Process identifier * @param string $TaskUID * task identifier * @return array of unassigned user groups */ public function getTaskUnassignedUsersGroupsData($ProUID, $TaskUID) { $unassignedUsersGroups = array(); $c = new Criteria(); $c->addSelectColumn(TaskUserPeer::USR_UID); $c->addSelectColumn(TaskUserPeer::TU_RELATION); $aConditions = array(); $aConditions[] = array(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID); $aConditions[] = array(TaskPeer::TAS_ASSIGN_TYPE, DBAdapter::getStringDelimiter() . 'SELF_SERVICE' . DBAdapter::getStringDelimiter()); $c->addJoinMC($aConditions, Criteria::JOIN); $c->add(TaskPeer::PRO_UID, $ProUID); $c->add(TaskPeer::TAS_UID, $TaskUID); $rs = TaskPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); // echo $c->toString(); $rs->next(); $row = $rs->getRow(); while (is_array($row)) { $unassignedUsersGroups[] = $row; $rs->next(); $row = $rs->getRow(); } return $unassignedUsersGroups; }
/** * Delete Process * * @param string $processUid * @param bool $checkCases * * return bool Return true, if is succesfully * * @access public DEPRECATED public function deleteProcess($processUid, $checkCases = true) { if ($checkCases) { $process = new \Process(); $arrayCases = $process->getCasesCountInAllProcesses($processUid); $sum = 0; if (isset($arrayCases[$processUid]) && count($arrayCases[$processUid]) > 0) { foreach ($arrayCases[$processUid] as $value) { $sum = $sum + $value; } } if ($sum > 0) { throw (new \Exception("You can't delete the process, because it has $sum cases")); } } $processMap = new \processMap(); return $processMap->deleteProcess($processUid); }*/ public function deleteProcess($sProcessUID) { try { G::LoadClass('case'); G::LoadClass('reportTables'); //Instance all classes necesaries $oProcess = new Process(); $oDynaform = new Dynaform(); $oInputDocument = new InputDocument(); $oOutputDocument = new OutputDocument(); $oTrigger = new Triggers(); $oRoute = new Route(); $oGateway = new Gateway(); $oEvent = new Event(); $oSwimlaneElement = new SwimlanesElements(); $oConfiguration = new Configuration(); $oDbSource = new DbSource(); $oReportTable = new ReportTables(); $oCaseTracker = new CaseTracker(); $oCaseTrackerObject = new CaseTrackerObject(); //Delete the applications of process $oCriteria = new Criteria('workflow'); $oCriteria->add(ApplicationPeer::PRO_UID, $sProcessUID); $oDataset = ApplicationPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $oCase = new Cases(); while ($aRow = $oDataset->getRow()) { $oCase->removeCase($aRow['APP_UID']); $oDataset->next(); } //Delete the tasks of process $oCriteria = new Criteria('workflow'); $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); $oDataset = TaskPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $this->deleteTask($aRow['TAS_UID']); $oDataset->next(); } //Delete the dynaforms of process $oCriteria = new Criteria('workflow'); $oCriteria->add(DynaformPeer::PRO_UID, $sProcessUID); $oDataset = DynaformPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oDynaform->remove($aRow['DYN_UID']); $oDataset->next(); } //Delete the input documents of process $oCriteria = new Criteria('workflow'); $oCriteria->add(InputDocumentPeer::PRO_UID, $sProcessUID); $oDataset = InputDocumentPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oInputDocument->remove($aRow['INP_DOC_UID']); $oDataset->next(); } //Delete the output documents of process $oCriteria = new Criteria('workflow'); $oCriteria->add(OutputDocumentPeer::PRO_UID, $sProcessUID); $oDataset = OutputDocumentPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oOutputDocument->remove($aRow['OUT_DOC_UID']); $oDataset->next(); } //Delete the triggers of process $oCriteria = new Criteria('workflow'); $oCriteria->add(TriggersPeer::PRO_UID, $sProcessUID); $oDataset = TriggersPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oTrigger->remove($aRow['TRI_UID']); $oDataset->next(); } //Delete the routes of process $oCriteria = new Criteria('workflow'); $oCriteria->add(RoutePeer::PRO_UID, $sProcessUID); $oDataset = RoutePeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oRoute->remove($aRow['ROU_UID']); $oDataset->next(); } //Delete the gateways of process $oCriteria = new Criteria('workflow'); $oCriteria->add(GatewayPeer::PRO_UID, $sProcessUID); $oDataset = GatewayPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oGateway->remove($aRow['GAT_UID']); $oDataset->next(); } //Delete the Event of process $oCriteria = new Criteria('workflow'); $oCriteria->add(EventPeer::PRO_UID, $sProcessUID); $oDataset = EventPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oEvent->remove($aRow['EVN_UID']); $oDataset->next(); } //Delete the swimlanes elements of process $oCriteria = new Criteria('workflow'); $oCriteria->add(SwimlanesElementsPeer::PRO_UID, $sProcessUID); $oDataset = SwimlanesElementsPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oSwimlaneElement->remove($aRow['SWI_UID']); $oDataset->next(); } //Delete the configurations of process $oCriteria = new Criteria('workflow'); $oCriteria->add(ConfigurationPeer::PRO_UID, $sProcessUID); $oDataset = ConfigurationPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oConfiguration->remove($aRow['CFG_UID'], $aRow['OBJ_UID'], $aRow['PRO_UID'], $aRow['USR_UID'], $aRow['APP_UID']); $oDataset->next(); } //Delete the DB sources of process $oCriteria = new Criteria('workflow'); $oCriteria->add(DbSourcePeer::PRO_UID, $sProcessUID); $oDataset = DbSourcePeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { /** * note added by gustavo cruz gustavo-at-colosa-dot-com 27-01-2010 * in order to solve the bug 0004389, we use the validation function Exists * inside the remove function in order to verify if the DbSource record * exists in the Database, however there is a strange behavior within the * propel engine, when the first record is erased somehow the "_deleted" * attribute of the next row is set to true, so when propel tries to erase * it, obviously it can't and trows an error. With the "Exist" function * we ensure that if there is the record in the database, the _delete attribute must be false. * * note added by gustavo cruz gustavo-at-colosa-dot-com 28-01-2010 * I have just identified the source of the issue, when is created a $oDbSource DbSource object * it's used whenever a record is erased or removed in the db, however the problem * it's that the same object is used every time, and the delete method invoked * sets the _deleted attribute to true when its called, of course as we use * the same object, the first time works fine but trowns an error with the * next record, cos it's the same object and the delete method checks if the _deleted * attribute it's true or false, the attrib _deleted is setted to true the * first time and later is never changed, the issue seems to be part of * every remove function in the model classes, not only DbSource * i recommend that a more general solution must be achieved to resolve * this issue in every model class, to prevent future problems. */ $oDbSource->remove($aRow['DBS_UID'], $sProcessUID); $oDataset->next(); } //Delete the supervisors $oCriteria = new Criteria('workflow'); $oCriteria->add(ProcessUserPeer::PRO_UID, $sProcessUID); ProcessUserPeer::doDelete($oCriteria); //Delete the object permissions $oCriteria = new Criteria('workflow'); $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); ObjectPermissionPeer::doDelete($oCriteria); //Delete the step supervisors $oCriteria = new Criteria('workflow'); $oCriteria->add(StepSupervisorPeer::PRO_UID, $sProcessUID); StepSupervisorPeer::doDelete($oCriteria); //Delete the report tables $oCriteria = new Criteria('workflow'); $oCriteria->add(ReportTablePeer::PRO_UID, $sProcessUID); $oDataset = ReportTablePeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oReportTable->deleteReportTable($aRow['REP_TAB_UID']); $oDataset->next(); } //Delete case tracker configuration $oCaseTracker->remove($sProcessUID); //Delete case tracker objects $oCriteria = new Criteria('workflow'); $oCriteria->add(CaseTrackerObjectPeer::PRO_UID, $sProcessUID); ProcessUserPeer::doDelete($oCriteria); //Delete the process try { $oProcess->remove($sProcessUID); } catch (Exception $oError) { throw ($oError); } return true; } catch (Exception $oError) { throw ($oError); } }
/** * this function remove all Process except the PROCESS ROW * * @param string $sProUid * @return boolean */ public function removeProcessRows ($sProUid) { try { //Instance all classes necesaries $oProcess = new Process(); $oDynaform = new Dynaform(); $oInputDocument = new InputDocument(); $oOutputDocument = new OutputDocument(); $oTrigger = new Triggers(); $oStepTrigger = new StepTrigger(); $oRoute = new Route(); $oStep = new Step(); $oSubProcess = new SubProcess(); $oCaseTracker = new CaseTracker(); $oCaseTrackerObject = new CaseTrackerObject(); $oObjectPermission = new ObjectPermission(); $oSwimlaneElement = new SwimlanesElements(); $oConnection = new DbSource(); $oStage = new Stage(); $oEvent = new Event(); $oCaseScheduler = new CaseScheduler(); $oConfig = new Configuration(); //Delete the tasks of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( TaskPeer::PRO_UID, $sProUid ); $oDataset = TaskPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $oTask = new Task(); while ($aRow = $oDataset->getRow()) { $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( StepTriggerPeer::TAS_UID, $aRow['TAS_UID'] ); StepTriggerPeer::doDelete( $oCriteria ); if ($oTask->taskExists( $aRow['TAS_UID'] )) { $oTask->remove( $aRow['TAS_UID'] ); } $oDataset->next(); } //Delete the dynaforms of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( DynaformPeer::PRO_UID, $sProUid ); $oDataset = DynaformPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $sWildcard = PATH_DYNAFORM . $aRow['PRO_UID'] . PATH_SEP . $aRow['DYN_UID'] . '_tmp*'; foreach (glob( $sWildcard ) as $fn) { @unlink( $fn ); } $sWildcard = PATH_DYNAFORM . $aRow['PRO_UID'] . PATH_SEP . $aRow['DYN_UID'] . '.*'; foreach (glob( $sWildcard ) as $fn) { @unlink( $fn ); } if ($oDynaform->dynaformExists( $aRow['DYN_UID'] )) { $oDynaform->remove( $aRow['DYN_UID'] ); } $oDataset->next(); } //Delete the input documents of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( InputDocumentPeer::PRO_UID, $sProUid ); $oDataset = InputDocumentPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oInputDocument->InputExists( $aRow['INP_DOC_UID'] )) { $oInputDocument->remove( $aRow['INP_DOC_UID'] ); } $oDataset->next(); } //Delete the output documents of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( OutputDocumentPeer::PRO_UID, $sProUid ); $oDataset = OutputDocumentPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oOutputDocument->OutputExists( $aRow['OUT_DOC_UID'] )) { $oOutputDocument->remove( $aRow['OUT_DOC_UID'] ); } $oDataset->next(); } //Delete the steps $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( StepPeer::PRO_UID, $sProUid ); $oDataset = StepPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { //Delete the steptrigger of process /*$oCriteria = new Criteria('workflow'); $oCriteria->add(StepTriggerPeer::STEP_UID, $aRow['STEP_UID']); $oDataseti = StepTriggerPeer::doSelectRS($oCriteria); $oDataseti->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataseti->next(); while ($aRowi = $oDataseti->getRow()) { if ($oStepTrigger->stepTriggerExists($aRowi['STEP_UID'], $aRowi['TAS_UID'], $aRowi['TRI_UID'], $aRowi['ST_TYPE'])) $oStepTrigger->remove($aRowi['STEP_UID'], $aRowi['TAS_UID'], $aRowi['TRI_UID'], $aRowi['ST_TYPE']); $oDataseti->next(); }*/ $oStep->remove( $aRow['STEP_UID'] ); $oDataset->next(); } //Delete the StepSupervisor $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( StepSupervisorPeer::PRO_UID, $sProUid ); $oDataset = StepSupervisorPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oStep->StepExists( $aRow['STEP_UID'] )) { $oStep->remove( $aRow['STEP_UID'] ); } $oDataset->next(); } //Delete the triggers of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( TriggersPeer::PRO_UID, $sProUid ); $oDataset = TriggersPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oTrigger->TriggerExists( $aRow['TRI_UID'] )) { $oTrigger->remove( $aRow['TRI_UID'] ); } $oDataset->next(); } //Delete the routes of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( RoutePeer::PRO_UID, $sProUid ); $oDataset = RoutePeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oRoute->routeExists( $aRow['ROU_UID'] )) { $oRoute->remove( $aRow['ROU_UID'] ); } $oDataset->next(); } //Delete the swimlanes elements of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( SwimlanesElementsPeer::PRO_UID, $sProUid ); $oDataset = SwimlanesElementsPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oSwimlaneElement->swimlanesElementsExists( $aRow['SWI_UID'] )) { $oSwimlaneElement->remove( $aRow['SWI_UID'] ); } $oDataset->next(); } //Delete the DB connections of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( DbSourcePeer::PRO_UID, $sProUid ); $oDataset = DbSourcePeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oConnection->Exists( $aRow['DBS_UID'], $aRow['PRO_UID'] )) { $oConnection->remove( $aRow['DBS_UID'], $aRow['PRO_UID'] ); } $oDataset->next(); } //Delete the sub process of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( SubProcessPeer::PRO_PARENT, $sProUid ); $oDataset = SubProcessPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oSubProcess->subProcessExists( $aRow['SP_UID'] )) { $oSubProcess->remove( $aRow['SP_UID'] ); } $oDataset->next(); } //Delete the caseTracker of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( CaseTrackerPeer::PRO_UID, $sProUid ); $oDataset = CaseTrackerPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oCaseTracker->caseTrackerExists( $aRow['PRO_UID'] )) { $oCaseTracker->remove( $aRow['PRO_UID'] ); } $oDataset->next(); } //Delete the caseTrackerObject of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( CaseTrackerObjectPeer::PRO_UID, $sProUid ); $oDataset = CaseTrackerObjectPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oCaseTrackerObject->caseTrackerObjectExists( $aRow['CTO_UID'] )) { $oCaseTrackerObject->remove( $aRow['CTO_UID'] ); } $oDataset->next(); } //Delete the ObjectPermission of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( ObjectPermissionPeer::PRO_UID, $sProUid ); $oDataset = ObjectPermissionPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oObjectPermission->Exists( $aRow['OP_UID'] )) { $oObjectPermission->remove( $aRow['OP_UID'] ); } $oDataset->next(); } //Delete the Stage of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( StagePeer::PRO_UID, $sProUid ); $oDataset = StagePeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oStage->Exists( $aRow['STG_UID'] )) { $oStage->remove( $aRow['STG_UID'] ); } $oDataset->next(); } //Delete the Event of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( EventPeer::PRO_UID, $sProUid ); $oDataset = EventPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oEvent->Exists( $aRow['EVN_UID'] )) { $oEvent->remove( $aRow['EVN_UID'] ); } $oDataset->next(); if ($oEvent->existsByTaskUidFrom( $aRow['TAS_UID'] )) { $aRowEvent = $oEvent->getRowByTaskUidFrom( $aRow['TAS_UID'] ); $oEvent->remove( $aRowEvent['EVN_UID'] ); } $oDataset->next(); } //Delete the CaseScheduler of process $oCriteria = new Criteria( 'workflow' ); $oCriteria->add( CaseSchedulerPeer::PRO_UID, $sProUid ); $oDataset = CaseSchedulerPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oCaseScheduler->Exists( $aRow['SCH_UID'] )) { $oCaseScheduler->remove( $aRow['SCH_UID'] ); } $oDataset->next(); } //Delete the TaskExtraProperties of the process $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( ConfigurationPeer::CFG_UID ); $oCriteria->addSelectColumn( ConfigurationPeer::OBJ_UID ); $oCriteria->addSelectColumn( ConfigurationPeer::CFG_VALUE ); $oCriteria->addSelectColumn( TaskPeer::PRO_UID ); $oCriteria->addSelectColumn( ConfigurationPeer::USR_UID ); $oCriteria->addSelectColumn( ConfigurationPeer::APP_UID ); $oCriteria->add( TaskPeer::PRO_UID, $sProUid ); $oCriteria->add( ConfigurationPeer::CFG_UID, 'TAS_EXTRA_PROPERTIES' ); $oCriteria->addJoin( ConfigurationPeer::OBJ_UID, TaskPeer::TAS_UID ); $oDataset = ConfigurationPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { if ($oConfig->exists($aRow['CFG_UID'], $aRow['OBJ_UID'], $aRow['PRO_UID'], $aRow['USR_UID'], $aRow['APP_UID'])) { $oConfig->remove( $aRow['CFG_UID'], $aRow['OBJ_UID'], $aRow['PRO_UID'], $aRow['USR_UID'], $aRow['APP_UID'] ); } $oDataset->next(); } return true; } catch (Exception $oError) { throw ($oError); } }
/** * derivate Case moves the case to the next task in the process according to the routing rules * * @param string $userId * @param string $caseId * @param string $delIndex * @param array $tasks * @param bool $bExecuteTriggersBeforeAssignment * @return $result will return an object */ public function derivateCase ($userId, $caseId, $delIndex, $bExecuteTriggersBeforeAssignment = false, $tasks = array()) { $g = new G(); try { $g->sessionVarSave(); $_SESSION["APPLICATION"] = $caseId; $_SESSION["INDEX"] = $delIndex; $_SESSION["USER_LOGGED"] = $userId; $sStatus = 'TO_DO'; $varResponse = ''; $varTriggers = "\n"; if ($delIndex == '') { $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( AppDelegationPeer::DEL_INDEX ); $oCriteria->add( AppDelegationPeer::APP_UID, $caseId ); $oCriteria->add( AppDelegationPeer::DEL_FINISH_DATE, null, Criteria::ISNULL ); if (AppDelegationPeer::doCount( $oCriteria ) > 1) { $result = new wsResponse( 20, G::loadTranslation( 'ID_SPECIFY_DELEGATION_INDEX' ) ); return $result; } $oDataset = AppDelegationPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $aRow = $oDataset->getRow(); $delIndex = $aRow['DEL_INDEX']; } $oAppDel = new AppDelegation(); $appdel = $oAppDel->Load( $caseId, $delIndex ); if ($userId != $appdel['USR_UID']) { $result = new wsResponse( 17, G::loadTranslation( 'ID_CASE_ASSIGNED_ANOTHER_USER' ) ); return $result; } if ($appdel['DEL_FINISH_DATE'] != null) { $result = new wsResponse( 18, G::loadTranslation( 'ID_CASE_DELEGATION_ALREADY_CLOSED' ) ); return $result; } $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( AppDelayPeer::APP_UID ); $oCriteria->addSelectColumn( AppDelayPeer::APP_DEL_INDEX ); $oCriteria->add( AppDelayPeer::APP_TYPE, '' ); $oCriteria->add( $oCriteria->getNewCriterion( AppDelayPeer::APP_TYPE, 'PAUSE' )->addOr( $oCriteria->getNewCriterion( AppDelayPeer::APP_TYPE, 'CANCEL' ) ) ); $oCriteria->addAscendingOrderByColumn( AppDelayPeer::APP_ENABLE_ACTION_DATE ); $oDataset = AppDelayPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $aRow = $oDataset->getRow(); if (is_array( $aRow )) { if (isset( $aRow['APP_DISABLE_ACTION_USER'] ) && $aRow['APP_DISABLE_ACTION_USER'] != 0 && isset( $aRow['APP_DISABLE_ACTION_DATE'] ) && $aRow['APP_DISABLE_ACTION_DATE'] != '') { $result = new wsResponse( 19, G::loadTranslation( 'ID_CASE_IN_STATUS' ) . " " . $aRow['APP_TYPE'] ); return $result; } } $aData = array(); $aData['APP_UID'] = $caseId; $aData['DEL_INDEX'] = $delIndex; $aData['USER_UID'] = $userId; //Load data $oCase = new Cases(); $appFields = $oCase->loadCase( $caseId, $delIndex ); if (is_null( $appFields["DEL_INIT_DATE"] )) { $oCase->setDelInitDate( $caseId, $delIndex ); $appFields = $oCase->loadCase( $caseId, $delIndex ); } $appFields["APP_DATA"]["APPLICATION"] = $caseId; if (! isset( $_SESSION["PROCESS"] )) { $_SESSION["PROCESS"] = $appFields["PRO_UID"]; } if ($bExecuteTriggersBeforeAssignment) { //Execute triggers before assignment $aTriggers = $oCase->loadTriggers( $appdel['TAS_UID'], 'ASSIGN_TASK', - 1, 'BEFORE' ); if (count( $aTriggers ) > 0) { $varTriggers = $varTriggers . "<br /><b>-= Before Assignment =-</b><br />"; $oPMScript = new PMScript(); foreach ($aTriggers as $aTrigger) { //$appFields = $oCase->loadCase( $caseId ); //$appFields['APP_DATA']['APPLICATION'] = $caseId; //Set variables $params = new stdClass(); $params->appData = $appFields["APP_DATA"]; if ($this->stored_system_variables) { $params->option = "STORED SESSION"; $params->SID = $this->wsSessionId; } $appFields["APP_DATA"] = array_merge( $appFields["APP_DATA"], G::getSystemConstants( $params ) ); //PMScript $oPMScript->setFields( $appFields['APP_DATA'] ); $bExecute = true; if ($aTrigger['ST_CONDITION'] !== '') { $oPMScript->setScript( $aTrigger['ST_CONDITION'] ); $bExecute = $oPMScript->evaluate(); } if ($bExecute) { $oPMScript->setScript( $aTrigger['TRI_WEBBOT'] ); $oPMScript->execute(); $trigger = TriggersPeer::retrieveByPk($aTrigger["TRI_UID"]); $varTriggers = $varTriggers . " - " . nl2br(htmlentities($trigger->getTriTitle(), ENT_QUOTES)) . "<br />"; //$appFields = $oCase->loadCase( $caseId ); $appFields['APP_DATA'] = $oPMScript->aFields; unset($appFields['APP_STATUS']); unset($appFields['APP_PROC_STATUS']); unset($appFields['APP_PROC_CODE']); unset($appFields['APP_PIN']); $oCase->updateCase( $caseId, $appFields ); } } } } //Execute triggers before derivation BEFORE_ROUTING $aTriggers = $oCase->loadTriggers( $appdel['TAS_UID'], 'ASSIGN_TASK', - 2, 'BEFORE' ); if (count( $aTriggers ) > 0) { $varTriggers .= "<b>-= Before Derivation =-</b><br/>"; $oPMScript = new PMScript(); foreach ($aTriggers as $aTrigger) { //$appFields = $oCase->loadCase( $caseId ); //$appFields['APP_DATA']['APPLICATION'] = $caseId; //Set variables $params = new stdClass(); $params->appData = $appFields["APP_DATA"]; if ($this->stored_system_variables) { $params->option = "STORED SESSION"; $params->SID = $this->wsSessionId; } $appFields["APP_DATA"] = array_merge( $appFields["APP_DATA"], G::getSystemConstants( $params ) ); //PMScript $oPMScript->setFields( $appFields['APP_DATA'] ); $bExecute = true; if ($aTrigger['ST_CONDITION'] !== '') { $oPMScript->setScript( $aTrigger['ST_CONDITION'] ); $bExecute = $oPMScript->evaluate(); } if ($bExecute) { $oPMScript->setScript( $aTrigger['TRI_WEBBOT'] ); $oPMScript->execute(); $oTrigger = TriggersPeer::retrieveByPk( $aTrigger['TRI_UID'] ); $varTriggers .= " - " . nl2br( htmlentities( $oTrigger->getTriTitle(), ENT_QUOTES ) ) . "<br/>"; //$appFields = $oCase->loadCase( $caseId ); $appFields['APP_DATA'] = $oPMScript->aFields; unset($appFields['APP_STATUS']); unset($appFields['APP_PROC_STATUS']); unset($appFields['APP_PROC_CODE']); unset($appFields['APP_PIN']); //$appFields['APP_DATA']['APPLICATION'] = $caseId; $oCase->updateCase( $caseId, $appFields ); } } } $oDerivation = new Derivation(); if (!empty($tasks)) { $nextDelegations = $tasks; } else { $derive = $oDerivation->prepareInformation($aData); if (isset($derive[1])) { if ($derive[1]['ROU_TYPE'] == 'SELECT') { $result = new wsResponse(21, G::loadTranslation('ID_CAN_NOT_ROUTE_CASE_USING_WEBSERVICES')); return $result; } } else { $result = new wsResponse(22, G::loadTranslation('ID_TASK_DOES_NOT_HAVE_ROUTING_RULE')); return $result; } foreach ($derive as $key => $val) { if ($val['NEXT_TASK']['TAS_ASSIGN_TYPE'] == 'MANUAL') { $result = new wsResponse(15, G::loadTranslation('ID_TASK_DEFINED_MANUAL_ASSIGNMENT')); return $result; } //Routed to the next task, if end process then not exist user $nodeNext = array(); $usrasgdUid = null; $usrasgdUserName = null; if (isset($val['NEXT_TASK']['USER_ASSIGNED'])) { $usrasgdUid = $val['NEXT_TASK']['USER_ASSIGNED']['USR_UID']; $usrasgdUserName = '******' . $val['NEXT_TASK']['USER_ASSIGNED']['USR_USERNAME'] . ')'; } $nodeNext['TAS_UID'] = $val['NEXT_TASK']['TAS_UID']; $nodeNext['USR_UID'] = $usrasgdUid; $nodeNext['TAS_ASSIGN_TYPE'] = $val['NEXT_TASK']['TAS_ASSIGN_TYPE']; $nodeNext['TAS_DEF_PROC_CODE'] = $val['NEXT_TASK']['TAS_DEF_PROC_CODE']; $nodeNext['DEL_PRIORITY'] = $appdel['DEL_PRIORITY']; $nodeNext['TAS_PARENT'] = $val['NEXT_TASK']['TAS_PARENT']; $nextDelegations[] = $nodeNext; $varResponse = $varResponse . (($varResponse != '') ? ',' : '') . $val['NEXT_TASK']['TAS_TITLE'] . $usrasgdUserName; } } $appFields['DEL_INDEX'] = $delIndex; if (isset( $derive['TAS_UID'] )) { $appFields['TAS_UID'] = $derive['TAS_UID']; } //Save data - Start //$appFields = $oCase->loadCase( $caseId ); //$oCase->updateCase ( $caseId, $appFields ); //Save data - End $row = array (); $oCriteria = new Criteria( 'workflow' ); $del = DBAdapter::getStringDelimiter(); $oCriteria->addSelectColumn( RoutePeer::ROU_TYPE ); $oCriteria->addSelectColumn( RoutePeer::ROU_NEXT_TASK ); $oCriteria->add( RoutePeer::TAS_UID, $appdel['TAS_UID'] ); $oDataset = TaskPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $row[] = array ('ROU_TYPE' => $aRow['ROU_TYPE'],'ROU_NEXT_TASK' => $aRow['ROU_NEXT_TASK'] ); $oDataset->next(); } //derivate case $aCurrentDerivation = array ('APP_UID' => $caseId,'DEL_INDEX' => $delIndex,'APP_STATUS' => $sStatus,'TAS_UID' => $appdel['TAS_UID'],'ROU_TYPE' => $row[0]['ROU_TYPE'] ); $oDerivation->derivate( $aCurrentDerivation, $nextDelegations ); $appFields = $oCase->loadCase( $caseId ); //Execute triggers after derivation $aTriggers = $oCase->loadTriggers( $appdel['TAS_UID'], 'ASSIGN_TASK', - 2, 'AFTER' ); if (count( $aTriggers ) > 0) { //$appFields['APP_DATA']['APPLICATION'] = $caseId; //Set variables $params = new stdClass(); $params->appData = $appFields["APP_DATA"]; if ($this->stored_system_variables) { $params->option = "STORED SESSION"; $params->SID = $this->wsSessionId; } $appFields["APP_DATA"] = array_merge( $appFields["APP_DATA"], G::getSystemConstants( $params ) ); //PMScript $oPMScript = new PMScript(); $oPMScript->setFields( $appFields['APP_DATA'] ); $varTriggers .= "<b>-= After Derivation =-</b><br/>"; foreach ($aTriggers as $aTrigger) { $bExecute = true; if ($aTrigger['ST_CONDITION'] !== '') { $oPMScript->setScript( $aTrigger['ST_CONDITION'] ); $bExecute = $oPMScript->evaluate(); } if ($bExecute) { $oPMScript->setScript( $aTrigger['TRI_WEBBOT'] ); $oPMScript->execute(); $oTrigger = TriggersPeer::retrieveByPk( $aTrigger['TRI_UID'] ); $varTriggers .= " - " . nl2br( htmlentities( $oTrigger->getTriTitle(), ENT_QUOTES ) ) . "<br/>"; //$appFields = $oCase->loadCase($caseId); $appFields['APP_DATA'] = $oPMScript->aFields; //$appFields['APP_DATA']['APPLICATION'] = $caseId; //$appFields = $oCase->loadCase($caseId); unset($aFields['APP_STATUS']); unset($aFields['APP_PROC_STATUS']); unset($aFields['APP_PROC_CODE']); unset($aFields['APP_PIN']); $oCase->updateCase( $caseId, $appFields ); } } } $sFromName = ""; if ($userId != "") { $user = new Users(); $arrayUserData = $user->load($userId); if (trim($arrayUserData["USR_EMAIL"]) == "") { $arrayUserData["USR_EMAIL"] = "info@" . $_SERVER["HTTP_HOST"]; } $sFromName = "\"" . $arrayUserData["USR_FIRSTNAME"] . " " . $arrayUserData["USR_LASTNAME"] . "\" <" . $arrayUserData["USR_EMAIL"] . ">"; } $oCase->sendNotifications( $appdel['TAS_UID'], $nextDelegations, $appFields['APP_DATA'], $caseId, $delIndex, $sFromName ); // Send notifications Mobile - Start try { $oLight = new \ProcessMaker\BusinessModel\Light(); $nextIndex = $oLight->getInformationDerivatedCase($appFields['APP_UID'], $delIndex); $notificationMobile = new \ProcessMaker\BusinessModel\Light\NotificationDevice(); $notificationMobile->routeCaseNotification($userId, $_SESSION["PROCESS"], $appdel['TAS_UID'], $appFields, $nextDelegations, $nextIndex); } catch (Exception $e) { \G::log(G::loadTranslation( 'ID_NOTIFICATION_ERROR' ) . '|' . $e->getMessage() , PATH_DATA, "mobile.log"); } // Send notifications Mobile - End //Save data - Start //$appFields = $oCase->loadCase($caseId); //$oCase->updateCase($caseId, $appFields); //Save data - End $oProcess = new Process(); $oProcessFieds = $oProcess->Load( $appFields['PRO_UID'] ); //here dubug mode in web entry if (isset( $oProcessFieds['PRO_DEBUG'] ) && $oProcessFieds['PRO_DEBUG']) { $result = new wsResponse( 0, $varResponse . " <br><br><table width='100%' cellpadding='0' cellspacing='0'><tr><td class='FormTitle'> " . G::LoadTranslation( 'ID_DEBUG_MESSAGE' ) . "</td></tr></table>" . $varTriggers ); } else { $result = new wsResponse( 0, $varResponse . " --- " . $oProcessFieds['PRO_DEBUG'] ); } $res = $result->getPayloadArray(); //now fill the array of AppDelegationPeer $oCriteria = new Criteria( 'workflow' ); $oCriteria->addSelectColumn( AppDelegationPeer::DEL_INDEX ); $oCriteria->addSelectColumn( AppDelegationPeer::USR_UID ); $oCriteria->addSelectColumn( AppDelegationPeer::TAS_UID ); $oCriteria->addSelectColumn( AppDelegationPeer::DEL_THREAD ); $oCriteria->addSelectColumn( AppDelegationPeer::DEL_THREAD_STATUS ); $oCriteria->addSelectColumn( AppDelegationPeer::DEL_FINISH_DATE ); $oCriteria->add( AppDelegationPeer::APP_UID, $caseId ); $oCriteria->add( AppDelegationPeer::DEL_PREVIOUS, $delIndex ); $oCriteria->addAscendingOrderByColumn( AppDelegationPeer::DEL_INDEX ); $oDataset = AppDelegationPeer::doSelectRS( $oCriteria ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $aCurrentUsers = array (); while ($oDataset->next()) { $aAppDel = $oDataset->getRow(); $oUser = new Users(); try { $oUser->load( $aAppDel['USR_UID'] ); $uFields = $oUser->toArray( BasePeer::TYPE_FIELDNAME ); $currentUserName = $oUser->getUsrFirstname() . ' ' . $oUser->getUsrLastname(); } catch (Exception $e) { $currentUserName = ''; } $oTask = new Task(); try { $uFields = $oTask->load( $aAppDel['TAS_UID'] ); $taskName = $uFields['TAS_TITLE']; } catch (Exception $e) { $taskName = ''; } // execute events $eventPro = $_SESSION["PROCESS"]; $eventApp = $caseId; $eventInd = $aAppDel['DEL_INDEX']; $eventTas = $aAppDel['TAS_UID']; $oEvent = new Event(); $oEvent->createAppEvents( $eventPro, $eventApp, $eventInd, $eventTas ); // end events $currentUser = new stdClass(); $currentUser->userId = $aAppDel['USR_UID']; $currentUser->userName = $currentUserName; $currentUser->taskId = $aAppDel['TAS_UID']; $currentUser->taskName = $taskName; $currentUser->delIndex = $aAppDel['DEL_INDEX']; $currentUser->delThread = $aAppDel['DEL_THREAD']; $currentUser->delThreadStatus = $aAppDel['DEL_THREAD_STATUS']; $aCurrentUsers[] = $currentUser; } $res['routing'] = $aCurrentUsers; $g->sessionVarRestore(); return $res; } catch (Exception $e) { $result = new wsResponse( 100, $e->getMessage() ); $g->sessionVarRestore(); return $result; } }
/** * Get data of unique ids of a Task (Unique id of Process) * * @param string $taskUid Unique id of Task * * return array */ public function getTaskUid($taskUid) { try { $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\TaskPeer::TAS_UID); $criteria->add(\TaskPeer::TAS_UID, $taskUid, \Criteria::EQUAL); $rsCriteria = \TaskPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria->next(); return $rsCriteria->getRow(); } catch (\Exception $e) { throw $e; } }
} G::LoadClass('processes'); $infoProcess = new Processes(); if(!$infoProcess->processExists($proUid)) { $oSL = new SwimlanesElements(); if($oSL->swimlanesElementsExists($proUid)) { $aFields = $oSL->load($proUid); $proUid = $aFields['PRO_UID']; } else { $k = new Criteria('workflow'); $k->clearSelectColumns(); $k->addSelectColumn(TaskPeer::PRO_UID); $k->add(TaskPeer::TAS_UID, $uidAux ); $rs = TaskPeer::doSelectRS($k); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); $proUid = $row['PRO_UID']; } } $resultProcess = $infoProcess->getProcessRow($proUid); } else { if(array_key_exists('PU_UID', $oDataAux)) { $c = new Criteria('workflow'); $c->clearSelectColumns(); $c->addSelectColumn(ProcessUserPeer::PRO_UID); $c->addSelectColumn(ProcessUserPeer::USR_UID); $c->add(ProcessUserPeer::PU_UID, $oData->PU_UID); $oDataset = AppDelegationPeer::doSelectRS($c);
/** * Get all Tasks of Case * Based in: processmaker/workflow/engine/classes/class.processMap.php * Method: processMap::load() * * @param string $applicationUid Unique id of Case * * return array Return an array with all Tasks of Case */ public function getTasks($applicationUid) { try { $arrayTask = array(); //Verify data $this->throwExceptionIfNotExistsCase($applicationUid, 0, $this->getFieldNameByFormatFieldName("APP_UID")); //Set variables $process = new \Process(); $application = new \Application(); $conf = new \Configurations(); $arrayApplicationData = $application->Load($applicationUid); $processUid = $arrayApplicationData["PRO_UID"]; $confEnvSetting = $conf->getFormats(); $taskUid = ""; //Get data //SQL $delimiter = \DBAdapter::getStringDelimiter(); $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\TaskPeer::TAS_UID); $criteria->addAsColumn("TAS_TITLE", "CT.CON_VALUE"); $criteria->addAsColumn("TAS_DESCRIPTION", "CD.CON_VALUE"); $criteria->addSelectColumn(\TaskPeer::TAS_START); $criteria->addSelectColumn(\TaskPeer::TAS_TYPE); $criteria->addSelectColumn(\TaskPeer::TAS_DERIVATION); $criteria->addSelectColumn(\TaskPeer::TAS_ASSIGN_TYPE); $criteria->addSelectColumn(\UsersPeer::USR_UID); $criteria->addSelectColumn(\UsersPeer::USR_USERNAME); $criteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME); $criteria->addSelectColumn(\UsersPeer::USR_LASTNAME); $criteria->addAlias("CT", \ContentPeer::TABLE_NAME); $criteria->addAlias("CD", \ContentPeer::TABLE_NAME); $arrayCondition = array(); $arrayCondition[] = array(\TaskPeer::TAS_UID, "CT.CON_ID", \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "TAS_TITLE" . $delimiter, \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); $arrayCondition = array(); $arrayCondition[] = array(\TaskPeer::TAS_UID, "CD.CON_ID", \Criteria::EQUAL); $arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "TAS_DESCRIPTION" . $delimiter, \Criteria::EQUAL); $arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); $criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); $criteria->addJoin(\TaskPeer::TAS_LAST_ASSIGNED, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN); $criteria->add(\TaskPeer::PRO_UID, $processUid, \Criteria::EQUAL); $rsCriteria = \TaskPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); //Task if ($row["TAS_TYPE"] == "NORMAL") { if (($row["TAS_TITLE"] . "" == "")) { //There is no Label in Current SYS_LANG language so try to find in English - by default $task = new \Task(); $task->setTasUid($row["TAS_UID"]); $row["TAS_TITLE"] = $task->getTasTitle(); } } else { $criteria2 = new \Criteria("workflow"); $criteria2->addSelectColumn(\SubProcessPeer::PRO_UID); $criteria2->addAsColumn("TAS_TITLE", "CT.CON_VALUE"); $criteria2->addAsColumn("TAS_DESCRIPTION", "CD.CON_VALUE"); $criteria2->addAlias("CT", \ContentPeer::TABLE_NAME); $criteria2->addAlias("CD", \ContentPeer::TABLE_NAME); $arrayCondition = array(); $arrayCondition[] = array(\SubProcessPeer::TAS_PARENT, "CT.CON_ID", \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_CATEGORY", $delimiter . "TAS_TITLE" . $delimiter, \Criteria::EQUAL); $arrayCondition[] = array("CT.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); $criteria2->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); $arrayCondition = array(); $arrayCondition[] = array(\SubProcessPeer::TAS_PARENT, "CD.CON_ID", \Criteria::EQUAL); $arrayCondition[] = array("CD.CON_CATEGORY", $delimiter . "TAS_DESCRIPTION" . $delimiter, \Criteria::EQUAL); $arrayCondition[] = array("CD.CON_LANG", $delimiter . SYS_LANG . $delimiter, \Criteria::EQUAL); $criteria2->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN); $criteria2->add(\SubProcessPeer::PRO_PARENT, $processUid); $criteria2->add(\SubProcessPeer::TAS_PARENT, $row["TAS_UID"]); $rsCriteria2 = \SubProcessPeer::doSelectRS($criteria2); $rsCriteria2->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria2->next(); $row2 = $rsCriteria2->getRow(); if ($process->exists($row2["PRO_UID"])) { $row["TAS_TITLE"] = $row2["TAS_TITLE"]; $row["TAS_DESCRIPTION"] = $row2["TAS_DESCRIPTION"]; } } //Routes $routeType = ""; $arrayRoute = array(); $criteria2 = new \Criteria("workflow"); $criteria2->addAsColumn("ROU_NUMBER", \RoutePeer::ROU_CASE); $criteria2->addSelectColumn(\RoutePeer::ROU_TYPE); $criteria2->addSelectColumn(\RoutePeer::ROU_CONDITION); $criteria2->addAsColumn("TAS_UID", \RoutePeer::ROU_NEXT_TASK); $criteria2->add(\RoutePeer::PRO_UID, $processUid, \Criteria::EQUAL); $criteria2->add(\RoutePeer::TAS_UID, $row["TAS_UID"], \Criteria::EQUAL); $criteria2->addAscendingOrderByColumn("ROU_NUMBER"); $rsCriteria2 = \RoutePeer::doSelectRS($criteria2); $rsCriteria2->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria2->next()) { $row2 = $rsCriteria2->getRow(); $routeType = $row2["ROU_TYPE"]; $arrayRoute[] = array( $this->getFieldNameByFormatFieldName("ROU_NUMBER") => (int)($row2["ROU_NUMBER"]), $this->getFieldNameByFormatFieldName("ROU_CONDITION") => $row2["ROU_CONDITION"] . "", $this->getFieldNameByFormatFieldName("TAS_UID") => $row2["TAS_UID"] ); } //Delegations $arrayAppDelegation = array(); $criteria2 = new \Criteria("workflow"); $criteria2->addSelectColumn(\AppDelegationPeer::DEL_INDEX); $criteria2->addSelectColumn(\AppDelegationPeer::DEL_INIT_DATE); $criteria2->addSelectColumn(\AppDelegationPeer::DEL_TASK_DUE_DATE); $criteria2->addSelectColumn(\AppDelegationPeer::DEL_FINISH_DATE); $criteria2->addSelectColumn(\UsersPeer::USR_UID); $criteria2->addSelectColumn(\UsersPeer::USR_USERNAME); $criteria2->addSelectColumn(\UsersPeer::USR_FIRSTNAME); $criteria2->addSelectColumn(\UsersPeer::USR_LASTNAME); $criteria2->addJoin(\AppDelegationPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN); $criteria2->add(\AppDelegationPeer::APP_UID, $applicationUid, \Criteria::EQUAL); $criteria2->add(\AppDelegationPeer::TAS_UID, $row["TAS_UID"], \Criteria::EQUAL); $criteria2->addAscendingOrderByColumn(\AppDelegationPeer::DEL_INDEX); $rsCriteria2 = \AppDelegationPeer::doSelectRS($criteria2); $rsCriteria2->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria2->next()) { $row2 = $rsCriteria2->getRow(); $arrayAppDelegationDate = array( "DEL_INIT_DATE" => array("date" => $row2["DEL_INIT_DATE"], "dateFormated" => \G::LoadTranslation("ID_CASE_NOT_YET_STARTED")), "DEL_TASK_DUE_DATE" => array("date" => $row2["DEL_TASK_DUE_DATE"], "dateFormated" => \G::LoadTranslation("ID_CASE_NOT_YET_STARTED")), "DEL_FINISH_DATE" => array("date" => $row2["DEL_FINISH_DATE"], "dateFormated" => \G::LoadTranslation("ID_NOT_FINISHED")) ); foreach ($arrayAppDelegationDate as $key => $value) { $d = $value; if (!empty($d["date"])) { $dateTime = new \DateTime($d["date"]); $arrayAppDelegationDate[$key]["dateFormated"] = $dateTime->format($confEnvSetting["dateFormat"]); } } $appDelegationDuration = \G::LoadTranslation("ID_NOT_FINISHED"); if (!empty($row2["DEL_FINISH_DATE"]) && !empty($row2["DEL_INIT_DATE"])) { $t = strtotime($row2["DEL_FINISH_DATE"]) - strtotime($row2["DEL_INIT_DATE"]); $h = $t * (1 / 60) * (1 / 60); $m = ($h - (int)($h)) * (60 / 1); $s = ($m - (int)($m)) * (60 / 1); $h = (int)($h); $m = (int)($m); $appDelegationDuration = $h . " " . (($h == 1)? \G::LoadTranslation("ID_HOUR") : \G::LoadTranslation("ID_HOURS")); $appDelegationDuration = $appDelegationDuration . " " . $m . " " . (($m == 1)? \G::LoadTranslation("ID_MINUTE") : \G::LoadTranslation("ID_MINUTES")); $appDelegationDuration = $appDelegationDuration . " " . $s . " " . (($s == 1)? \G::LoadTranslation("ID_SECOND") : \G::LoadTranslation("ID_SECONDS")); } $arrayAppDelegation[] = array( $this->getFieldNameByFormatFieldName("DEL_INDEX") => (int)($row2["DEL_INDEX"]), $this->getFieldNameByFormatFieldName("DEL_INIT_DATE") => $arrayAppDelegationDate["DEL_INIT_DATE"]["dateFormated"], $this->getFieldNameByFormatFieldName("DEL_TASK_DUE_DATE") => $arrayAppDelegationDate["DEL_TASK_DUE_DATE"]["dateFormated"], $this->getFieldNameByFormatFieldName("DEL_FINISH_DATE") => $arrayAppDelegationDate["DEL_FINISH_DATE"]["dateFormated"], $this->getFieldNameByFormatFieldName("DEL_DURATION") => $appDelegationDuration, $this->getFieldNameByFormatFieldName("USR_UID") => $row2["USR_UID"], $this->getFieldNameByFormatFieldName("USR_USERNAME") => $row2["USR_USERNAME"] . "", $this->getFieldNameByFormatFieldName("USR_FIRSTNAME") => $row2["USR_FIRSTNAME"] . "", $this->getFieldNameByFormatFieldName("USR_LASTNAME") => $row2["USR_LASTNAME"] . "" ); } //Status $status = ""; //$criteria2 $criteria2 = new \Criteria("workflow"); $criteria2->addAsColumn("CANT", "COUNT(" . \AppDelegationPeer::APP_UID . ")"); $criteria2->addAsColumn("FINISH", "MIN(" . \AppDelegationPeer::DEL_FINISH_DATE . ")"); $criteria2->add(\AppDelegationPeer::APP_UID, $applicationUid, \Criteria::EQUAL); $criteria2->add(\AppDelegationPeer::TAS_UID, $row["TAS_UID"], \Criteria::EQUAL); $rsCriteria2 = \AppDelegationPeer::doSelectRS($criteria2); $rsCriteria2->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria2->next(); $row2 = $rsCriteria2->getRow(); //$criteria3 $criteria3 = new \Criteria("workflow"); $criteria3->addSelectColumn(\AppDelegationPeer::DEL_FINISH_DATE); $criteria3->add(\AppDelegationPeer::APP_UID, $applicationUid, \Criteria::EQUAL); $criteria3->add(\AppDelegationPeer::TAS_UID, $row["TAS_UID"], \Criteria::EQUAL); $criteria3->add(\AppDelegationPeer::DEL_FINISH_DATE, null, \Criteria::ISNULL); $rsCriteria3 = \AppDelegationPeer::doSelectRS($criteria3); $rsCriteria3->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $rsCriteria3->next(); $row3 = $rsCriteria3->getRow(); if ($row3) { $row2["FINISH"] = ""; } //Status if (empty($row2["FINISH"]) && !is_null($taskUid) && $row["TAS_UID"] == $taskUid) { $status = "TASK_IN_PROGRESS"; //Red } else { if (!empty($row2["FINISH"])) { $status = "TASK_COMPLETED"; //Green } else { if ($routeType != "SEC-JOIN") { if ($row2["CANT"] != 0) { $status = "TASK_IN_PROGRESS"; //Red } else { $status = "TASK_PENDING_NOT_EXECUTED"; //Gray } } else { //$status = "TASK_PARALLEL"; //Yellow if ($row3) { $status = "TASK_IN_PROGRESS"; //Red } else { $status = "TASK_PENDING_NOT_EXECUTED"; //Gray } } } } //Set data $arrayAux = $this->getTaskDataFromRecord($row); $arrayAux[$this->getFieldNameByFormatFieldName("ROUTE")][$this->getFieldNameByFormatFieldName("TYPE")] = $routeType; $arrayAux[$this->getFieldNameByFormatFieldName("ROUTE")][$this->getFieldNameByFormatFieldName("TO")] = $arrayRoute; $arrayAux[$this->getFieldNameByFormatFieldName("DELEGATIONS")] = $arrayAppDelegation; $arrayAux[$this->getFieldNameByFormatFieldName("STATUS")] = $status; $arrayTask[] = $arrayAux; } //Return return $arrayTask; } catch (\Exception $e) { throw $e; } }
public function kgetassigType($pro_uid, $tas) { $k = new Criteria(); $k->clearSelectColumns(); $k->addSelectColumn(TaskPeer::TAS_UID); $k->addSelectColumn(TaskPeer::TAS_ASSIGN_TYPE); $k->add(TaskPeer::PRO_UID, $pro_uid); $k->add(TaskPeer::TAS_UID, $tas); $rs = TaskPeer::doSelectRS($k); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); return $row; }
public function getTaskPriority($taskUid, $proUid, $appUid) { $criteria = new Criteria(); $criteria->addSelectColumn(TaskPeer::TAS_PRIORITY_VARIABLE); $criteria->add(TaskPeer::TAS_UID, $taskUid, Criteria::EQUAL); $criteria->add(TaskPeer::PRO_UID, $proUid, Criteria::EQUAL); $dataset = TaskPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); $aRow = $dataset->getRow(); $priority = $aRow['TAS_PRIORITY_VARIABLE']; if (strlen($priority) > 2) { $oCase = new Cases(); $aData = $oCase->loadCase($appUid); $priorityLabel = substr($priority, 2, strlen($priority)); if (isset($aData['APP_DATA'][$priorityLabel])) { $priority = $aData['APP_DATA'][$priorityLabel]; } } return $priority != "" ? $priority : 3; }
/** * Get process list bookmark for start case * * @param string $usrUid id of user * @param string $typeView type of view * * return array Return an array with process list that the user can start. */ public function getCasesListBookmarkStarCase($usrUid, $typeView) { try { Validator::usrUid($usrUid, '$usr_uid'); $user = new \Users(); $fields = $user->load($usrUid); $bookmark = empty($fields['USR_BOOKMARK_START_CASES']) ? array() : unserialize($fields['USR_BOOKMARK_START_CASES']); //Getting group id and adding the user id $group = new \Groups(); $groups = $group->getActiveGroupsForAnUser($usrUid); $groups[] = $usrUid; $c = new \Criteria(); $c->clearSelectColumns(); $c->addSelectColumn(\TaskPeer::TAS_UID); $c->addSelectColumn(\TaskPeer::PRO_UID); $c->addJoin(\TaskPeer::PRO_UID, \ProcessPeer::PRO_UID, \Criteria::LEFT_JOIN); $c->addJoin(\TaskPeer::TAS_UID, \TaskUserPeer::TAS_UID, \Criteria::LEFT_JOIN); $c->add(\ProcessPeer::PRO_STATUS, 'ACTIVE'); $c->add(\TaskPeer::TAS_START, 'TRUE'); $c->add(\TaskUserPeer::USR_UID, $groups, \Criteria::IN); $c->add(\TaskPeer::TAS_UID, $bookmark, \Criteria::IN); $c->addAsColumn('TAS_TITLE', 'C1.CON_VALUE'); $c->addAlias("C1", 'CONTENT'); $tasTitleConds = array(); $tasTitleConds[] = array(\TaskPeer::TAS_UID, 'C1.CON_ID'); $tasTitleConds[] = array('C1.CON_CATEGORY', \DBAdapter::getStringDelimiter() . 'TAS_TITLE' . \DBAdapter::getStringDelimiter()); $tasTitleConds[] = array('C1.CON_LANG', \DBAdapter::getStringDelimiter() . SYS_LANG . \DBAdapter::getStringDelimiter()); $c->addJoinMC($tasTitleConds, \Criteria::LEFT_JOIN); $c->addAsColumn('PRO_TITLE', 'C2.CON_VALUE'); $c->addAlias("C2", 'CONTENT'); $proTitleConds = array(); $proTitleConds[] = array(\ProcessPeer::PRO_UID, 'C2.CON_ID'); $proTitleConds[] = array('C2.CON_CATEGORY', \DBAdapter::getStringDelimiter() . 'PRO_TITLE' . \DBAdapter::getStringDelimiter()); $proTitleConds[] = array('C2.CON_LANG', \DBAdapter::getStringDelimiter() . SYS_LANG . \DBAdapter::getStringDelimiter()); $c->addJoinMC($proTitleConds, \Criteria::LEFT_JOIN); if ($typeView == 'category') { $c->addAsColumn('PRO_CATEGORY', 'PCS.PRO_CATEGORY'); $c->addAsColumn('CATEGORY_NAME', 'PCSCAT.CATEGORY_NAME'); $c->addAlias('PCS', 'PROCESS'); $c->addAlias('PCSCAT', 'PROCESS_CATEGORY'); $aConditions = array(); $aConditions[] = array(\TaskPeer::PRO_UID, 'PCS.PRO_UID'); $c->addJoinMC($aConditions, \Criteria::LEFT_JOIN); $aConditions = array(); $aConditions[] = array('PCS.PRO_CATEGORY', 'PCSCAT.CATEGORY_UID'); $c->addJoinMC($aConditions, \Criteria::LEFT_JOIN); } $c->setDistinct(); $rs = \TaskPeer::doSelectRS($c); $rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC); $processList = array(); while ($rs->next()) { $row = $rs->getRow(); if ($typeView == 'category') { $processList[] = array('tas_uid' => $row['TAS_UID'], 'pro_title' => $row['PRO_TITLE'] . '(' . $row['TAS_TITLE'] . ')', 'pro_uid' => $row['PRO_UID'], 'pro_category' => $row['PRO_CATEGORY'], 'category_name' => $row['CATEGORY_NAME']); } else { $processList[] = array('tas_uid' => $row['TAS_UID'], 'pro_title' => $row['PRO_TITLE'] . '(' . $row['TAS_TITLE'] . ')', 'pro_uid' => $row['PRO_UID']); } } if (count($processList) == 0) { $processList['success'] = 'failure'; $processList['message'] = G::LoadTranslation('ID_NOT_HAVE_BOOKMARKED_PROCESSES'); } return $processList; } catch (\Exception $e) { throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } }
/** * newExtObjectPermission * * @param string $sProcessUID * @param string $sAction * @return array depending on action */ function newExtObjectPermission($sProcessUID, $sAction) { $aAllTasks = array(); $aAllTasks[] = array('UID' => 'char', 'LABEL' => 'char'); $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(TaskPeer::PRO_UID); $oCriteria->addSelectColumn(TaskPeer::TAS_UID); $oCriteria->addSelectColumn(ContentPeer::CON_VALUE); $aConditions = array(); $aConditions[] = array(0 => TaskPeer::TAS_UID, 1 => ContentPeer::CON_ID); $aConditions[] = array(0 => ContentPeer::CON_CATEGORY, 1 => DBAdapter::getStringDelimiter() . 'TAS_TITLE' . DBAdapter::getStringDelimiter()); $aConditions[] = array(0 => ContentPeer::CON_LANG, 1 => DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter()); $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); $oCriteria->add(TaskPeer::PRO_UID, $sProcessUID); $oDataset = TaskPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aAllTasks[] = array('UID' => $aRow['TAS_UID'], 'LABEL' => $aRow['CON_VALUE']); $oDataset->next(); } $aUsersGroups = array(); $aUsersGroups[] = array('UID' => 'char', 'LABEL' => 'char'); $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(GroupwfPeer::GRP_UID); $oCriteria->addAsColumn('GRP_TITLE', ContentPeer::CON_VALUE); $aConditions = array(); $aConditions[] = array(GroupwfPeer::GRP_UID, ContentPeer::CON_ID); $aConditions[] = array(ContentPeer::CON_CATEGORY, DBAdapter::getStringDelimiter() . 'GRP_TITLE' . DBAdapter::getStringDelimiter()); $aConditions[] = array(ContentPeer::CON_LANG, DBAdapter::getStringDelimiter() . SYS_LANG . DBAdapter::getStringDelimiter()); $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN); $oCriteria->add(GroupwfPeer::GRP_STATUS, 'ACTIVE'); $oDataset = GroupwfPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aUsersGroups[] = array('UID' => '2|' . $aRow['GRP_UID'], 'LABEL' => $aRow['GRP_TITLE'] . ' (' . G::LoadTranslation('ID_GROUP') . ')'); $oDataset->next(); } $oCriteria = new Criteria('workflow'); $oCriteria->addSelectColumn(UsersPeer::USR_UID); $oCriteria->addSelectColumn(UsersPeer::USR_USERNAME); $oCriteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); $oCriteria->addSelectColumn(UsersPeer::USR_LASTNAME); $oCriteria->add(UsersPeer::USR_STATUS, 'ACTIVE'); $oDataset = UsersPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aUsersGroups[] = array('UID' => '1|' . $aRow['USR_UID'], 'LABEL' => $aRow['USR_FIRSTNAME'] . ' ' . $aRow['USR_LASTNAME'] . ' (' . $aRow['USR_USERNAME'] . ')'); $oDataset->next(); } $aAllObjects = array(); $aAllObjects[] = array('UID' => 'char', 'LABEL' => 'char'); $aAllDynaforms = array(); $aAllDynaforms[] = array('UID' => 'char', 'LABEL' => 'char'); $aAllInputs = array(); $aAllInputs[] = array('UID' => 'char', 'LABEL' => 'char'); $aAllOutputs = array(); $aAllOutputs[] = array('UID' => 'char', 'LABEL' => 'char'); $oCriteria = $this->getDynaformsCriteria($sProcessUID); $oCriteria->add(DynaformPeer::DYN_TYPE, 'XMLFORM'); $oDataset = DynaformPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aRow['DYN_TITLE'] = isset($aRow['DYN_TITLE']) ? $aRow['DYN_TITLE'] : ''; $aAllObjects[] = array('UID' => 'DYNAFORM|' . $aRow['DYN_UID'], 'LABEL' => $aRow['DYN_TITLE'] . ' (' . G::LoadTranslation('ID_DYNAFORM') . ')'); $aAllDynaforms[] = array('UID' => $aRow['DYN_UID'], 'LABEL' => $aRow['DYN_TITLE']); $oDataset->next(); } G::LoadClass('ArrayPeer'); $oDataset = ArrayBasePeer::doSelectRS($this->getInputDocumentsCriteria($sProcessUID)); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aAllObjects[] = array('UID' => 'INPUT_DOCUMENT|' . $aRow['INP_DOC_UID'], 'LABEL' => $aRow['INP_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_INPUT_DOCUMENT') . ')'); $aAllInputs[] = array('UID' => $aRow['INP_DOC_UID'], 'LABEL' => $aRow['INP_DOC_TITLE']); $oDataset->next(); } G::LoadClass('ArrayPeer'); $oDataset = ArrayBasePeer::doSelectRS($this->getOutputDocumentsCriteria($sProcessUID)); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $aAllObjects[] = array('UID' => 'OUTPUT_DOCUMENT|' . $aRow['OUT_DOC_UID'], 'LABEL' => $aRow['OUT_DOC_TITLE'] . ' (' . G::LoadTranslation('ID_OUTPUT_DOCUMENT') . ')'); $aAllOutputs[] = array('UID' => $aRow['OUT_DOC_UID'], 'LABEL' => $aRow['OUT_DOC_TITLE']); $oDataset->next(); } global $_DBArray; $_DBArray = isset($_SESSION['_DBArray']) ? $_SESSION['_DBArray'] : ''; switch ($sAction) { case 'tasks': return $aAllTasks; break; case 'users': return $aUsersGroups; break; case 'dynaform': return $aAllDynaforms; break; case 'input': return $aAllInputs; break; case 'output': return $aAllOutputs; break; } }
public function updateCase($sAppUid, $Fields = array()) { try { $dynContentHistory = ""; if (isset($Fields["APP_DATA"]) && isset($Fields["APP_DATA"]["DYN_CONTENT_HISTORY"])) { $dynContentHistory = $Fields["APP_DATA"]["DYN_CONTENT_HISTORY"]; unset($Fields["APP_DATA"]["DYN_CONTENT_HISTORY"]); } $oApplication = new Application; if (!$oApplication->exists($sAppUid)) { return false; } $aApplicationFields = $Fields['APP_DATA']; $Fields['APP_UID'] = $sAppUid; $Fields['APP_UPDATE_DATE'] = 'now'; $Fields['APP_DATA'] = serialize($Fields['APP_DATA']); /* $oApp = new Application; $appFields = $oApp->load($sAppUid); */ $oApp = ApplicationPeer::retrieveByPk($sAppUid); $appFields = $oApp->toArray(BasePeer::TYPE_FIELDNAME); if (isset($Fields['APP_TITLE'])) { $appFields['APP_TITLE'] = $Fields['APP_TITLE']; } if (isset($Fields['APP_DESCRIPTION'])) { $appFields['APP_DESCRIPTION'] = $Fields['APP_DESCRIPTION']; } $arrayNewCaseTitleAndDescription = $this->newRefreshCaseTitleAndDescription($sAppUid, $appFields, $aApplicationFields); //Start: Save History --By JHL if (isset($Fields['CURRENT_DYNAFORM'])) { //only when that variable is set.. from Save $FieldsBefore = $this->loadCase($sAppUid); $FieldsDifference = $this->arrayRecursiveDiff($FieldsBefore['APP_DATA'], $aApplicationFields); $fieldsOnBoth = @array_intersect_assoc($FieldsBefore['APP_DATA'], $aApplicationFields); //Add fields that weren't in previous version foreach ($aApplicationFields as $key => $value) { if (!(isset($fieldsOnBoth[$key]))) { $FieldsDifference[$key] = $value; } } if ((is_array($FieldsDifference)) && (count($FieldsDifference) > 0)) { //There are changes $Fields['APP_STATUS'] = (isset($Fields['APP_STATUS'])) ? $Fields['APP_STATUS'] : $FieldsBefore['APP_STATUS']; $appHistory = new AppHistory(); $aFieldsHistory = $Fields; $FieldsDifference['DYN_CONTENT_HISTORY'] = $dynContentHistory; $aFieldsHistory['APP_DATA'] = serialize($FieldsDifference); $appHistory->insertHistory($aFieldsHistory); } } //End Save History //we are removing the app_title and app_description from this array, //because they already be updated in newRefreshCaseTitleAndDescription function if (isset($Fields['APP_TITLE'])) { unset($Fields['APP_TITLE']); } if (isset($Fields['APP_DESCRIPTION'])) { unset($Fields['APP_DESCRIPTION']); } if (isset($Fields["APP_STATUS"]) && $Fields["APP_STATUS"] == "COMPLETED") { if (isset($Fields['CURRENT_USER_UID'])) { $Fields['USR_UID'] = $Fields['CURRENT_USER_UID']; } /*----------------------------------********---------------------------------*/ } $oApp->update($Fields); $DEL_INDEX = isset($Fields['DEL_INDEX']) ? $Fields['DEL_INDEX'] : ''; $TAS_UID = isset($Fields['TAS_UID']) ? $Fields['TAS_UID'] : ''; G::LoadClass('reportTables'); require_once 'classes/model/AdditionalTables.php'; $oReportTables = new ReportTables(); $addtionalTables = new additionalTables(); if (!isset($Fields['APP_NUMBER'])) { $Fields['APP_NUMBER'] = $appFields['APP_NUMBER']; } if (!isset($Fields['APP_STATUS'])) { $Fields['APP_STATUS'] = $appFields['APP_STATUS']; } $oReportTables->updateTables($appFields['PRO_UID'], $sAppUid, $Fields['APP_NUMBER'], $aApplicationFields); $addtionalTables->updateReportTables( $appFields['PRO_UID'], $sAppUid, $Fields['APP_NUMBER'], $aApplicationFields, $Fields['APP_STATUS'] ); //now update the priority in appdelegation table, using the defined variable in task if (trim($DEL_INDEX) != '' && trim($TAS_UID) != '') { //optimized code to avoid load task content row. $c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn(TaskPeer::TAS_PRIORITY_VARIABLE); $c->add(TaskPeer::TAS_UID, $TAS_UID); $rs = TaskPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); $VAR_PRI = substr($row['TAS_PRIORITY_VARIABLE'], 2); //end optimized code. $x = unserialize($Fields['APP_DATA']); if (isset($x[$VAR_PRI])) { if (trim($x[$VAR_PRI]) != '') { $oDel = new AppDelegation; $array = array(); $array['APP_UID'] = $sAppUid; $array['DEL_INDEX'] = $DEL_INDEX; $array['TAS_UID'] = $TAS_UID; $array['DEL_PRIORITY'] = (isset($x[$VAR_PRI]) ? ($x[$VAR_PRI] >= 1 && $x[$VAR_PRI] <= 5 ? $x[$VAR_PRI] : '3') : '3'); $oDel->update($array); } } } //Update Solr Index if ($this->appSolr != null) { $this->appSolr->updateApplicationSearchIndex($sAppUid); } if ($Fields["APP_STATUS"] == "COMPLETED") { //Delete records of the table APP_ASSIGN_SELF_SERVICE_VALUE $appAssignSelfServiceValue = new AppAssignSelfServiceValue(); $appAssignSelfServiceValue->remove($sAppUid); } /*----------------------------------********---------------------------------*/ //Return return $Fields; } catch (exception $e) { throw ($e); } }
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; }
public function getSelfServiceCasesByEvaluate($userUid) { $cases = array(); //check groups assigned to SelfService task G::LoadClass('groups'); $group = new Groups(); $aGroups = $group->getActiveGroupsForAnUser($userUid); $c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn(TaskPeer::TAS_UID); $c->addSelectColumn(TaskPeer::PRO_UID); $c->addSelectColumn(TaskPeer::TAS_GROUP_VARIABLE); $c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN); $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); $c->add(TaskPeer::TAS_ASSIGN_TYPE, 'SELF_SERVICE'); $c->add(TaskPeer::TAS_GROUP_VARIABLE, '', Criteria::NOT_EQUAL); $rs = TaskPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); if ($rs->getRecordCount() > 0) { if (!class_exists('Cases')) { G::loadClass('case'); } $caseInstance = new Cases(); while ($row = $rs->getRow()) { $tasGroupVariable = str_replace(array('@', '#'), '', $row['TAS_GROUP_VARIABLE']); $c2 = new Criteria(); $c2->clearSelectColumns(); $c2->addSelectColumn(AppDelegationPeer::APP_UID); $c2->add(AppDelegationPeer::TAS_UID, $row['TAS_UID']); $c2->add(AppDelegationPeer::USR_UID, ''); $c2->add(AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN'); $rs2 = AppDelegationPeer::doSelectRS($c2); $rs2->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs2->next(); while ($row2 = $rs2->getRow()) { $caseData = $caseInstance->LoadCase($row2['APP_UID']); if (isset($caseData['APP_DATA'][$tasGroupVariable])) { if (trim($caseData['APP_DATA'][$tasGroupVariable]) != '') { if (in_array(trim($caseData['APP_DATA'][$tasGroupVariable]), $aGroups)) { $cases[] = $row2['APP_UID']; } } } $rs2->next(); } $rs->next(); } } return $cases; }
/** * Get all tasks for any Process * @param string $sProUid * @return array */ public function getStartingTaskForUser($sProUid, $sUsrUid) { try { $aTasks = array(); $oCriteria = new Criteria('workflow'); $oCriteria->add(TaskPeer::PRO_UID, $sProUid); //$oCriteria->add(TaskPeer::TAS_USER, $sUsrUid); $oCriteria->add(TaskPeer::TAS_START, 'TRUE'); $oDataset = TaskPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oTask = new Task(); $aTasks[] = $oTask->Load($aRow['TAS_UID']); $oDataset->next(); } return $aTasks; } 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 TaskPeer::populateObjects(TaskPeer::doSelectRS($criteria, $con)); }
/** * get user's SelfService tasks * @param string $sUIDUser * @return $rows */ public function getSelfServiceTasks($userUid = '') { $rows[] = array(); $tasks = array(); //check self service tasks assigned directly to this user $c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn(TaskPeer::TAS_UID); $c->addSelectColumn(TaskPeer::PRO_UID); $c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN); $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); $c->add(TaskPeer::TAS_ASSIGN_TYPE, 'SELF_SERVICE'); $c->add(TaskPeer::TAS_GROUP_VARIABLE, ''); $c->add(TaskUserPeer::USR_UID, $userUid); $rs = TaskPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); while (is_array($row)) { $tasks[] = $row['TAS_UID']; $rs->next(); $row = $rs->getRow(); } //check groups assigned to SelfService task G::LoadClass('groups'); $group = new Groups(); $aGroups = $group->getActiveGroupsForAnUser($userUid); $c = new Criteria(); $c->clearSelectColumns(); $c->addSelectColumn(TaskPeer::TAS_UID); $c->addSelectColumn(TaskPeer::PRO_UID); $c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN); $c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN); $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE'); $c->add(TaskPeer::TAS_ASSIGN_TYPE, 'SELF_SERVICE'); $c->add(TaskPeer::TAS_GROUP_VARIABLE, ''); $c->add(TaskUserPeer::USR_UID, $aGroups, Criteria::IN); $rs = TaskPeer::doSelectRS($c); $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC); $rs->next(); $row = $rs->getRow(); while (is_array($row)) { $tasks[] = $row['TAS_UID']; $rs->next(); $row = $rs->getRow(); } return $tasks; }
/** * Create List Completed Table * * @param type $data * @return type * */ public function create($data) { $criteria = new Criteria(); $criteria->addSelectColumn(ListCompletedPeer::APP_UID); $criteria->add( ListCompletedPeer::APP_UID, $data['APP_UID'], Criteria::EQUAL ); $dataset = ListCompletedPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($dataset->next()) { return 1; } $criteria = new Criteria(); $criteria->addSelectColumn(ContentPeer::CON_VALUE); $criteria->add( ContentPeer::CON_ID, $data['APP_UID'], Criteria::EQUAL ); $criteria->add( ContentPeer::CON_CATEGORY, 'APP_TITLE', Criteria::EQUAL ); $criteria->add( ContentPeer::CON_LANG, SYS_LANG, Criteria::EQUAL ); $dataset = ContentPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); $aRow = $dataset->getRow(); $data['APP_TITLE'] = $aRow['CON_VALUE']; $criteria = new Criteria(); $criteria->addSelectColumn(ContentPeer::CON_VALUE); $criteria->add( ContentPeer::CON_ID, $data['PRO_UID'], Criteria::EQUAL ); $criteria->add( ContentPeer::CON_CATEGORY, 'PRO_TITLE', Criteria::EQUAL ); $criteria->add( ContentPeer::CON_LANG, SYS_LANG, Criteria::EQUAL ); $dataset = ContentPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); $aRow = $dataset->getRow(); $data['APP_PRO_TITLE'] = $aRow['CON_VALUE']; $criteria = new Criteria(); $criteria->addSelectColumn(ContentPeer::CON_VALUE); $criteria->add( ContentPeer::CON_ID, $data['TAS_UID'], Criteria::EQUAL ); $criteria->add( ContentPeer::CON_CATEGORY, 'TAS_TITLE', Criteria::EQUAL ); $criteria->add( ContentPeer::CON_LANG, SYS_LANG, Criteria::EQUAL ); $dataset = ContentPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); $aRow = $dataset->getRow(); $data['APP_TAS_TITLE'] = $aRow['CON_VALUE']; $criteria = new Criteria(); $criteria->addSelectColumn(UsersPeer::USR_USERNAME); $criteria->addSelectColumn(UsersPeer::USR_FIRSTNAME); $criteria->addSelectColumn(UsersPeer::USR_LASTNAME); $criteria->add( UsersPeer::USR_UID, $data['USR_UID'], Criteria::EQUAL ); $dataset = UsersPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); $aRow = $dataset->getRow(); $data['DEL_CURRENT_USR_USERNAME'] = $aRow['USR_USERNAME']; $data['DEL_CURRENT_USR_FIRSTNAME'] = $aRow['USR_FIRSTNAME']; $data['DEL_CURRENT_USR_LASTNAME'] = $aRow['USR_LASTNAME']; $data['DEL_PREVIOUS'] = isset($data['DEL_PREVIOUS']) ? $data['DEL_PREVIOUS'] : ""; if ($data['DEL_PREVIOUS'] != 0) { $criteria = new Criteria(); $criteria->addSelectColumn(AppDelegationPeer::USR_UID); $criteria->add( AppDelegationPeer::DEL_INDEX, $data['DEL_PREVIOUS'], Criteria::EQUAL ); $dataset = UsersPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); $aRow = $dataset->getRow(); $data['DEL_PREVIOUS_USR_UID'] = $aRow['USR_UID']; } //Update - WHERE $criteriaWhere = new Criteria("workflow"); $criteriaWhere->add(ListParticipatedLastPeer::APP_UID, $data["APP_UID"], Criteria::EQUAL); //Update - SET $criteriaSet = new Criteria("workflow"); $criteriaSet->add(ListParticipatedLastPeer::APP_STATUS, 'COMPLETED'); BasePeer::doUpdate($criteriaWhere, $criteriaSet, Propel::getConnection("workflow")); $users = new Users(); $users->refreshTotal($data['USR_UID'], 'add', 'completed'); if ($data['DEL_PREVIOUS'] != 0) { $criteria = new Criteria(); $criteria->addSelectColumn(TaskPeer::TAS_TYPE); $criteria->add( TaskPeer::TAS_UID, $data['TAS_UID'], Criteria::EQUAL ); $dataset = TaskPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $dataset->next(); $aRow = $dataset->getRow(); if ($aRow['TAS_TYPE'] != 'SUBPROCESS') { $users->refreshTotal($data['USR_UID'], 'remove', 'inbox'); } } else { $criteria = new Criteria(); $criteria->addSelectColumn(SubApplicationPeer::APP_UID); $criteria->add( SubApplicationPeer::APP_UID, $data['APP_UID'], Criteria::EQUAL ); $dataset = SubApplicationPeer::doSelectRS($criteria); $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); if ($dataset->next()) { $users->refreshTotal($data['USR_UID'], 'remove', 'inbox'); } else { $users->refreshTotal($data['USR_UID'], 'remove', 'draft'); } } $con = Propel::getConnection( ListCompletedPeer::DATABASE_NAME ); try { $this->fromArray( $data, BasePeer::TYPE_FIELDNAME ); if ($this->validate()) { $result = $this->save(); } else { $e = new Exception( "Failed Validation in class " . get_class( $this ) . "." ); $e->aValidationFailures = $this->getValidationFailures(); throw ($e); } $con->commit(); return $result; } catch(Exception $e) { $con->rollback(); throw ($e); } }
$oDataset = StagePeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow1 = $oDataset->getRow()) { $oStage = new stdclass(); $oStage->uid = $aRow1['STG_UID']; $oStage->label = strip_tags($aRow1['CON_VALUE']); $oStage->position = new stdclass(); $oStage->position->x = (int) $aRow1['STG_POSX']; $oStage->position->y = (int) $aRow1['STG_POSY']; $oStage->derivation = new stdclass(); $oStage->derivation->to = array(); if (!$oData->mode) { $oCriteria = new Criteria('workflow'); $oCriteria->add(TaskPeer::STG_UID, $aRow1['STG_UID']); $oDataset1 = TaskPeer::doSelectRS($oCriteria); $oDataset1->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset1->next(); $aTasks = array(); while ($aRow2 = $oDataset1->getRow()) { $aTasks[] = $aRow2['TAS_UID']; $oDataset1->next(); } $oCriteria = new Criteria('workflow'); $oCriteria->add(AppDelegationPeer::APP_UID, $_SESSION['APPLICATION']); $oCriteria->add(AppDelegationPeer::TAS_UID, $aTasks, Criteria::IN); $oCriteria->add($oCriteria->getNewCriterion(AppDelegationPeer::DEL_FINISH_DATE, null, Criteria::ISNULL)->addOr($oCriteria->getNewCriterion(AppDelegationPeer::DEL_FINISH_DATE, ''))); if (AppDelegationPeer::doCount($oCriteria) > 0) { $oStage->color = '#FF0000'; } else { $oCriteria = new Criteria('workflow');
public function getTaskDescription () { $c = new Criteria( 'workflow' ); $c->clearSelectColumns(); $c->addSelectColumn( TaskPeer::TAS_UID ); $oDataset = TaskPeer::doSelectRS( $c ); $oDataset->setFetchmode( ResultSet::FETCHMODE_ASSOC ); $oDataset->next(); $aRows = Array (); while ($aRow = $oDataset->getRow()) { $aRows[] = $aRow; $oDataset->next(); } foreach ($aRows as $k => $aRow) { $oTask = new Task(); $aTaskRow = $oTask->load( $aRow['TAS_UID'] ); $aRows[$k] = array_merge( $aRow, array ('TAS_TITLE' => $aTaskRow['TAS_TITLE'] ), array ('PRO_UID' => $aTaskRow['PRO_UID'] ) ); } return $aRows; }
public function deleteProcess($sProcessUID, $flagRemoveCases = true) { try { //G::LoadClass('case'); //G::LoadClass('reportTables'); //Instance all classes necesaries $oProcess = new \Process(); $oDynaform = new \Dynaform(); $oInputDocument = new \InputDocument(); $oOutputDocument = new \OutputDocument(); $oTrigger = new \Triggers(); $oRoute = new \Route(); $oGateway = new \Gateway(); $oEvent = new \Event(); $oSwimlaneElement = new \SwimlanesElements(); $oConfiguration = new \Configuration(); $oDbSource = new \DbSource(); $oReportTable = new \ReportTables(); $oCaseTracker = new \CaseTracker(); $oCaseTrackerObject = new \CaseTrackerObject(); //Update PROCESS_FILES_CHECKED $configuration = \ConfigurationPeer::retrieveByPK("PROCESS_FILES_CHECKED", "", "", "", ""); if (!is_null($configuration)) { $arrayProjectUid = unserialize($configuration->getCfgValue()); unset($arrayProjectUid[$sProcessUID]); $conf = new \Configuration(); $result = $conf->update(array("CFG_UID" => "PROCESS_FILES_CHECKED", "OBJ_UID" => "", "CFG_VALUE" => serialize($arrayProjectUid), "PRO_UID" => "", "USR_UID" => "", "APP_UID" => "")); } //Delete the applications of process if ($flagRemoveCases) { $case = new \Cases(); $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\ApplicationPeer::APP_UID); $criteria->add(\ApplicationPeer::PRO_UID, $sProcessUID, \Criteria::EQUAL); $rsCriteria = \ApplicationPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $result = $case->removeCase($row["APP_UID"]); } } //Delete the tasks of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\TaskPeer::PRO_UID, $sProcessUID); $oDataset = \TaskPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { //$this->deleteTask($aRow['TAS_UID']); $oTasks = new \Tasks(); $oTasks->deleteTask($aRow['TAS_UID']); $oDataset->next(); } //Delete the dynaforms of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\DynaformPeer::PRO_UID, $sProcessUID); $oDataset = \DynaformPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oDynaform->remove($aRow['DYN_UID']); $oDataset->next(); } //Delete the input documents of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\InputDocumentPeer::PRO_UID, $sProcessUID); $oDataset = \InputDocumentPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oInputDocument->remove($aRow['INP_DOC_UID']); $oDataset->next(); } //Delete the output documents of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\OutputDocumentPeer::PRO_UID, $sProcessUID); $oDataset = \OutputDocumentPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oOutputDocument->remove($aRow['OUT_DOC_UID']); $oDataset->next(); } //Delete the triggers of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\TriggersPeer::PRO_UID, $sProcessUID); $oDataset = \TriggersPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oTrigger->remove($aRow['TRI_UID']); $oDataset->next(); } //Delete the routes of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\RoutePeer::PRO_UID, $sProcessUID); $oDataset = \RoutePeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oRoute->remove($aRow['ROU_UID']); $oDataset->next(); } //Delete the gateways of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\GatewayPeer::PRO_UID, $sProcessUID); $oDataset = \GatewayPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oGateway->remove($aRow['GAT_UID']); $oDataset->next(); } //Delete the Event of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\EventPeer::PRO_UID, $sProcessUID); $oDataset = \EventPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oEvent->remove($aRow['EVN_UID']); $oDataset->next(); } //Delete the swimlanes elements of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\SwimlanesElementsPeer::PRO_UID, $sProcessUID); $oDataset = \SwimlanesElementsPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oSwimlaneElement->remove($aRow['SWI_UID']); $oDataset->next(); } //Delete the configurations of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\ConfigurationPeer::PRO_UID, $sProcessUID); $oDataset = \ConfigurationPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oConfiguration->remove($aRow['CFG_UID'], $aRow['OBJ_UID'], $aRow['PRO_UID'], $aRow['USR_UID'], $aRow['APP_UID']); $oDataset->next(); } //Delete the DB sources of process $oCriteria = new Criteria('workflow'); $oCriteria->add(\DbSourcePeer::PRO_UID, $sProcessUID); $oDataset = \DbSourcePeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { /** * note added by gustavo cruz gustavo-at-colosa-dot-com 27-01-2010 * in order to solve the bug 0004389, we use the validation function Exists * inside the remove function in order to verify if the DbSource record * exists in the Database, however there is a strange behavior within the * propel engine, when the first record is erased somehow the "_deleted" * attribute of the next row is set to true, so when propel tries to erase * it, obviously it can't and trows an error. With the "Exist" function * we ensure that if there is the record in the database, the _delete attribute must be false. * * note added by gustavo cruz gustavo-at-colosa-dot-com 28-01-2010 * I have just identified the source of the issue, when is created a $oDbSource DbSource object * it's used whenever a record is erased or removed in the db, however the problem * it's that the same object is used every time, and the delete method invoked * sets the _deleted attribute to true when its called, of course as we use * the same object, the first time works fine but trowns an error with the * next record, cos it's the same object and the delete method checks if the _deleted * attribute it's true or false, the attrib _deleted is setted to true the * first time and later is never changed, the issue seems to be part of * every remove function in the model classes, not only DbSource * i recommend that a more general solution must be achieved to resolve * this issue in every model class, to prevent future problems. */ $oDbSource->remove($aRow['DBS_UID'], $sProcessUID); $oDataset->next(); } //Delete the supervisors $oCriteria = new Criteria('workflow'); $oCriteria->add(\ProcessUserPeer::PRO_UID, $sProcessUID); \ProcessUserPeer::doDelete($oCriteria); //Delete the object permissions $oCriteria = new Criteria('workflow'); $oCriteria->add(\ObjectPermissionPeer::PRO_UID, $sProcessUID); \ObjectPermissionPeer::doDelete($oCriteria); //Delete the step supervisors $oCriteria = new Criteria('workflow'); $oCriteria->add(\StepSupervisorPeer::PRO_UID, $sProcessUID); \StepSupervisorPeer::doDelete($oCriteria); //Delete the report tables $oCriteria = new Criteria('workflow'); $oCriteria->add(\ReportTablePeer::PRO_UID, $sProcessUID); $oDataset = \ReportTablePeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); while ($aRow = $oDataset->getRow()) { $oReportTable->deleteReportTable($aRow['REP_TAB_UID']); $oDataset->next(); } //Delete case tracker configuration $oCaseTracker->remove($sProcessUID); //Delete case tracker objects $oCriteria = new Criteria('workflow'); $oCriteria->add(\CaseTrackerObjectPeer::PRO_UID, $sProcessUID); \ProcessUserPeer::doDelete($oCriteria); //Delete SubProcess $criteria = new \Criteria("workflow"); $criteria->add(\SubProcessPeer::PRO_PARENT, $sProcessUID, \Criteria::EQUAL); $result = \SubProcessPeer::doDelete($criteria); //Delete WebEntries $webEntry = new \ProcessMaker\BusinessModel\WebEntry(); $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\WebEntryPeer::WE_UID); $criteria->add(\WebEntryPeer::PRO_UID, $sProcessUID, \Criteria::EQUAL); $rsCriteria = \WebEntryPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $webEntry->delete($row["WE_UID"]); } //Delete WebEntry-Events $webEntryEvent = new \ProcessMaker\BusinessModel\WebEntryEvent(); $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\WebEntryEventPeer::WEE_UID); $criteria->add(\WebEntryEventPeer::PRJ_UID, $sProcessUID, \Criteria::EQUAL); $rsCriteria = \WebEntryEventPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $webEntryEvent->delete($row["WEE_UID"]); } //Delete MessageTypes $messageType = new \ProcessMaker\BusinessModel\MessageType(); $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\MessageTypePeer::MSGT_UID); $criteria->add(\MessageTypePeer::PRJ_UID, $sProcessUID, \Criteria::EQUAL); $rsCriteria = \MessageTypePeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $messageType->delete($row["MSGT_UID"]); } //Delete Message-Event-Relation $messageEventRelation = new \ProcessMaker\BusinessModel\MessageEventRelation(); $messageEventRelation->deleteWhere(array(\MessageEventRelationPeer::PRJ_UID => $sProcessUID)); //Delete Message-Event-Task-Relation $elementTaskRelation = new \ProcessMaker\BusinessModel\ElementTaskRelation(); $elementTaskRelation->deleteWhere(array(\ElementTaskRelationPeer::PRJ_UID => $sProcessUID)); //Delete Message-Event-Definition $messageEventDefinition = new \ProcessMaker\BusinessModel\MessageEventDefinition(); $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\MessageEventDefinitionPeer::MSGED_UID); $criteria->add(\MessageEventDefinitionPeer::PRJ_UID, $sProcessUID, \Criteria::EQUAL); $rsCriteria = \MessageEventDefinitionPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $messageEventDefinition->delete($row["MSGED_UID"]); } //Delete Script-Task $scriptTask = new \ProcessMaker\BusinessModel\ScriptTask(); $scriptTask->deleteWhere(array(\ScriptTaskPeer::PRJ_UID => array($sProcessUID, \Criteria::EQUAL))); //Delete Timer-Event $timerEvent = new \ProcessMaker\BusinessModel\TimerEvent(); $timerEvent->deleteWhere(array(\TimerEventPeer::PRJ_UID => array($sProcessUID, \Criteria::EQUAL))); //Delete Email-Event $emailEvent = new \ProcessMaker\BusinessModel\EmailEvent(); $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\EmailEventPeer::EMAIL_EVENT_UID); $criteria->add(\EmailEventPeer::PRJ_UID, $sProcessUID, \Criteria::EQUAL); $rsCriteria = \EmailEventPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $emailEvent->delete($sProcessUID, $row["EMAIL_EVENT_UID"], false); } //Delete files Manager $filesManager = new \ProcessMaker\BusinessModel\FilesManager(); $criteria = new \Criteria("workflow"); $criteria->addSelectColumn(\ProcessFilesPeer::PRF_UID); $criteria->add(\ProcessFilesPeer::PRO_UID, $sProcessUID, \Criteria::EQUAL); $rsCriteria = \ProcessFilesPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); $filesManager->deleteProcessFilesManager($sProcessUID, $row["PRF_UID"]); } //Delete the actions by email $oCriteria = new Criteria('workflow'); $oCriteria->add(\AbeConfigurationPeer::PRO_UID, $sProcessUID); \AbeConfigurationPeer::doDelete($oCriteria); //Delete the process try { $oProcess->remove($sProcessUID); } catch (\Exception $oError) { throw $oError; } return true; } catch (\Exception $oError) { throw $oError; } }
function lookinginforContentProcess($sproUid) { require_once 'classes/model/Content.php'; require_once 'classes/model/Task.php'; require_once 'classes/model/Content.php'; $oContent = new Content(); ///we are looking for a pro title for this process $sproUid $oCriteria = new Criteria('workflow'); $oCriteria->add(ContentPeer::CON_CATEGORY, 'PRO_TITLE'); $oCriteria->add(ContentPeer::CON_LANG, 'en'); $oCriteria->add(ContentPeer::CON_ID, $sproUid); $oDataset = ContentPeer::doSelectRS($oCriteria); $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset->next(); $aRow = $oDataset->getRow(); if (!is_array($aRow)) { $oC = new Criteria('workflow'); $oC->addSelectColumn(TaskPeer::TAS_UID); $oC->add(TaskPeer::PRO_UID, $sproUid); $oDataset1 = TaskPeer::doSelectRS($oC); $oDataset1->setFetchmode(ResultSet::FETCHMODE_ASSOC); while ($oDataset1->next()) { $aRow1 = $oDataset1->getRow(); $oCriteria1 = new Criteria('workflow'); $oCriteria1->add(ContentPeer::CON_CATEGORY, 'TAS_TITLE'); $oCriteria1->add(ContentPeer::CON_LANG, SYS_LANG); $oCriteria1->add(ContentPeer::CON_ID, $aRow1['TAS_UID']); $oDataset2 = ContentPeer::doSelectRS($oCriteria1); $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset2->next(); $aRow2 = $oDataset2->getRow(); Content::insertContent('TAS_TITLE', '', $aRow2['CON_ID'], 'en', $aRow2['CON_VALUE']); } $oC2 = new Criteria('workflow'); $oC2->add(ContentPeer::CON_CATEGORY, 'PRO_TITLE'); $oC2->add(ContentPeer::CON_LANG, SYS_LANG); $oC2->add(ContentPeer::CON_ID, $sproUid); $oDataset3 = ContentPeer::doSelectRS($oC2); $oDataset3->setFetchmode(ResultSet::FETCHMODE_ASSOC); $oDataset3->next(); $aRow3 = $oDataset3->getRow(); Content::insertContent('PRO_TITLE', '', $aRow3['CON_ID'], 'en', $aRow3['CON_VALUE']); } return 1; }
public static function doCountJoinAllExceptsfGuardUser(Criteria $criteria, $distinct = false, $con = null) { $criteria = clone $criteria; $criteria->clearSelectColumns()->clearOrderByColumns(); if ($distinct || in_array(Criteria::DISTINCT, $criteria->getSelectModifiers())) { $criteria->addSelectColumn(TaskPeer::COUNT_DISTINCT); } else { $criteria->addSelectColumn(TaskPeer::COUNT); } foreach ($criteria->getGroupByColumns() as $column) { $criteria->addSelectColumn($column); } $criteria->addJoin(TaskPeer::PROJECT_ID, ProjectPeer::ID); $rs = TaskPeer::doSelectRS($criteria, $con); if ($rs->next()) { return $rs->getInt(1); } else { return 0; } }