/**
  * Implementation for 'GET' method for Rest API
  *
  * @param  mixed $opUid Primary key
  *
  * @return array $result Returns array within multiple records or a single record depending if
  *                       a single selection was requested passing id(s) as param
  */
 protected function get($opUid = null)
 {
     $result = array();
     try {
         $noArguments = true;
         $argumentList = func_get_args();
         foreach ($argumentList as $arg) {
             if (!is_null($arg)) {
                 $noArguments = false;
             }
         }
         if ($noArguments) {
             $criteria = new Criteria('workflow');
             $criteria->addSelectColumn(ObjectPermissionPeer::OP_UID);
             $criteria->addSelectColumn(ObjectPermissionPeer::PRO_UID);
             $criteria->addSelectColumn(ObjectPermissionPeer::TAS_UID);
             $criteria->addSelectColumn(ObjectPermissionPeer::USR_UID);
             $criteria->addSelectColumn(ObjectPermissionPeer::OP_USER_RELATION);
             $criteria->addSelectColumn(ObjectPermissionPeer::OP_TASK_SOURCE);
             $criteria->addSelectColumn(ObjectPermissionPeer::OP_PARTICIPATE);
             $criteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_TYPE);
             $criteria->addSelectColumn(ObjectPermissionPeer::OP_OBJ_UID);
             $criteria->addSelectColumn(ObjectPermissionPeer::OP_ACTION);
             $criteria->addSelectColumn(ObjectPermissionPeer::OP_CASE_STATUS);
             $dataset = AppEventPeer::doSelectRS($criteria);
             $dataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
             while ($dataset->next()) {
                 $result[] = $dataset->getRow();
             }
         } else {
             $record = ObjectPermissionPeer::retrieveByPK($opUid);
             if ($record) {
                 $result = $record->toArray(BasePeer::TYPE_FIELDNAME);
             } else {
                 $paramValues = "";
                 foreach ($argumentList as $arg) {
                     $paramValues .= strlen($paramValues) ? ', ' : '';
                     if (!is_null($arg)) {
                         $paramValues .= "{$arg}";
                     } else {
                         $paramValues .= "NULL";
                     }
                 }
                 throw new RestException(417, "table ObjectPermission ({$paramValues})");
             }
         }
     } catch (RestException $e) {
         throw new RestException($e->getCode(), $e->getMessage());
     } catch (Exception $e) {
         throw new RestException(412, $e->getMessage());
     }
     return $result;
 }
