Example #1
0
    /**

     * get task list

     *

     * @param string $userId

     * @return $result will return an object

     */

    public function taskList ($userId)

    {

        try {

            g::loadClass( 'groups' );

            $oGroup = new Groups();

            $aGroups = $oGroup->getActiveGroupsForAnUser( $userId );



            $result = array ();

            $oCriteria = new Criteria( 'workflow' );

            $del = DBAdapter::getStringDelimiter();

            $oCriteria->addSelectColumn( TaskPeer::PRO_UID );

            $oCriteria->addSelectColumn( TaskPeer::TAS_UID );

            $oCriteria->addSelectColumn( TaskPeer::TAS_START );

            $oCriteria->setDistinct();

            $oCriteria->addAsColumn( 'TAS_TITLE', 'C1.CON_VALUE' );

            $oCriteria->addAlias( "C1", 'CONTENT' );

            $tasTitleConds = array ();

            $tasTitleConds[] = array (TaskPeer::TAS_UID,'C1.CON_ID'

            );

            $tasTitleConds[] = array ('C1.CON_CATEGORY',$del . 'TAS_TITLE' . $del

            );

            $tasTitleConds[] = array ('C1.CON_LANG',$del . SYS_LANG . $del

            );

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



            $oCriteria->addJoin( TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN );

            $oCriteria->addOr( TaskUserPeer::USR_UID, $userId );

            $oCriteria->addOr( TaskUserPeer::USR_UID, $aGroups, Criteria::IN );



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

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

            $oDataset->next();



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

                $result[] = array ('guid' => $aRow['TAS_UID'],

                                   'name' => $aRow['TAS_TITLE'],

                                   'processId' => $aRow['PRO_UID'],

                                   'initialTask' => $aRow['TAS_START'] == 'TRUE' ? '1' : '0');

                $oDataset->next();

            }



            return $result;

        } catch (Exception $e) {

            $result[] = array ('guid' => $e->getMessage(),'name' => $e->getMessage()

            );



            return $result;

        }

    }
Example #2
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']

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

        );

    }
 public function getSelfServiceCasesByEvaluate($userUid)
 {
     $cases = array();
     //check groups assigned to SelfService task
     G::LoadClass('groups');
     $group = new Groups();
     $aGroups = $group->getActiveGroupsForAnUser($userUid);
     $c = new Criteria();
     $c->clearSelectColumns();
     $c->addSelectColumn(TaskPeer::TAS_UID);
     $c->addSelectColumn(TaskPeer::PRO_UID);
     $c->addSelectColumn(TaskPeer::TAS_GROUP_VARIABLE);
     $c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
     $c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
     $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
     $c->add(TaskPeer::TAS_ASSIGN_TYPE, 'SELF_SERVICE');
     $c->add(TaskPeer::TAS_GROUP_VARIABLE, '', Criteria::NOT_EQUAL);
     $rs = TaskPeer::doSelectRS($c);
     $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $rs->next();
     if ($rs->getRecordCount() > 0) {
         if (!class_exists('Cases')) {
             G::loadClass('case');
         }
         $caseInstance = new Cases();
         while ($row = $rs->getRow()) {
             $tasGroupVariable = str_replace(array('@', '#'), '', $row['TAS_GROUP_VARIABLE']);
             $c2 = new Criteria();
             $c2->clearSelectColumns();
             $c2->addSelectColumn(AppDelegationPeer::APP_UID);
             $c2->add(AppDelegationPeer::TAS_UID, $row['TAS_UID']);
             $c2->add(AppDelegationPeer::USR_UID, '');
             $c2->add(AppDelegationPeer::DEL_THREAD_STATUS, 'OPEN');
             $rs2 = AppDelegationPeer::doSelectRS($c2);
             $rs2->setFetchmode(ResultSet::FETCHMODE_ASSOC);
             $rs2->next();
             while ($row2 = $rs2->getRow()) {
                 $caseData = $caseInstance->LoadCase($row2['APP_UID']);
                 if (isset($caseData['APP_DATA'][$tasGroupVariable])) {
                     if (trim($caseData['APP_DATA'][$tasGroupVariable]) != '') {
                         if (in_array(trim($caseData['APP_DATA'][$tasGroupVariable]), $aGroups)) {
                             $cases[] = $row2['APP_UID'];
                         }
                     }
                 }
                 $rs2->next();
             }
             $rs->next();
         }
     }
     return $cases;
 }
Example #4
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']);
 }
