From daaa1f1a81378d540f57e23e350178bf8fc28681 Mon Sep 17 00:00:00 2001 From: Brayan Osmar Pereyra Suxo Date: Thu, 9 Jan 2014 16:33:07 -0400 Subject: [PATCH] Get para ProcessPermissions --- .../src/BusinessModel/ProcessPermissions.php | 161 ++++++++++++++++++ .../Project/ProcessPermissions.php | 39 +++++ workflow/engine/src/Services/api.ini | 1 + 3 files changed, 201 insertions(+) create mode 100644 workflow/engine/src/BusinessModel/ProcessPermissions.php create mode 100644 workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php diff --git a/workflow/engine/src/BusinessModel/ProcessPermissions.php b/workflow/engine/src/BusinessModel/ProcessPermissions.php new file mode 100644 index 000000000..308905ba5 --- /dev/null +++ b/workflow/engine/src/BusinessModel/ProcessPermissions.php @@ -0,0 +1,161 @@ + + * @copyright Colosa - Bolivia + */ +class ProcessPermissions +{ + /** + * Get list for ProcessPermissions + * @var string $sProcessUID. Uid for Process + * @var string $filter. + * @var string $sEventUID. Uid for Process + * + * @access public + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + * + * @return array + */ + public function getProcessPermissions($sProcessUID) + { + G::LoadClass('case'); + Cases::verifyTable(); + $aObjectsPermissions = array(); + //$aObjectsPermissions[] = array('OP_UID' => 'char', 'TASK_TARGET' => 'char', 'GROUP_USER' => 'char', 'TASK_SOURCE' => 'char', 'OBJECT_TYPE' => 'char', 'OBJECT' => 'char', 'PARTICIPATED' => 'char', 'ACTION' => 'char', 'OP_CASE_STATUS' => 'char'); + $oCriteria = new \Criteria('workflow'); + $oCriteria->add(ObjectPermissionPeer::PRO_UID, $sProcessUID); + $oDataset = ObjectPermissionPeer::doSelectRS($oCriteria); + $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + $oDataset->next(); + while ($aRow = $oDataset->getRow()) { + //Obtain task target + if (($aRow['TAS_UID'] != '') && ($aRow['TAS_UID'] != '0')) { + try { + $oTask = new \Task(); + $aFields = $oTask->load($aRow['TAS_UID']); + $sTaskTarget = $aFields['TAS_TITLE']; + } catch (\Exception $oError) { + $sTaskTarget = 'All Tasks'; + } + } else { + $sTaskTarget = G::LoadTranslation('ID_ANY_TASK'); + } + //Obtain user or group + if ($aRow['OP_USER_RELATION'] == 1) { + $oUser = new \Users(); + $aFields = $oUser->load($aRow['USR_UID']); + $sUserGroup = $aFields['USR_FIRSTNAME'] . ' ' . $aFields['USR_LASTNAME'] . ' (' . $aFields['USR_USERNAME'] . ')'; + } else { + $oGroup = new \Groupwf(); + if ($aRow['USR_UID'] != '') { + try { + $aFields = $oGroup->load($aRow['USR_UID']); + $sUserGroup = $aFields['GRP_TITLE']; + } catch (\Exception $oError) { + $sUserGroup = '(GROUP DELETED)'; + } + } else { + $sUserGroup = G::LoadTranslation('ID_ANY'); + } + } + //Obtain task source + if (($aRow['OP_TASK_SOURCE'] != '') && ($aRow['OP_TASK_SOURCE'] != '0')) { + try { + $oTask = new \Task(); + $aFields = $oTask->load($aRow['OP_TASK_SOURCE']); + $sTaskSource = $aFields['TAS_TITLE']; + } catch (\Exception $oError) { + $sTaskSource = 'All Tasks'; + } + } else { + $sTaskSource = G::LoadTranslation('ID_ANY_TASK'); + } + //Obtain object and type + switch ($aRow['OP_OBJ_TYPE']) { + case 'ALL': + $sObjectType = G::LoadTranslation('ID_ALL'); + $sObject = G::LoadTranslation('ID_ALL'); + break; + case 'ANY': //For backward compatibility (some process with ANY instead of ALL + $sObjectType = G::LoadTranslation('ID_ALL'); + $sObject = G::LoadTranslation('ID_ALL'); + break; + /* case 'ANY_DYNAFORM': + $sObjectType = G::LoadTranslation('ID_ANY_DYNAFORM'); + $sObject = G::LoadTranslation('ID_ALL'); + break; + case 'ANY_INPUT': + $sObjectType = G::LoadTranslation('ID_ANY_INPUT'); + $sObject = G::LoadTranslation('ID_ALL'); + break; + case 'ANY_OUTPUT': + $sObjectType = G::LoadTranslation('ID_ANY_OUTPUT'); + $sObject = G::LoadTranslation('ID_ALL'); + break; */ + case 'DYNAFORM': + $sObjectType = G::LoadTranslation('ID_DYNAFORM'); + if (($aRow['OP_OBJ_UID'] != '') && ($aRow['OP_OBJ_UID'] != '0')) { + $oDynaform = new \Dynaform(); + $aFields = $oDynaform->load($aRow['OP_OBJ_UID']); + $sObject = $aFields['DYN_TITLE']; + } else { + $sObject = G::LoadTranslation('ID_ALL'); + } + break; + case 'INPUT': + $sObjectType = G::LoadTranslation('ID_INPUT_DOCUMENT'); + if (($aRow['OP_OBJ_UID'] != '') && ($aRow['OP_OBJ_UID'] != '0')) { + $oInputDocument = new \InputDocument(); + $aFields = $oInputDocument->load($aRow['OP_OBJ_UID']); + $sObject = $aFields['INP_DOC_TITLE']; + } else { + $sObject = G::LoadTranslation('ID_ALL'); + } + break; + case 'OUTPUT': + $sObjectType = G::LoadTranslation('ID_OUTPUT_DOCUMENT'); + if (($aRow['OP_OBJ_UID'] != '') && ($aRow['OP_OBJ_UID'] != '0')) { + $oOutputDocument = new \OutputDocument(); + $aFields = $oOutputDocument->load($aRow['OP_OBJ_UID']); + $sObject = $aFields['OUT_DOC_TITLE']; + } else { + $sObject = G::LoadTranslation('ID_ALL'); + } + break; + case 'CASES_NOTES': + $sObjectType = G::LoadTranslation('ID_CASES_NOTES'); + $sObject = 'N/A'; + break; + case 'MSGS_HISTORY': + $sObjectType = G::LoadTranslation('MSGS_HISTORY'); + $sObject = G::LoadTranslation('ID_ALL'); + break; + default: + $sObjectType = G::LoadTranslation('ID_ALL'); + $sObject = G::LoadTranslation('ID_ALL'); + break; + } + //Participated + if ($aRow['OP_PARTICIPATE'] == 0) { + $sParticipated = G::LoadTranslation('ID_NO'); + } else { + $sParticipated = G::LoadTranslation('ID_YES'); + } + //Obtain action (permission) + $sAction = G::LoadTranslation('ID_' . $aRow['OP_ACTION']); + //Add to array + $aObjectsPermissions[] = array_merge($aRow, array('OP_UID' => $aRow['OP_UID'], 'TASK_TARGET' => $sTaskTarget, 'GROUP_USER' => $sUserGroup, 'TASK_SOURCE' => $sTaskSource, 'OBJECT_TYPE' => $sObjectType, 'OBJECT' => $sObject, 'PARTICIPATED' => $sParticipated, 'ACTION' => $sAction, 'OP_CASE_STATUS' => $aRow['OP_CASE_STATUS'])); + $oDataset->next(); + } + return $aObjectsPermissions; + } +} + diff --git a/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php b/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php new file mode 100644 index 000000000..b56cce121 --- /dev/null +++ b/workflow/engine/src/Services/Api/ProcessMaker/Project/ProcessPermissions.php @@ -0,0 +1,39 @@ + + * @copyright Colosa - Bolivia + * + * @protected + */ +class ProcessPermissions extends Api +{ + /** + * @param string $projectUid {@min 1} {@max 32} + * + * @access public + * @author Brayan Pereyra (Cochalo) + * @copyright Colosa - Bolivia + * + * @return array + * + * @url GET /:projectUid/process-permissions + */ + public function doGetProcessPermissions($projectUid) + { + try { + $processPermissions = new \BusinessModel\ProcessPermissions(); + $response = $processPermissions->getProcessPermissions($projectUid); + return $response; + } catch (\Exception $e) { + throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + } + } +} + diff --git a/workflow/engine/src/Services/api.ini b/workflow/engine/src/Services/api.ini index 3956165ba..2bae1b34d 100644 --- a/workflow/engine/src/Services/api.ini +++ b/workflow/engine/src/Services/api.ini @@ -24,6 +24,7 @@ debug = 1 input-document = "Services\Api\ProcessMaker\Project\InputDocument" output-documents = "Services\Api\ProcessMaker\Project\OutputDocuments" supervisors = "Services\Api\ProcessMaker\Project\ProcessSupervisors" + process-permissions = "Services\Api\ProcessMaker\Project\ProcessPermissions" [alias: projects] project = "Services\Api\ProcessMaker\Project"