Example #2
0
    /**

     * 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);

        }

    }
Example #3
0
    /**

     * Obtain all user permits for Dynaforms, Input and output documents from some action [VIEW, BLOCK, etc...]

     *

     * function getAllObjectsFrom ($PRO_UID, $APP_UID, $TAS_UID, $USR_UID, $ACTION)

     * @author Erik Amaru Ortiz <*****@*****.**>

     * @access public

     * @param  Process ID, Application ID, Task ID, User ID, Action, Delegation index

     * @return Array within all user permitions all objects' types

     */

    public function getAllObjectsFrom($PRO_UID, $APP_UID, $TAS_UID = "", $USR_UID = "", $ACTION = "", $delIndex = 0)

    {

        $aCase = $this->loadCase($APP_UID);



        if ($delIndex != 0) {

            $appDelay = new AppDelay();



            if ($appDelay->isPaused($APP_UID, $delIndex)) {

                $aCase["APP_STATUS"] = "PAUSED";

            }

        }



        $USER_PERMISSIONS = Array();

        $GROUP_PERMISSIONS = Array();

        $RESULT = Array(

            "DYNAFORM" => Array(),

            "INPUT" => Array(),

            "OUTPUT" => Array(),

            "CASES_NOTES" => 0,

            "MSGS_HISTORY" => Array()

        	/*----------------------------------********---------------------------------*/

        );



        //permissions per user

        $oCriteria = new Criteria('workflow');

        $oCriteria->add(

                $oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, $USR_UID)->addOr(

                        $oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '')->addOr(

                                $oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '0')

                        )

                )

        );

        $oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);

        $oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);

        $oCriteria->add(

                $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr(

                        $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr(

                                $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0')

                        )

                )

        );



        $rs = ObjectPermissionPeer::doSelectRS($oCriteria);

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



        while ($rs->next()) {

            $row = $rs->getRow();



            if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" ||

                $row["OP_CASE_STATUS"] == $aCase["APP_STATUS"]

            ) {

                array_push($USER_PERMISSIONS, $row);

            }

        }



        //permissions per group

        G::loadClass('groups');



        $gr = new Groups();

        $records = $gr->getActiveGroupsForAnUser($USR_UID);



        foreach ($records as $group) {

            $oCriteria = new Criteria('workflow');

            $oCriteria->add(ObjectPermissionPeer::USR_UID, $group);

            $oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);

            $oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);

            $oCriteria->add(

                    $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr(

                            $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr(

                                    $oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0')

                            )

                    )

            );



            $rs = ObjectPermissionPeer::doSelectRS($oCriteria);

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

            while ($rs->next()) {

                $row = $rs->getRow();



                if ($row["OP_CASE_STATUS"] == "ALL" || $row["OP_CASE_STATUS"] == "" || $row["OP_CASE_STATUS"] == "0" ||

                    $row["OP_CASE_STATUS"] == $aCase["APP_STATUS"]

                ) {

                    array_push($GROUP_PERMISSIONS, $row);

                }

            }

        }



        $PERMISSIONS = array_merge($USER_PERMISSIONS, $GROUP_PERMISSIONS);



        foreach ($PERMISSIONS as $row) {

            $USER = $row['USR_UID'];

            $USER_RELATION = $row['OP_USER_RELATION'];

            $TASK_SOURCE = $row['OP_TASK_SOURCE'];

            $PARTICIPATE = $row['OP_PARTICIPATE'];

            $O_TYPE = $row['OP_OBJ_TYPE'];

            $O_UID = $row['OP_OBJ_UID'];

            $ACTION = $row['OP_ACTION'];

            $CASE_STATUS = $row['OP_CASE_STATUS'];



            // here!,. we should verify $PARTICIPATE

            $sw_participate = false; // must be false for default

            if (($row['OP_CASE_STATUS'] != 'COMPLETED') && ($row['OP_CASE_STATUS'] != '') && ($row['OP_CASE_STATUS'] != '0')) {

                if ($PARTICIPATE == 1) {

                    $oCriteriax = new Criteria('workflow');

                    $oCriteriax->add(AppDelegationPeer::USR_UID, $USR_UID);

                    $oCriteriax->add(AppDelegationPeer::APP_UID, $APP_UID);



                    if (AppDelegationPeer::doCount($oCriteriax) == 0) {

                        $sw_participate = true;

                    }

                }

            }

            if (!$sw_participate) {

                switch ($O_TYPE) {

                    case 'ANY':

                        //for dynaforms

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);

                        $oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);

                        $oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                $oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');

                        $oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);

                        $oCriteria->setDistinct();



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

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

                        $oDataset->next();



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

                            if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {

                                array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);

                            }

                            $oDataset->next();

                        }



                        //InputDocuments and OutputDocuments

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);



                        $arrayCondition = array();

                        $arrayCondition[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID, Criteria::EQUAL);

                        $arrayCondition[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX, Criteria::EQUAL);

                        $oCriteria->addJoinMC($arrayCondition, Criteria::LEFT_JOIN);



                        $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                        $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        $oCriteria->add(

                                $oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'INPUT')->

                                        addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT'))->

                                        addOr($oCriteria->

                                                getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED'))

                        );



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

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



                        while ($oDataset->next()) {

                            $aRow = $oDataset->getRow();



                            if ($aRow['APP_DOC_TYPE'] == "ATTACHED") {

                                $aRow['APP_DOC_TYPE'] = "INPUT";

                            }

                            if (!in_array($aRow['APP_DOC_UID'], $RESULT[$aRow['APP_DOC_TYPE']])) {

                                array_push($RESULT[$aRow['APP_DOC_TYPE']], $aRow['APP_DOC_UID']);

                            }

                        }



                        $RESULT['CASES_NOTES'] = 1;

                        /*----------------------------------********---------------------------------*/



                        // Message History

                        $RESULT['MSGS_HISTORY'] = array('PERMISSION' => $ACTION);



                        $arrayDelIndex = array();



                        $oCriteria = new Criteria('workflow');

                        if ($USER_RELATION == 1) {

                            //Users

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }

                            $oCriteria->add(AppDelegationPeer::USR_UID, $USER);



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

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

                            $oDataset->next();

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

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        } else {

                            //Groups

                            $oCriteria->addJoin(GroupUserPeer::USR_UID, AppDelegationPeer::USR_UID, Criteria::LEFT_JOIN);

                            $oCriteria->add(GroupUserPeer::GRP_UID, $USER);

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }



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

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

                            $oDataset->next();

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

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        }

                        $RESULT["MSGS_HISTORY"] = array_merge(array("DEL_INDEX" => $arrayDelIndex), $RESULT["MSGS_HISTORY"]);

                        break;

                    case 'DYNAFORM':

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0") {

                                $oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        if ($O_UID != '' && $O_UID != '0') {

                            $oCriteria->add(DynaformPeer::DYN_UID, $O_UID);

                        }

                        $oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);

                        $oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);

                        $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');

                        $oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);

                        $oCriteria->setDistinct();



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

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

                        $oDataset->next();



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

                            if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {

                                array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);

                            }

                            $oDataset->next();

                        }

                        break;

                    case 'INPUT':

                    case 'OUTPUT':

                        if ($row['OP_OBJ_TYPE'] == 'INPUT') {

                            $obj_type = 'INPUT';

                        } else {

                            $obj_type = 'OUTPUT';

                        }

                        $oCriteria = new Criteria('workflow');

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);

                        $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);

                        $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                        $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                        if ($aCase['APP_STATUS'] != 'COMPLETED') {

                            if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                            }

                        }

                        if ($O_UID != '' && $O_UID != '0') {

                            $oCriteria->add(AppDocumentPeer::DOC_UID, $O_UID);

                        }

                        if ($obj_type == 'INPUT') {

                            $oCriteria->add(

                                    $oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, $obj_type)->

                                            addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED'))

                            );

                        } else {

                            $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, $obj_type);

                        }



                        $aConditions = Array();

                        $aConditions[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID);

                        $aConditions[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX);

                        $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);



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

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

                        $oDataset->next();

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

                            if (!in_array($aRow['APP_DOC_UID'], $RESULT[$obj_type])) {

                                array_push($RESULT[$obj_type], $aRow['APP_DOC_UID']);

                            }

                            $oDataset->next();

                        }

                        if ($obj_type == 'INPUT') {

                            // For supervisor documents

                            $oCriteria = new Criteria('workflow');

                            $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);

                            $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);

                            $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(ApplicationPeer::PRO_UID, $PRO_UID);

                            if ($O_UID != '' && $O_UID != '0') {

                                $oCriteria->add(AppDocumentPeer::DOC_UID, $O_UID);

                            }

                            $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, 'INPUT');

                            $oCriteria->add(AppDocumentPeer::DEL_INDEX, 100000);



                            $oCriteria->addJoin(ApplicationPeer::APP_UID, AppDocumentPeer::APP_UID, Criteria::LEFT_JOIN);



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

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

                            $oDataset->next();

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

                                if (!in_array($aRow['APP_DOC_UID'], $RESULT['INPUT'])) {

                                    array_push($RESULT['INPUT'], $aRow['APP_DOC_UID']);

                                }

                                $oDataset->next();

                            }

                        }

                        break;

                    case 'CASES_NOTES':

                        $RESULT['CASES_NOTES'] = 1;

                        break;

                    /*----------------------------------********---------------------------------*/

                    case 'MSGS_HISTORY':

                        // Permission

                        $RESULT['MSGS_HISTORY'] = array('PERMISSION' => $ACTION);

                        $arrayDelIndex = array();

                        $oCriteria = new Criteria('workflow');

                        if ($USER_RELATION == 1) {

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }

                            $oCriteria->add(AppDelegationPeer::USR_UID, $USER);

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

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

                            $oDataset->next();

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

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        } else {

                            //Groups

                            $oCriteria->addJoin(GroupUserPeer::USR_UID, AppDelegationPeer::USR_UID, Criteria::LEFT_JOIN);

                            $oCriteria->add(GroupUserPeer::GRP_UID, $USER);

                            $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);

                            $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);

                            if ($aCase['APP_STATUS'] != 'COMPLETED') {

                                if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {

                                    $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);

                                }

                            }

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

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

                            $oDataset->next();

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

                                $arrayDelIndex[] = $aRow["DEL_INDEX"];

                                $oDataset->next();

                            }

                        }

                        $RESULT["MSGS_HISTORY"] = array_merge(array("DEL_INDEX" => $arrayDelIndex), $RESULT["MSGS_HISTORY"]);

                        break;



                }

            }

        }

        return Array(

            "DYNAFORMS" => $RESULT['DYNAFORM'],

            "INPUT_DOCUMENTS" => $RESULT['INPUT'],

            "OUTPUT_DOCUMENTS" => $RESULT['OUTPUT'],

            "CASES_NOTES" => $RESULT['CASES_NOTES'],

            "MSGS_HISTORY" => $RESULT['MSGS_HISTORY']

        	/*----------------------------------********---------------------------------*/

        );

    }
