/** * 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; } }
/** * 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; }
/** * 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']); }
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; } }
/** * 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; }
/** * 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()); } }
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; } }