Example #5
0
    public function getSelfServiceCasesByEvaluate($userUid)

    {

        try {

            G::LoadClass("groups");



            $arrayAppAssignSelfServiceValueData = array();



            //Get APP_UIDs

            $group = new Groups();



            $arrayUid   = $group->getActiveGroupsForAnUser($userUid); //Set UIDs of Groups (Groups of User)

            $arrayUid[] = $userUid;                                   //Set UID of User



            $criteria = new Criteria("workflow");



            $criteria->setDistinct();

            $criteria->addSelectColumn(AppAssignSelfServiceValuePeer::APP_UID);

            $criteria->addSelectColumn(AppAssignSelfServiceValuePeer::DEL_INDEX);

            $criteria->addSelectColumn(AppAssignSelfServiceValuePeer::TAS_UID);



            $arrayCondition = array();

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

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

            $arrayCondition[] = array(AppAssignSelfServiceValuePeer::TAS_UID, AppDelegationPeer::TAS_UID, Criteria::EQUAL);

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



            $criteria->add(AppDelegationPeer::USR_UID, "", Criteria::EQUAL);

            $criteria->add(AppDelegationPeer::DEL_THREAD_STATUS, "OPEN", Criteria::EQUAL);



            $criterionAux = null;



            foreach ($arrayUid as $value) {

                if (is_null($criterionAux)) {

                    $criterionAux = $criteria->getNewCriterion(AppAssignSelfServiceValuePeer::GRP_UID, "%$value%", Criteria::LIKE);

                } else {

                    $criterionAux = $criteria->getNewCriterion(AppAssignSelfServiceValuePeer::GRP_UID, "%$value%", Criteria::LIKE)->addOr($criterionAux);

                }

            }



            $criteria->add($criterionAux);



            $rsCriteria = AppAssignSelfServiceValuePeer::doSelectRS($criteria);

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



            while ($rsCriteria->next()) {

                $row = $rsCriteria->getRow();



                $arrayAppAssignSelfServiceValueData[] = array(

                    "APP_UID" => $row["APP_UID"],

                    "DEL_INDEX" => $row["DEL_INDEX"],

                    "TAS_UID" => $row["TAS_UID"]

                );

            }



            //Return

            return $arrayAppAssignSelfServiceValueData;

        } catch (Exception $e) {

            throw $e;

        }

    }
Example #6
0
 /**
  * get user's SelfService tasks
  * @param string $sUIDUser
  * @return $rows
  */
 public function getSelfServiceTasks($userUid = '')
 {
     $rows[] = array();
     $tasks = array();
     //check starting task assigned directly to this user
     $c = new Criteria();
     $c->clearSelectColumns();
     $c->addSelectColumn(TaskPeer::TAS_UID);
     $c->addSelectColumn(TaskPeer::PRO_UID);
     $c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
     $c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
     $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
     $c->add(TaskPeer::TAS_ASSIGN_TYPE, 'SELF_SERVICE');
     $c->add(TaskUserPeer::USR_UID, $userUid);
     $rs = TaskPeer::doSelectRS($c);
     $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $rs->next();
     $row = $rs->getRow();
     while (is_array($row)) {
         $tasks[] = $row['TAS_UID'];
         $rs->next();
         $row = $rs->getRow();
     }
     //check groups assigned to SelfService task
     G::LoadClass('groups');
     $group = new Groups();
     $aGroups = $group->getActiveGroupsForAnUser($userUid);
     $c = new Criteria();
     $c->clearSelectColumns();
     $c->addSelectColumn(TaskPeer::TAS_UID);
     $c->addSelectColumn(TaskPeer::PRO_UID);
     $c->addJoin(TaskPeer::PRO_UID, ProcessPeer::PRO_UID, Criteria::LEFT_JOIN);
     $c->addJoin(TaskPeer::TAS_UID, TaskUserPeer::TAS_UID, Criteria::LEFT_JOIN);
     $c->add(ProcessPeer::PRO_STATUS, 'ACTIVE');
     $c->add(TaskPeer::TAS_ASSIGN_TYPE, 'SELF_SERVICE');
     $c->add(TaskUserPeer::USR_UID, $aGroups, Criteria::IN);
     $rs = TaskPeer::doSelectRS($c);
     $rs->setFetchmode(ResultSet::FETCHMODE_ASSOC);
     $rs->next();
     $row = $rs->getRow();
     while (is_array($row)) {
         $tasks[] = $row['TAS_UID'];
         $rs->next();
         $row = $rs->getRow();
     }
     return $tasks;
 }