Example #4
0
 /**
  * Check if the user has permissions
  *
  * @param string $applicationUid   Unique id of Case
  * @param string $delIndex         Delegataion index
  * @param string $userUid          Unique id of User
  * @param string $inputDocumentUid
  *
  * return void Throw exception the user does not have permission to delete
  */
 public function throwExceptionIfHaventPermissionToDelete($applicationUid, $delIndex, $userUid, $appDocumentUid)
 {
     try {
         //Verify data inbox
         $case = new \ProcessMaker\BusinessModel\Cases();
         $arrayResult = $case->getStatusInfo($applicationUid, $delIndex, $userUid);
         $flagInbox = 1;
         if (empty($arrayResult) || !preg_match("/^(?:TO_DO|DRAFT)\$/", $arrayResult["APP_STATUS"])) {
             $flagInbox = 0;
         }
         //Verify data Supervisor
         $application = \ApplicationPeer::retrieveByPK($applicationUid);
         $flagSupervisor = 0;
         $supervisor = new \ProcessMaker\BusinessModel\ProcessSupervisor();
         $processSupervisor = $supervisor->getProcessSupervisors($application->getProUid(), "ASSIGNED");
         $arraySupervisor = $processSupervisor["data"];
         foreach ($arraySupervisor as $value) {
             if ($value["usr_uid"] == $userUid) {
                 $flagSupervisor = 1;
                 break;
             }
         }
         if ($flagInbox == 0 && $flagSupervisor == 0) {
             throw new \Exception(\G::LoadTranslation("ID_USER_NOT_HAVE_PERMISSION_DELETE_INPUT_DOCUMENT", array($userUid)));
         }
         //Verify data permission
         $flagPermission = 0;
         $criteria = new \Criteria("workflow");
         $criteria->addSelectColumn(\AppDocumentPeer::DOC_UID);
         $criteria->add(\AppDocumentPeer::APP_DOC_UID, $appDocumentUid, \Criteria::EQUAL);
         $criteria->add(\AppDocumentPeer::APP_UID, $applicationUid, \Criteria::EQUAL);
         $criteria->add(\AppDocumentPeer::APP_DOC_TYPE, "INPUT", \Criteria::EQUAL);
         $rsCriteria = \AppDocumentPeer::doSelectRS($criteria);
         $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         if ($rsCriteria->next()) {
             $row = $rsCriteria->getRow();
             $inputDocumentUid = $row["DOC_UID"];
             //Criteria
             $criteria2 = new \Criteria("workflow");
             $criteria2->addSelectColumn(\ObjectPermissionPeer::OP_UID);
             $criteria2->add(\ObjectPermissionPeer::PRO_UID, $application->getProUid(), \Criteria::EQUAL);
             $criteria2->add(\ObjectPermissionPeer::OP_OBJ_TYPE, "INPUT", \Criteria::EQUAL);
             $criteria2->add($criteria2->getNewCriterion(\ObjectPermissionPeer::OP_OBJ_UID, $inputDocumentUid, \Criteria::EQUAL)->addOr($criteria2->getNewCriterion(\ObjectPermissionPeer::OP_OBJ_UID, "0", \Criteria::EQUAL))->addOr($criteria2->getNewCriterion(\ObjectPermissionPeer::OP_OBJ_UID, "", \Criteria::EQUAL)));
             $criteria2->add(\ObjectPermissionPeer::OP_ACTION, "DELETE", \Criteria::EQUAL);
             //User
             $criteriaU = clone $criteria2;
             $criteriaU->add(\ObjectPermissionPeer::OP_USER_RELATION, 1, \Criteria::EQUAL);
             $criteriaU->add(\ObjectPermissionPeer::USR_UID, $userUid, \Criteria::EQUAL);
             $rsCriteriaU = \ObjectPermissionPeer::doSelectRS($criteriaU);
             $rsCriteriaU->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
             if ($rsCriteriaU->next()) {
                 $flagPermission = 1;
             }
             //Group
             if ($flagPermission == 0) {
                 $criteriaG = clone $criteria2;
                 $criteriaG->add(\ObjectPermissionPeer::OP_USER_RELATION, 2, \Criteria::EQUAL);
                 $criteriaG->addJoin(\ObjectPermissionPeer::USR_UID, \GroupUserPeer::GRP_UID, \Criteria::LEFT_JOIN);
                 $criteriaG->add(\GroupUserPeer::USR_UID, $userUid, \Criteria::EQUAL);
                 $rsCriteriaG = \ObjectPermissionPeer::doSelectRS($criteriaG);
                 $rsCriteriaG->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
                 if ($rsCriteriaG->next()) {
                     $flagPermission = 1;
                 }
             }
         }
         if ($flagPermission == 0) {
             throw new \Exception(\G::LoadTranslation("ID_USER_NOT_HAVE_PERMISSION_DELETE_INPUT_DOCUMENT", array($userUid)));
         }
     } catch (\Exception $e) {
         throw $e;
     }
 }
 /**
  * Populates the object using an array.
  *
  * This is particularly useful when populating an object from one of the
  * request arrays (e.g. $_POST).  This method goes through the column
  * names, checking to see whether a matching key exists in populated
  * array. If so the setByName() method is called for that column.
  *
  * You can specify the key type of the array by additionally passing one
  * of the class type constants TYPE_PHPNAME, TYPE_COLNAME, TYPE_FIELDNAME,
  * TYPE_NUM. The default key type is the column's phpname (e.g. 'authorId')
  *
  * @param      array  $arr     An array to populate the object from.
  * @param      string $keyType The type of keys the array uses.
  * @return     void
  */
 public function fromArray($arr, $keyType = BasePeer::TYPE_PHPNAME)
 {
     $keys = ObjectPermissionPeer::getFieldNames($keyType);
     if (array_key_exists($keys[0], $arr)) {
         $this->setOpUid($arr[$keys[0]]);
     }
     if (array_key_exists($keys[1], $arr)) {
         $this->setProUid($arr[$keys[1]]);
     }
     if (array_key_exists($keys[2], $arr)) {
         $this->setTasUid($arr[$keys[2]]);
     }
     if (array_key_exists($keys[3], $arr)) {
         $this->setUsrUid($arr[$keys[3]]);
     }
     if (array_key_exists($keys[4], $arr)) {
         $this->setOpUserRelation($arr[$keys[4]]);
     }
     if (array_key_exists($keys[5], $arr)) {
         $this->setOpTaskSource($arr[$keys[5]]);
     }
     if (array_key_exists($keys[6], $arr)) {
         $this->setOpParticipate($arr[$keys[6]]);
     }
     if (array_key_exists($keys[7], $arr)) {
         $this->setOpObjType($arr[$keys[7]]);
     }
     if (array_key_exists($keys[8], $arr)) {
         $this->setOpObjUid($arr[$keys[8]]);
     }
     if (array_key_exists($keys[9], $arr)) {
         $this->setOpAction($arr[$keys[9]]);
     }
     if (array_key_exists($keys[10], $arr)) {
         $this->setOpCaseStatus($arr[$keys[10]]);
     }
 }
 /**
  * editObjectPermission
  *
  * @param string $sOP_UID
  * @param string $sProcessUID
  * @return void
  */
 public function editExtObjectPermission($sProcessUID, $sOP_UID)
 {
     $oCriteria = new Criteria();
     $oCriteria->add(ObjectPermissionPeer::OP_UID, $sOP_UID);
     $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $oDataset->next();
     $aRows = $oDataset->getRow();
     $oCriteria = new Criteria();
     $oCriteria->add(GroupwfPeer::GRP_UID, $aRows['USR_UID']);
     if (GroupwfPeer::doCount($oCriteria) == 1) {
         $user = '******' . $aRows['USR_UID'];
     }
     $oCriteria = new Criteria();
     $oCriteria->add(UsersPeer::USR_UID, $aRows['USR_UID']);
     if (UsersPeer::doCount($oCriteria) == 1) {
         $user = '******' . $aRows['USR_UID'];
     }
     $aFields['LANG'] = SYS_LANG;
     $aFields['OP_UID'] = $aRows['OP_UID'];
     $aFields['PRO_UID'] = $aRows['PRO_UID'];
     $aFields['OP_CASE_STATUS'] = $aRows['OP_CASE_STATUS'];
     $aFields['TAS_UID'] = $aRows['TAS_UID'];
     $aFields['OP_GROUP_USER'] = $user;
     $aFields['OP_TASK_SOURCE'] = $aRows['OP_TASK_SOURCE'];
     $aFields['OP_PARTICIPATE'] = $aRows['OP_PARTICIPATE'];
     $aFields['OP_OBJ_TYPE'] = $aRows['OP_OBJ_TYPE'];
     $aFields['OP_ACTION'] = $aRows['OP_ACTION'];
     $lang = defined('SYS_LANG') ? SYS_LANG : 'en';
     $aFields['TASK_TARGET_NAME'] = Content::load('TAS_TITLE', '', $aRows['TAS_UID'], $lang);
     $aFields['TASK_SOURCE_NAME'] = Content::load('TAS_TITLE', '', $aRows['OP_TASK_SOURCE'], $lang);
     $oUser = UsersPeer::retrieveByPK($aRows['USR_UID']);
     if (!is_null($oUser)) {
         $aFields['USR_FULLNAME'] = $oUser->getUsrFirstname() . ' ' . $oUser->getUsrLastname();
     } else {
         throw new Exception("The row '" . $aRows['USR_UID'] . "' in table USER doesn't exist!");
     }
     switch ($aRows['OP_OBJ_TYPE']) {
         /*  case 'ANY':
                 $aFields['OP_OBJ_TYPE'] = '';
                 break;
             */
         case 'DYNAFORM':
             $aFields['DYNAFORM'] = $aRows['OP_OBJ_UID'];
             $aFields['DYNAFORM_NAME'] = Content::load('DYN_TITLE', '', $aRows['OP_OBJ_UID'], $lang);
             break;
         case 'INPUT':
             $aFields['INPUT'] = $aRows['OP_OBJ_UID'];
             $aFields['INPUT_NAME'] = Content::load('INP_DOC_TITLE', '', $aRows['OP_OBJ_UID'], $lang);
             break;
         case 'OUTPUT':
             $aFields['OUTPUT'] = $aRows['OP_OBJ_UID'];
             $aFields['OUTPUT_NAME'] = Content::load('OUT_DOC_TITLE', '', $aRows['OP_OBJ_UID'], $lang);
             break;
     }
     return $aFields;
 }
Example #7
0
 /**
  * Obtain all user permits for Dynaforms, Input and output documents from some action [VIEW, BLOCK, etc...]
  *
  * function getAllObjectsFrom ($PRO_UID, $APP_UID, $TAS_UID, $USR_UID, $ACTION)
  * @author Erik Amaru Ortiz <*****@*****.**>
  * @access public
  * @param  Process ID, Application ID, Task ID, User ID, Action
  * @return Array within all user permitions all objects' types
  */
 public function getAllObjectsFrom($PRO_UID, $APP_UID, $TAS_UID = '', $USR_UID = '', $ACTION = '')
 {
     $aCase = $this->loadCase($APP_UID);
     $USER_PERMISSIONS = array();
     $GROUP_PERMISSIONS = array();
     $RESULT = array("DYNAFORM" => array(), "INPUT" => array(), "OUTPUT" => array(), "CASES_NOTES" => 0);
     //permissions per user
     $oCriteria = new Criteria('workflow');
     $oCriteria->add($oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, $USR_UID)->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::USR_UID, '0'))));
     $oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);
     $oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);
     $oCriteria->add($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0'))));
     $oCriteria->add($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, 'ALL')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, '')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, '0'))));
     $rs = ObjectPermissionPeer::doSelectRS($oCriteria);
     $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $rs->next();
     while ($row = $rs->getRow()) {
         if ($aCase['APP_STATUS'] == $row['OP_CASE_STATUS'] || $row['OP_CASE_STATUS'] == '' || $row['OP_CASE_STATUS'] == 'ALL' || $row['OP_CASE_STATUS'] == '') {
             array_push($USER_PERMISSIONS, $row);
         }
         $rs->next();
     }
     //permissions per group
     G::loadClass('groups');
     $gr = new Groups();
     $records = $gr->getActiveGroupsForAnUser($USR_UID);
     foreach ($records as $group) {
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(ObjectPermissionPeer::USR_UID, $group);
         $oCriteria->add(ObjectPermissionPeer::PRO_UID, $PRO_UID);
         $oCriteria->add(ObjectPermissionPeer::OP_ACTION, $ACTION);
         $oCriteria->add($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, $TAS_UID)->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::TAS_UID, '0'))));
         $oCriteria->add($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, 'ALL')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, '')->addOr($oCriteria->getNewCriterion(ObjectPermissionPeer::OP_CASE_STATUS, '0'))));
         $rs = ObjectPermissionPeer::doSelectRS($oCriteria);
         $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         while ($rs->next()) {
             array_push($GROUP_PERMISSIONS, $rs->getRow());
         }
     }
     $PERMISSIONS = array_merge($USER_PERMISSIONS, $GROUP_PERMISSIONS);
     foreach ($PERMISSIONS as $row) {
         $USER = $row['USR_UID'];
         $USER_RELATION = $row['OP_USER_RELATION'];
         $TASK_SOURCE = $row['OP_TASK_SOURCE'];
         $PARTICIPATE = $row['OP_PARTICIPATE'];
         $O_TYPE = $row['OP_OBJ_TYPE'];
         $O_UID = $row['OP_OBJ_UID'];
         $ACTION = $row['OP_ACTION'];
         $CASE_STATUS = $row['OP_CASE_STATUS'];
         // here!,. we should verify $PARTICIPATE
         $sw_participate = false;
         // must be false for default
         if ($row['OP_CASE_STATUS'] != 'COMPLETED' && $row['OP_CASE_STATUS'] != '' && $row['OP_CASE_STATUS'] != '0') {
             if ($PARTICIPATE == 1) {
                 $oCriteriax = new Criteria('workflow');
                 $oCriteriax->add(AppDelegationPeer::USR_UID, $USR_UID);
                 $oCriteriax->add(AppDelegationPeer::APP_UID, $APP_UID);
                 if (AppDelegationPeer::doCount($oCriteriax) == 0) {
                     $sw_participate = true;
                 }
             }
         }
         if (!$sw_participate) {
             switch ($O_TYPE) {
                 case 'ANY':
                     //for dynaforms
                     $oCriteria = new Criteria('workflow');
                     $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);
                     $oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);
                     $oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
                     if ($aCase['APP_STATUS'] != 'COMPLETED') {
                         if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
                             $oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);
                         }
                     }
                     $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');
                     $oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);
                     $oCriteria->setDistinct();
                     $oDataset = DynaformPeer::doSelectRS($oCriteria);
                     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                     $oDataset->next();
                     while ($aRow = $oDataset->getRow()) {
                         if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {
                             array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);
                         }
                         $oDataset->next();
                     }
                     //inputs
                     $oCriteria = new Criteria('workflow');
                     $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
                     $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
                     $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
                     $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
                     if ($aCase['APP_STATUS'] != 'COMPLETED') {
                         if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
                             $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);
                         }
                     }
                     $oCriteria->add($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'INPUT')->addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'OUTPUT'))->addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED')));
                     $aConditions = array();
                     $aConditions[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID);
                     $aConditions[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX);
                     $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
                     $oDataset = DynaformPeer::doSelectRS($oCriteria);
                     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                     $oDataset->next();
                     while ($aRow = $oDataset->getRow()) {
                         if ($aRow['APP_DOC_TYPE'] == "ATTACHED") {
                             $aRow['APP_DOC_TYPE'] = "INPUT";
                         }
                         if (!in_array($aRow['APP_DOC_UID'], $RESULT[$aRow['APP_DOC_TYPE']])) {
                             array_push($RESULT[$aRow['APP_DOC_TYPE']], $aRow['APP_DOC_UID']);
                         }
                         $oDataset->next();
                     }
                     $RESULT['CASES_NOTES'] = 1;
                     break;
                 case 'DYNAFORM':
                     $oCriteria = new Criteria('workflow');
                     $oCriteria->add(ApplicationPeer::APP_UID, $APP_UID);
                     if ($aCase['APP_STATUS'] != 'COMPLETED') {
                         if ($TASK_SOURCE != '' && $TASK_SOURCE != "0") {
                             $oCriteria->add(StepPeer::TAS_UID, $TASK_SOURCE);
                         }
                     }
                     if ($O_UID != '' && $O_UID != '0') {
                         $oCriteria->add(DynaformPeer::DYN_UID, $O_UID);
                     }
                     $oCriteria->addJoin(ApplicationPeer::PRO_UID, StepPeer::PRO_UID);
                     $oCriteria->addJoin(StepPeer::STEP_UID_OBJ, DynaformPeer::DYN_UID);
                     $oCriteria->add(StepPeer::STEP_TYPE_OBJ, 'DYNAFORM');
                     $oCriteria->addAscendingOrderByColumn(StepPeer::STEP_POSITION);
                     $oCriteria->setDistinct();
                     $oDataset = DynaformPeer::doSelectRS($oCriteria);
                     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                     $oDataset->next();
                     while ($aRow = $oDataset->getRow()) {
                         if (!in_array($aRow['DYN_UID'], $RESULT['DYNAFORM'])) {
                             array_push($RESULT['DYNAFORM'], $aRow['DYN_UID']);
                         }
                         $oDataset->next();
                     }
                     break;
                 case 'INPUT':
                 case 'OUTPUT':
                     if ($row['OP_OBJ_TYPE'] == 'INPUT') {
                         $obj_type = 'INPUT';
                     } else {
                         $obj_type = 'OUTPUT';
                     }
                     $oCriteria = new Criteria('workflow');
                     $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_UID);
                     $oCriteria->addSelectColumn(AppDocumentPeer::APP_DOC_TYPE);
                     $oCriteria->add(AppDelegationPeer::APP_UID, $APP_UID);
                     $oCriteria->add(AppDelegationPeer::PRO_UID, $PRO_UID);
                     if ($aCase['APP_STATUS'] != 'COMPLETED') {
                         if ($TASK_SOURCE != '' && $TASK_SOURCE != "0" && $TASK_SOURCE != 0) {
                             $oCriteria->add(AppDelegationPeer::TAS_UID, $TASK_SOURCE);
                         }
                     }
                     if ($O_UID != '' && $O_UID != '0') {
                         $oCriteria->add(AppDocumentPeer::DOC_UID, $O_UID);
                     }
                     if ($obj_type == 'INPUT') {
                         $oCriteria->add($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, $obj_type)->addOr($oCriteria->getNewCriterion(AppDocumentPeer::APP_DOC_TYPE, 'ATTACHED')));
                     } else {
                         $oCriteria->add(AppDocumentPeer::APP_DOC_TYPE, $obj_type);
                     }
                     $aConditions = array();
                     $aConditions[] = array(AppDelegationPeer::APP_UID, AppDocumentPeer::APP_UID);
                     $aConditions[] = array(AppDelegationPeer::DEL_INDEX, AppDocumentPeer::DEL_INDEX);
                     $oCriteria->addJoinMC($aConditions, Criteria::LEFT_JOIN);
                     $oDataset = DynaformPeer::doSelectRS($oCriteria);
                     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
                     $oDataset->next();
                     while ($aRow = $oDataset->getRow()) {
                         if (!in_array($aRow['APP_DOC_UID'], $RESULT[$obj_type])) {
                             array_push($RESULT[$obj_type], $aRow['APP_DOC_UID']);
                         }
                         $oDataset->next();
                     }
                     break;
                 case 'CASES_NOTES':
                     $RESULT['CASES_NOTES'] = 1;
                     break;
             }
         }
     }
     return array("DYNAFORMS" => $RESULT['DYNAFORM'], "INPUT_DOCUMENTS" => $RESULT['INPUT'], "OUTPUT_DOCUMENTS" => $RESULT['OUTPUT'], "CASES_NOTES" => $RESULT['CASES_NOTES']);
 }
 /**
  * verify if a dynaform is assigned some steps
  *
  * @param string $proUid the uid of the process
  * @param string $dynUid the uid of the dynaform
  *
  * @return array
  */
 public function verifyDynaformAssigObjectPermission($dynUid, $proUid)
 {
     $res = array();
     $oCriteria = new Criteria();
     $oCriteria->addSelectColumn(ObjectPermissionPeer::OP_UID);
     $oCriteria->add(ObjectPermissionPeer::PRO_UID, $proUid);
     $oCriteria->add(ObjectPermissionPeer::OP_OBJ_UID, $dynUid);
     $oCriteria->add(ObjectPermissionPeer::OP_OBJ_TYPE, 'DYNAFORM');
     $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     while ($oDataset->next()) {
         $res[] = $oDataset->getRow();
     }
     return $res;
 }