Example #7
0
 /**
  * Get process list bookmark for start case
  *
  * @param string $usrUid id of user
  * @param string $typeView type of view
  *
  * return array Return an array with process list that the user can start.
  */
 public function getCasesListBookmarkStarCase($usrUid, $typeView)
 {
     try {
         Validator::usrUid($usrUid, '$usr_uid');
         $user = new \Users();
         $fields = $user->load($usrUid);
         $bookmark = empty($fields['USR_BOOKMARK_START_CASES']) ? array() : unserialize($fields['USR_BOOKMARK_START_CASES']);
         //Getting group id and adding the user id
         $group = new \Groups();
         $groups = $group->getActiveGroupsForAnUser($usrUid);
         $groups[] = $usrUid;
         $c = new \Criteria();
         $c->clearSelectColumns();
         $c->addSelectColumn(\TaskPeer::TAS_UID);
         $c->addSelectColumn(\TaskPeer::PRO_UID);
         $c->addJoin(\TaskPeer::PRO_UID, \ProcessPeer::PRO_UID, \Criteria::LEFT_JOIN);
         $c->addJoin(\TaskPeer::TAS_UID, \TaskUserPeer::TAS_UID, \Criteria::LEFT_JOIN);
         $c->add(\ProcessPeer::PRO_STATUS, 'ACTIVE');
         $c->add(\TaskPeer::TAS_START, 'TRUE');
         $c->add(\TaskUserPeer::USR_UID, $groups, \Criteria::IN);
         $c->add(\TaskPeer::TAS_UID, $bookmark, \Criteria::IN);
         $c->addAsColumn('TAS_TITLE', 'C1.CON_VALUE');
         $c->addAlias("C1", 'CONTENT');
         $tasTitleConds = array();
         $tasTitleConds[] = array(\TaskPeer::TAS_UID, 'C1.CON_ID');
         $tasTitleConds[] = array('C1.CON_CATEGORY', \DBAdapter::getStringDelimiter() . 'TAS_TITLE' . \DBAdapter::getStringDelimiter());
         $tasTitleConds[] = array('C1.CON_LANG', \DBAdapter::getStringDelimiter() . SYS_LANG . \DBAdapter::getStringDelimiter());
         $c->addJoinMC($tasTitleConds, \Criteria::LEFT_JOIN);
         $c->addAsColumn('PRO_TITLE', 'C2.CON_VALUE');
         $c->addAlias("C2", 'CONTENT');
         $proTitleConds = array();
         $proTitleConds[] = array(\ProcessPeer::PRO_UID, 'C2.CON_ID');
         $proTitleConds[] = array('C2.CON_CATEGORY', \DBAdapter::getStringDelimiter() . 'PRO_TITLE' . \DBAdapter::getStringDelimiter());
         $proTitleConds[] = array('C2.CON_LANG', \DBAdapter::getStringDelimiter() . SYS_LANG . \DBAdapter::getStringDelimiter());
         $c->addJoinMC($proTitleConds, \Criteria::LEFT_JOIN);
         if ($typeView == 'category') {
             $c->addAsColumn('PRO_CATEGORY', 'PCS.PRO_CATEGORY');
             $c->addAsColumn('CATEGORY_NAME', 'PCSCAT.CATEGORY_NAME');
             $c->addAlias('PCS', 'PROCESS');
             $c->addAlias('PCSCAT', 'PROCESS_CATEGORY');
             $aConditions = array();
             $aConditions[] = array(\TaskPeer::PRO_UID, 'PCS.PRO_UID');
             $c->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
             $aConditions = array();
             $aConditions[] = array('PCS.PRO_CATEGORY', 'PCSCAT.CATEGORY_UID');
             $c->addJoinMC($aConditions, \Criteria::LEFT_JOIN);
         }
         $c->setDistinct();
         $rs = \TaskPeer::doSelectRS($c);
         $rs->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
         $processList = array();
         while ($rs->next()) {
             $row = $rs->getRow();
             if ($typeView == 'category') {
                 $processList[] = array('tas_uid' => $row['TAS_UID'], 'pro_title' => $row['PRO_TITLE'] . '(' . $row['TAS_TITLE'] . ')', 'pro_uid' => $row['PRO_UID'], 'pro_category' => $row['PRO_CATEGORY'], 'category_name' => $row['CATEGORY_NAME']);
             } else {
                 $processList[] = array('tas_uid' => $row['TAS_UID'], 'pro_title' => $row['PRO_TITLE'] . '(' . $row['TAS_TITLE'] . ')', 'pro_uid' => $row['PRO_UID']);
             }
         }
         if (count($processList) == 0) {
             $processList['success'] = 'failure';
             $processList['message'] = G::LoadTranslation('ID_NOT_HAVE_BOOKMARKED_PROCESSES');
         }
         return $processList;
     } catch (\Exception $e) {
         throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
     }
 }
Example #8
0
    public function getSelfServiceCasesByEvaluate($userUid)

    {

        try {

            G::LoadClass("groups");



            $arrayApplicationUid = array();



            //Get APP_UIDs

            $group = new Groups();



            $arrayGroup = $group->getActiveGroupsForAnUser($userUid); //Get Groups of User



            if (count($arrayGroup) > 0) {

                $criteria = new Criteria("workflow");



                $criteria->setDistinct();

                $criteria->addSelectColumn(AppAssignSelfServiceValuePeer::APP_UID);



                $arrayCondition = array();

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

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

                $arrayCondition[] = array(AppAssignSelfServiceValuePeer::TAS_UID, AppDelegationPeer::TAS_UID, Criteria::EQUAL);

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



                $criteria->add(AppDelegationPeer::USR_UID, "", Criteria::EQUAL);

                $criteria->add(AppDelegationPeer::DEL_THREAD_STATUS, "OPEN", Criteria::EQUAL);

                $criteria->add(AppAssignSelfServiceValuePeer::GRP_UID, $arrayGroup, Criteria::IN);



                $rsCriteria = AppAssignSelfServiceValuePeer::doSelectRS($criteria);

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



                while ($rsCriteria->next()) {

                    $row = $rsCriteria->getRow();



                    $arrayApplicationUid[] = $row["APP_UID"];

                }

            }



            //Return

            return $arrayApplicationUid;

        } catch (Exception $e) {

            throw $e;

        }

    }