Example #9
0
 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;
     }
 }
Example #10
0
 /**
  * Delete a task
  * @param string $sTaskUID
  * @return void
  */
 function deleteTask($sTaskUID = '')
 {
     try {
         //Instance classes
         $oTask = new Task();
         $oTasks = new Tasks();
         $oTaskUser = new TaskUser();
         $oStep = new Step();
         $oStepTrigger = new StepTrigger();
         //Get task information
         $aFields = $oTask->load($sTaskUID);
         //Delete routes
         $oTasks->deleteAllRoutesOfTask($aFields['PRO_UID'], $sTaskUID, true);
         //Delete gateways
         $oTasks->deleteAllGatewayOfTask($aFields['PRO_UID'], $sTaskUID, true);
         //Delete the users assigned to task
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(TaskUserPeer::TAS_UID, $sTaskUID);
         $oDataset1 = TaskUserPeer::doSelectRS($oCriteria);
         $oDataset1->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $oDataset1->next();
         while ($aRow1 = $oDataset1->getRow()) {
             $oTaskUser->remove($aRow1['TAS_UID'], $aRow1['USR_UID'], $aRow1['TU_TYPE'], $aRow1['TU_RELATION']);
             $oDataset1->next();
         }
         //Delete the steps of task
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(StepPeer::TAS_UID, $sTaskUID);
         $oDataset1 = StepPeer::doSelectRS($oCriteria);
         $oDataset1->setFetchmode(ResultSet::FETCHMODE_ASSOC);
         $oDataset1->next();
         while ($aRow1 = $oDataset1->getRow()) {
             //Delete the triggers assigned to step
             /*$oCriteria = new Criteria('workflow');
               $oCriteria->add(StepTriggerPeer::STEP_UID, $aRow1['STEP_UID']);
               $oDataset2 = StepTriggerPeer::doSelectRS($oCriteria);
               $oDataset2->setFetchmode(ResultSet::FETCHMODE_ASSOC);
               $oDataset2->next();
               while ($aRow2 = $oDataset2->getRow()) {
                 $oStepTrigger->remove($aRow2['STEP_UID'], $aRow2['TAS_UID'], $aRow2['TRI_UID'], $aRow2['ST_TYPE']);
                 $oDataset2->next();
               }*/
             $oStep->remove($aRow1['STEP_UID']);
             $oDataset1->next();
         }
         //Delete step triggers
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(StepTriggerPeer::TAS_UID, $sTaskUID);
         StepTriggerPeer::doDelete($oCriteria);
         //Delete permissions
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(ObjectPermissionPeer::TAS_UID, $sTaskUID);
         ObjectPermissionPeer::doDelete($oCriteria);
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(ObjectPermissionPeer::OP_TASK_SOURCE, $sTaskUID);
         ObjectPermissionPeer::doDelete($oCriteria);
         //Delete task
         $oTask->remove($sTaskUID);
         //Delete cases schedulers added by krlos
         $oCriteria = new Criteria('workflow');
         $oCriteria->add(CaseSchedulerPeer::TAS_UID, $sTaskUID);
         CaseSchedulerPeer::doDelete($oCriteria);
     } catch (Exception $oError) {
         throw $oError;
     }
 }
Example #11
0
 /**
  * Delete Group
  *
  * @param string $groupUid Unique id of Group
  *
  * return void
  */
 public function delete($groupUid)
 {
     try {
         //Verify data
         $this->throwExceptionIfNotExistsGroup($groupUid, $this->arrayFieldNameForException["groupUid"]);
         $arrayTotalTasksByGroup = $this->getTotalTasksByGroup($groupUid);
         if (isset($arrayTotalTasksByGroup[$groupUid]) && $arrayTotalTasksByGroup[$groupUid] > 0) {
             throw new \Exception(\G::LoadTranslation("ID_GROUP_CANNOT_DELETE_WHILE_ASSIGNED_TO_TASK"));
         }
         //Delete
         $group = new \Groupwf();
         $result = $group->remove($groupUid);
         //Delete assignments of tasks
         $criteria = new \Criteria("workflow");
         $criteria->add(\TaskUserPeer::USR_UID, $groupUid);
         \TaskUserPeer::doDelete($criteria);
         //Delete permissions
         $criteria = new \Criteria("workflow");
         $criteria->add(\ObjectPermissionPeer::USR_UID, $groupUid);
         \ObjectPermissionPeer::doDelete($criteria);
         //Delete assignments of supervisors
         $criteria = new \Criteria("workflow");
         $criteria->add(\ProcessUserPeer::USR_UID, $groupUid);
         $criteria->add(\ProcessUserPeer::PU_TYPE, "GROUP_SUPERVISOR");
         \ProcessUserPeer::doDelete($criteria);
     } catch (\Exception $e) {
         throw $e;
     }
 }
 /**
  * Retrieve multiple objects by pkey.
  *
  * @param      array $pks List of primary keys
  * @param      Connection $con the connection to use
  * @throws     PropelException Any exceptions caught during processing will be
  *		 rethrown wrapped into a PropelException.
  */
 public static function retrieveByPKs($pks, $con = null)
 {
     if ($con === null) {
         $con = Propel::getConnection(self::DATABASE_NAME);
     }
     $objs = null;
     if (empty($pks)) {
         $objs = array();
     } else {
         $criteria = new Criteria();
         $criteria->add(ObjectPermissionPeer::OP_UID, $pks, Criteria::IN);
         $objs = ObjectPermissionPeer::doSelect($criteria, $con);
     }
     return $objs;
 }
Example #13
0
 function loadInfo($sObjUID)
 {
     $oCriteria = new Criteria('workflow');
     $oCriteria->add(ObjectPermissionPeer::OP_OBJ_UID, $sObjUID);
     $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria);
     $oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $oDataset->next();
     $aRow = $oDataset->getRow();
     return $aRow;
 }
Example #14
0
 /**
  * Verify if the InputDocument it's assigned in other objects
  *
  * @param string $inputDocumentUid Unique id of InputDocument
  *
  * return array Return array (true if it's assigned or false otherwise and data)
  */
 public function itsAssignedInOtherObjects($inputDocumentUid)
 {
     try {
         $flagAssigned = false;
         $arrayData = array();
         //Step
         $criteria = new \Criteria("workflow");
         $criteria->addSelectColumn(\StepPeer::STEP_UID);
         $criteria->add(\StepPeer::STEP_TYPE_OBJ, "INPUT_DOCUMENT", \Criteria::EQUAL);
         $criteria->add(\StepPeer::STEP_UID_OBJ, $inputDocumentUid, \Criteria::EQUAL);
         $rsCriteria = \StepPeer::doSelectRS($criteria);
         if ($rsCriteria->next()) {
             $flagAssigned = true;
             $arrayData[] = \G::LoadTranslation("ID_STEPS");
         }
         //StepSupervisor
         $criteria = new \Criteria("workflow");
         $criteria->addSelectColumn(\StepSupervisorPeer::STEP_UID);
         $criteria->add(\StepSupervisorPeer::STEP_TYPE_OBJ, "INPUT_DOCUMENT", \Criteria::EQUAL);
         $criteria->add(\StepSupervisorPeer::STEP_UID_OBJ, $inputDocumentUid, \Criteria::EQUAL);
         $rsCriteria = \StepSupervisorPeer::doSelectRS($criteria);
         if ($rsCriteria->next()) {
             $flagAssigned = true;
             $arrayData[] = \G::LoadTranslation("ID_CASES_MENU_ADMIN");
         }
         //ObjectPermission
         $criteria = new \Criteria("workflow");
         $criteria->addSelectColumn(\ObjectPermissionPeer::OP_UID);
         $criteria->add(\ObjectPermissionPeer::OP_OBJ_TYPE, "INPUT", \Criteria::EQUAL);
         $criteria->add(\ObjectPermissionPeer::OP_OBJ_UID, $inputDocumentUid, \Criteria::EQUAL);
         $rsCriteria = \ObjectPermissionPeer::doSelectRS($criteria);
         if ($rsCriteria->next()) {
             $flagAssigned = true;
             $arrayData[] = \G::LoadTranslation("ID_PROCESS_PERMISSIONS");
         }
         //Return
         return array($flagAssigned, $arrayData);
     } catch (\Exception $e) {
         throw $e;
     }
 }
Example #15
0
     G::LoadClass('groups');
     $group = new Groupwf();
     if (!isset($_POST['GRP_UID'])) {
         return;
     }
     $group->remove(urldecode($_POST['GRP_UID']));
     require_once 'classes/model/TaskUser.php';
     $oProcess = new TaskUser();
     $oCriteria = new Criteria('workflow');
     $oCriteria->add(TaskUserPeer::USR_UID, $_POST['GRP_UID']);
     TaskUserPeer::doDelete($oCriteria);
     //Delete permissions
     require_once 'classes/model/ObjectPermission.php';
     $criteria = new Criteria('workflow');
     $criteria->add(ObjectPermissionPeer::USR_UID, $_POST['GRP_UID']);
     ObjectPermissionPeer::doDelete($criteria);
     //Delete supervisors assignments
     require_once 'classes/model/ProcessUser.php';
     $criteria = new Criteria('workflow');
     $criteria->add(ProcessUserPeer::USR_UID, $_POST['GRP_UID']);
     $criteria->add(ProcessUserPeer::PU_TYPE, 'GROUP_SUPERVISOR');
     ProcessUserPeer::doDelete($criteria);
     echo '{success: true}';
     break;
 case 'assignedMembers':
     require_once 'classes/model/Users.php';
     require_once 'classes/model/GroupUser.php';
     G::LoadClass('configuration');
     $co = new Configurations();
     $config = $co->getConfiguration('groupList', 'pageSize', '', $_SESSION['USER_LOGGED']);
     $env = $co->getConfiguration('ENVIRONMENT_SETTINGS', '');
        case -2:
            G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_SYSTEM', 'error', 'labels');
            G::header('location: ../login/login');
            die;
            break;
        default:
            G::SendTemporalMessage('ID_USER_HAVENT_RIGHTS_PAGE', 'error', 'labels');
            G::header('location: ../login/login');
            die;
            break;
    }
}
try {
    require_once 'classes/model/ObjectPermission.php';
    $oOP = new ObjectPermission();
    $oOP = ObjectPermissionPeer::retrieveByPK($_GET['OP_UID']);
    $sProcessUID = $oOP->getProUid();
    $oOP->delete();
    $result->success = true;
    $result->msg = G::LoadTranslation('ID_REPORTTABLE_REMOVED');
    G::LoadClass('processMap');
    $oProcessMap = new ProcessMap();
    $oProcessMap->getObjectsPermissionsCriteria($sProcessUID);
} catch (Exception $e) {
    $result->success = false;
    $result->msg = $e->getMessage();
}
print G::json_encode($result);
$infoProcess = new Processes();
$resultProcess = $infoProcess->getProcessRow($sProcessUID);
G::auditLog('DeletePermissions', 'Delete Permissions (' . $_GET['OP_UID'] . ') in Process "' . $resultProcess['PRO_TITLE'] . '"');
Example #17
0
    /**
     * 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);
        }
    }