diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Group.php b/workflow/engine/src/ProcessMaker/BusinessModel/Group.php index 9eb0cb5a3..8dd719b6f 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Group.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Group.php @@ -460,31 +460,76 @@ class Group try { $arrayGroup = array(); + $numRecTotal = 0; + //Verify data $process = new \ProcessMaker\BusinessModel\Process(); $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException); - //Get data - if (!is_null($limit) && $limit . "" == "0") { - return $arrayGroup; + //Set variables + $filterName = "filter"; + + if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"])) { + $arrayAux = array( + "" => "filter", + "LEFT" => "lfilter", + "RIGHT" => "rfilter" + ); + + $filterName = $arrayAux[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""]; } + //Get data + if (!is_null($limit) && $limit . "" == "0") { + //Return + return array( + "total" => $numRecTotal, + "start" => (int)((!is_null($start))? $start : 0), + "limit" => (int)((!is_null($limit))? $limit : 0), + $filterName => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]))? $arrayFilterData["filter"] : "", + "data" => $arrayGroup + ); + } + + //Set variables $arrayTotalUsersByGroup = $this->getTotalUsersByGroup(); $arrayTotalTasksByGroup = $this->getTotalTasksByGroup(); - //SQL + //Query $criteria = $this->getGroupCriteria(); if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") { - $criteria->add(\ContentPeer::CON_VALUE, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE); + $arraySearch = array( + "" => "%" . $arrayFilterData["filter"] . "%", + "LEFT" => $arrayFilterData["filter"] . "%", + "RIGHT" => "%" . $arrayFilterData["filter"] + ); + + $search = $arraySearch[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""]; + + $criteria->add(\ContentPeer::CON_VALUE, $search, \Criteria::LIKE); } - //SQL + //Number records total + $criteriaCount = clone $criteria; + + $criteriaCount->clearSelectColumns(); + $criteriaCount->addSelectColumn("COUNT(" . \GroupwfPeer::GRP_UID . ") AS NUM_REC"); + + $rsCriteriaCount = \GroupwfPeer::doSelectRS($criteriaCount); + $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $result = $rsCriteriaCount->next(); + $row = $rsCriteriaCount->getRow(); + + $numRecTotal = (int)($row["NUM_REC"]); + + //Query if (!is_null($sortField) && trim($sortField) != "") { $sortField = strtoupper($sortField); - if (in_array($sortField, array("GRP_UID", "GRP_STATUS", "GRP_LDAP_DN", "GRP_UX"))) { + if (in_array(\GroupwfPeer::TABLE_NAME . "." . $sortField, $criteria->getSelectColumns())) { $sortField = \GroupwfPeer::TABLE_NAME . "." . $sortField; } else { $sortField = "GRP_TITLE"; @@ -520,7 +565,13 @@ class Group } //Return - return $arrayGroup; + return array( + "total" => $numRecTotal, + "start" => (int)((!is_null($start))? $start : 0), + "limit" => (int)((!is_null($limit))? $limit : 0), + $filterName => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]))? $arrayFilterData["filter"] : "", + "data" => $arrayGroup + ); } catch (\Exception $e) { throw $e; } @@ -635,7 +686,7 @@ class Group } /** - * return permissions of user + * return permissions of user */ public function loadUserRolePermission ($sSystem, $sUser) { @@ -748,11 +799,11 @@ class Group $rsCriteria = \UsersPeer::doSelectRS($criteria); $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - if (isset($flagPermission) && $flagPermission){ + if (isset($flagPermission) && $flagPermission) { \G::LoadSystem('rbac'); while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); - + $aPermissions = $this->loadUserRolePermission("PROCESSMAKER", $row['USR_UID']); $bInclude = false; @@ -768,7 +819,7 @@ class Group } else { while ($rsCriteria->next()) { $row = $rsCriteria->getRow(); - + $arrayUser[] = $this->getUserDataFromRecord($row); } } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Process.php b/workflow/engine/src/ProcessMaker/BusinessModel/Process.php index 1ea3d8581..8347dce10 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Process.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Process.php @@ -169,10 +169,10 @@ class Process public function throwExceptionIfDataNotMetFieldDefinition($arrayData, $arrayFieldDefinition, $arrayFieldNameForException, $flagValidateRequired = true) { try { - + \G::LoadSystem('inputfilter'); $filter = new \InputFilter(); - + if ($flagValidateRequired) { foreach ($arrayFieldDefinition as $key => $value) { $fieldName = $key; @@ -191,7 +191,7 @@ class Process foreach ($arrayData as $key => $value) { $fieldName = $key; $fieldValue = $value; - + if (isset($arrayFieldDefinition[$fieldName])) { $fieldNameAux = (isset($arrayFieldNameForException[$arrayFieldDefinition[$fieldName]["fieldNameAux"]]))? $arrayFieldNameForException[$arrayFieldDefinition[$fieldName]["fieldNameAux"]] : ""; @@ -435,38 +435,6 @@ class Process } } - /** - * Verify if doesn't exists the Task in table TASK - * - * @param string $processUid Unique id of Process - * @param string $taskUid Unique id of Task - * @param string $fieldNameForException Field name for the exception - * - * return void Throw exception if doesn't exists the Task in table TASK - */ - public function throwExceptionIfNotExistsTask($processUid, $taskUid, $fieldNameForException) - { - try { - $criteria = new \Criteria("workflow"); - - $criteria->addSelectColumn(\TaskPeer::TAS_UID); - - if ($processUid != "") { - $criteria->add(\TaskPeer::PRO_UID, $processUid, \Criteria::EQUAL); - } - - $criteria->add(\TaskPeer::TAS_UID, $taskUid, \Criteria::EQUAL); - - $rsCriteria = \TaskPeer::doSelectRS($criteria); - - if (!$rsCriteria->next()) { - throw new \Exception(\G::LoadTranslation("ID_ACTIVITY_DOES_NOT_EXIST", array($fieldNameForException, $taskUid))); - } - } catch (\Exception $e) { - throw $e; - } - } - /** * Verify if doesn't exists the Template in Routing Screen Template * diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Step.php b/workflow/engine/src/ProcessMaker/BusinessModel/Step.php index 15e239284..0674f88b6 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Step.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Step.php @@ -211,22 +211,6 @@ class Step } } - /** - * Verify if doesn't exist the Task in table TASK - * - * @param string $taskUid Unique id of Task - * - * return void Throw exception if doesn't exist the Task in table TASK - */ - public function throwExceptionIfNotExistsTask($taskUid) - { - $task = new \Task(); - - if (!$task->taskExists($taskUid)) { - throw new \Exception(\G::LoadTranslation("ID_ACTIVITY_DOES_NOT_EXIST", array($this->arrayParamException["taskUid"], $taskUid))); - } - } - /** * Verify if doesn't exist the Process in table PROCESS * @@ -260,10 +244,12 @@ class Step unset($arrayData["STEP_UID"]); //Verify data - $this->throwExceptionIfNotExistsTask($taskUid); + $task = new \ProcessMaker\BusinessModel\Task(); $this->throwExceptionIfNotExistsProcess($processUid); + $task->throwExceptionIfNotExistsTask($processUid, $taskUid, $this->arrayParamException["taskUid"]); + if (!isset($arrayData["STEP_TYPE_OBJ"])) { throw new \Exception(\G::LoadTranslation("ID_UNDEFINED_VALUE_IS_REQUIRED", array($this->arrayParamException["stepTypeObj"]))); } @@ -495,7 +481,9 @@ class Step $step->setArrayParamException($this->arrayParamException); //Verify data - $this->throwExceptionIfNotExistsTask($taskUid); + $task = new \ProcessMaker\BusinessModel\Task(); + + $task->throwExceptionIfNotExistsTask("", $taskUid, $this->arrayParamException["taskUid"]); //Get data $criteria = new \Criteria("workflow"); @@ -638,7 +626,9 @@ class Step } if ($stepUid == "") { - $this->throwExceptionIfNotExistsTask($taskUid); + $task = new \ProcessMaker\BusinessModel\Task(); + + $task->throwExceptionIfNotExistsTask("", $taskUid, $this->arrayParamException["taskUid"]); } //Get data @@ -753,7 +743,9 @@ class Step } if ($stepUid == "") { - $this->throwExceptionIfNotExistsTask($taskUid); + $task = new \ProcessMaker\BusinessModel\Task(); + + $task->throwExceptionIfNotExistsTask("", $taskUid, $this->arrayParamException["taskUid"]); } //Get data @@ -937,10 +929,12 @@ class Step unset($arrayData["STEP_UID"]); //Verify data - $this->throwExceptionIfNotExistsTask($taskUid); + $task = new \ProcessMaker\BusinessModel\Task(); $this->throwExceptionIfNotExistsProcess($processUid); + $task->throwExceptionIfNotExistsTask($processUid, $taskUid, $this->arrayParamException["taskUid"]); + if (!isset($arrayData["STEP_TYPE_OBJ"])) { throw new \Exception(\G::LoadTranslation("ID_UNDEFINED_VALUE_IS_REQUIRED", array($this->arrayParamException["stepTypeObj"]))); } diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/Task.php b/workflow/engine/src/ProcessMaker/BusinessModel/Task.php index 6f4560130..6478af539 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/Task.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/Task.php @@ -64,18 +64,34 @@ class Task } /** - * Verify if doesn't exist the Task in table TASK + * Verify if doesn't exists the Task * - * @param string $taskUid Unique id of Task + * @param string $processUid Unique id of Process + * @param string $taskUid Unique id of Task + * @param string $fieldNameForException Field name for the exception * - * return void Throw exception if doesn't exist the Task in table TASK + * return void Throw exception if doesn't exists the Task */ - public function throwExceptionIfNotExistsTask($taskUid) + public function throwExceptionIfNotExistsTask($processUid, $taskUid, $fieldNameForException) { - $task = new \Task(); + try { + $criteria = new \Criteria("workflow"); - if (!$task->taskExists($taskUid)) { - throw new \Exception(\G::LoadTranslation("ID_ACTIVITY_DOES_NOT_EXIST", array($this->arrayParamException["taskUid"], $taskUid))); + $criteria->addSelectColumn(\TaskPeer::TAS_UID); + + if ($processUid != "") { + $criteria->add(\TaskPeer::PRO_UID, $processUid, \Criteria::EQUAL); + } + + $criteria->add(\TaskPeer::TAS_UID, $taskUid, \Criteria::EQUAL); + + $rsCriteria = \TaskPeer::doSelectRS($criteria); + + if (!$rsCriteria->next()) { + throw new \Exception(\G::LoadTranslation("ID_ACTIVITY_DOES_NOT_EXIST", array($fieldNameForException, $taskUid))); + } + } catch (\Exception $e) { + throw $e; } } @@ -475,7 +491,7 @@ class Task $arrayAvailableStep = array(); //Verify data - $this->throwExceptionIfNotExistsTask($taskUid); + $this->throwExceptionIfNotExistsTask("", $taskUid, $this->arrayParamException["taskUid"]); //Load Task $task = new \Task(); @@ -678,7 +694,7 @@ class Task $step->setArrayParamException($this->arrayParamException); //Verify data - $this->throwExceptionIfNotExistsTask($taskUid); + $this->throwExceptionIfNotExistsTask("", $taskUid, $this->arrayParamException["taskUid"]); //Get data $criteria = new \Criteria("workflow"); @@ -753,277 +769,383 @@ class Task } /** - * Return a assignee list of an activity + * Get data of a Task-Assignee from a record * - * @param string $sProcessUID {@min 32} {@max 32} - * @param string $sTaskUID {@min 32} {@max 32} - * @param string $filter - * @param int $start - * @param int $limit - * @param string $type + * @param array $record Record + * @param int $taskUserType * - * return array - * - * @access public + * return array Return an array with data Task-Assignee */ - public function getTaskAssignees($sProcessUID, $sTaskUID, $filter, $start, $limit, $type) + public function getTaskAssigneeDataFromRecord(array $record, $taskUserType) { try { - require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RbacUsers.php"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "TaskUser.php"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "GroupUser.php"); - Validator::proUid($sProcessUID, '$prj_uid'); - $this->validateActUid($sTaskUID); - $aUsers = array(); - $sDelimiter = \DBAdapter::getStringDelimiter(); - $oCriteria = new \Criteria('workflow'); - $oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE'); - $oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID); - $oCriteria->addSelectColumn(\TaskUserPeer::USR_UID); - $oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE); - $oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions[] = array(\TaskUserPeer::USR_UID, 'C.CON_ID' ); - $aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter ); - $aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN); - $oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID); - $oCriteria->add(\TaskUserPeer::TU_TYPE, 1); - $oCriteria->add(\TaskUserPeer::TU_RELATION, 2); - $oDataset = \TaskUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $c = 0; - $oTasks = new \Tasks(); - $aAux = $oTasks->getGroupsOfTask($sTaskUID, 1); - $aUIDS1 = array(); - foreach ($aAux as $aGroup) { - $aUIDS1[] = $aGroup['GRP_UID']; + switch ($taskUserType) { + case 1: + return array( + "aas_uid" => $record[0], + "aas_name" => $record[1], + "aas_lastname" => $record[2], + "aas_username" => $record[3], + "aas_type" => $record[4] + ); + break; + case 2: + return array( + "ada_uid" => $record[0], + "ada_name" => $record[1], + "ada_lastname" => $record[2], + "ada_username" => $record[3], + "ada_type" => $record[4] + ); + break; } - $criteria = new \Criteria( 'workflow' ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_UID ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_STATUS ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_UX ); - $criteria->addAsColumn( 'GRP_TITLE', \ContentPeer::CON_VALUE ); - $criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN ); - $criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' ); - $criteria->add( \ContentPeer::CON_LANG, SYS_LANG ); - $criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE ); - if ($filter != '') { - $criteria->add( \ContentPeer::CON_VALUE, '%' . $filter . '%', \Criteria::LIKE ); - } - $oDataset = \GroupwfPeer::doSelectRS( $criteria ); - $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); - $groups = array (); - while ($oDataset->next()) { - $groups[] = $oDataset->getRow(); - } - $result = array ('rows' => $groups); - foreach ($result['rows'] as $results) { - if (in_array($results['GRP_UID'], $aUIDS1)) { - $c++; - $oCriteria = new \Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); - $oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']); - $oDataset2 = \GroupUserPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - if ($type == '' || $type == 'group') { - $aUsers[] = array('aas_uid' => $results['GRP_UID'], - 'aas_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $results['GRP_TITLE'] . - ' (' . $aRow2['MEMBERS_NUMBER'] . ' ' . - ((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')). - ')' . '' : $results['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']), - 'aas_lastname' => "", - 'aas_username' => "", - 'aas_type' => "group" ); - } - } - } - $oCriteria = new \Criteria('workflow'); - $oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL); - if ($filter != '') { - $oCriteria->add( $oCriteria->getNewCriterion( \UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE ) )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE ) ) ); - } - $oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID); - $oCriteria->addSelectColumn(\TaskUserPeer::USR_UID); - $oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE); - $oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION); - $oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN); - $oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID); - $oCriteria->add(\TaskUserPeer::TU_TYPE, 1); - $oCriteria->add(\TaskUserPeer::TU_RELATION, 1); - $oDataset = \TaskUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($type == '' || $type == 'user') { - $aUsers[] = array('aas_uid' => $aRow['USR_UID'], - 'aas_name' => $aRow['USR_FIRSTNAME'], - 'aas_lastname' => $aRow['USR_LASTNAME'], - 'aas_username' => $aRow['USR_USERNAME'], - 'aas_type' => "user" ); - } - $oDataset->next(); - } - if ($start) { - if ($start < 0) { - throw (new \Exception( 'Invalid value specified for start.')); - } - } else { - $start = 0; - } - if (isset($limit)) { - if ($limit < 0) { - throw (new \Exception( 'Invalid value specified for limit.')); - } else { - if ($limit == 0) { - return array(); - } - } - } else { - $limit = count($aUsers) + 1; - } - $aUsers = $this->arrayPagination($aUsers, $start, $limit); - return $aUsers; } catch (\Exception $e) { throw $e; } } /** - * Return the available users and users groups to assigned to an activity + * Return an assignee list of an activity * - * @param string $sProcessUID {@min 32} {@max 32} - * @param string $sTaskUID {@min 32} {@max 32} - * @param string $filter + * @param string $processUid + * @param string $taskUid + * @param string $option + * @param int $taskUserType + * @param array $arrayFilterData * @param int $start * @param int $limit * @param string $type * * return array - * - * @access public */ - public function getTaskAvailableAssignee($sProcessUID, $sTaskUID, $filter, $start, $limit, $type) + public function getTaskAssignees($processUid, $taskUid, $option, $taskUserType, $arrayFilterData = null, $start = null, $limit = null, $type = null) { try { - require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RbacUsers.php"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "TaskUser.php"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "GroupUser.php"); - Validator::proUid($sProcessUID, '$prj_uid'); - $this->validateActUid($sTaskUID); - $iType = 1; - $oTasks = new \Tasks(); - $aAux = $oTasks->getGroupsOfTask($sTaskUID, $iType); - $aUIDS1 = array(); - $aUIDS2 = array(); - foreach ($aAux as $aGroup) { - $aUIDS1[] = $aGroup['GRP_UID']; + $arrayAssignee = array(); + + $numRecTotal = 0; + $startbk = $start; + $limitbk = $limit; + + //Verify data + $process = new \ProcessMaker\BusinessModel\Process(); + + $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), array("start" => "start", "limit" => "limit")); + + $arrayFieldDefinition = array( + "OPTION" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array("ASSIGNEE", "AVAILABLE"), "fieldNameAux" => "option"), + "TASK_USER_TYPE" => array("type" => "int", "required" => true, "empty" => false, "defaultValues" => array(1, 2), "fieldNameAux" => "taskUserType") + ); + + $process->throwExceptionIfDataNotMetFieldDefinition(array("OPTION" => $option, "TASK_USER_TYPE" => $taskUserType), $arrayFieldDefinition, array("option" => "option", "taskUserType" => "taskUserType"), false); + + //Set variables + $filterName = "filter"; + + if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"])) { + $arrayAux = array( + "" => "filter", + "LEFT" => "lfilter", + "RIGHT" => "rfilter" + ); + + $filterName = $arrayAux[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""]; } - $aAux = $oTasks->getUsersOfTask($sTaskUID, $iType); - foreach ($aAux as $aUser) { - $aUIDS2[] = $aUser['USR_UID']; + + //Get data + if (!is_null($limit) && $limit . "" == "0") { + //Return + return array( + "total" => $numRecTotal, + "start" => (int)((!is_null($startbk))? $startbk : 0), + "limit" => (int)((!is_null($limitbk))? $limitbk : 0), + $filterName => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]))? $arrayFilterData["filter"] : "", + "data" => $arrayAssignee + ); } - $aUsers = array(); - $c = 0; - $oTasks = new \Tasks(); - $aAux = $oTasks->getGroupsOfTask($sTaskUID, 1); - $aUIDS1 = array(); - foreach ($aAux as $aGroup) { - $aUIDS1[] = $aGroup['GRP_UID']; + + //Verify data + $process->throwExceptionIfNotExistsProcess($processUid, "prj_uid"); + + $this->throwExceptionIfNotExistsTask($processUid, $taskUid, "act_uid"); + + //Set variables + $numRecTotalGroup = 0; + $numRecTotalUser = 0; + + switch ($option) { + case "ASSIGNEE": + break; + case "AVAILABLE": + $task = new \Tasks(); + + $arrayGroupUid = array(); + + foreach ($task->getGroupsOfTask($taskUid, $taskUserType) as $value) { + $arrayGroupUid[] = $value['GRP_UID']; + } + + $arrayUserUid = array(); + + foreach ($task->getUsersOfTask($taskUid, $taskUserType) as $value) { + $arrayUserUid[] = $value['USR_UID']; + } + break; } - $criteria = new \Criteria( 'workflow' ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_UID ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_STATUS ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_UX ); - $criteria->addAsColumn( 'GRP_TITLE', \ContentPeer::CON_VALUE ); - $criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN ); - $criteria->add(\GroupwfPeer::GRP_STATUS, "ACTIVE", \Criteria::EQUAL); - $criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' ); - $criteria->add( \ContentPeer::CON_LANG, SYS_LANG ); - $criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE ); - if ($filter != '') { - $criteria->add( \ContentPeer::CON_VALUE, '%' . $filter . '%', \Criteria::LIKE ); + + //Groups + //Query + if (empty($type) || $type == "group") { + $criteriaGroup = new \Criteria("workflow"); + + $criteriaGroup->addSelectColumn(\GroupwfPeer::GRP_UID); + $criteriaGroup->addAsColumn("GRP_TITLE", \ContentPeer::CON_VALUE); + + switch ($option) { + case "ASSIGNEE": + $criteriaGroup->addJoin(\TaskUserPeer::USR_UID, \GroupwfPeer::GRP_UID, \Criteria::LEFT_JOIN); + $criteriaGroup->add(\TaskUserPeer::TAS_UID, $taskUid, \Criteria::EQUAL); + $criteriaGroup->add(\TaskUserPeer::TU_TYPE, $taskUserType, \Criteria::EQUAL); + $criteriaGroup->add(\TaskUserPeer::TU_RELATION, 2, \Criteria::EQUAL); + break; + case "AVAILABLE": + $criteriaGroup->add(\GroupwfPeer::GRP_UID, $arrayGroupUid, \Criteria::NOT_IN); + break; + } + + $criteriaGroup->addJoin(\GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN); + $criteriaGroup->add(\ContentPeer::CON_CATEGORY, "GRP_TITLE", \Criteria::EQUAL); + $criteriaGroup->add(\ContentPeer::CON_LANG, SYS_LANG, \Criteria::EQUAL); + + if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") { + $arraySearch = array( + "" => "%" . $arrayFilterData["filter"] . "%", + "LEFT" => $arrayFilterData["filter"] . "%", + "RIGHT" => "%" . $arrayFilterData["filter"] + ); + + $search = $arraySearch[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""]; + + $criteriaGroup->add(\ContentPeer::CON_VALUE, $search, \Criteria::LIKE); + } + + $criteriaGroup->add(\GroupwfPeer::GRP_STATUS, "ACTIVE", \Criteria::EQUAL); + + //Number records total + $criteriaCount = clone $criteriaGroup; + + $criteriaCount->clearSelectColumns(); + $criteriaCount->addSelectColumn("COUNT(" . \GroupwfPeer::GRP_UID . ") AS NUM_REC"); + + switch ($option) { + case "ASSIGNEE": + $rsCriteriaCount = \TaskUserPeer::doSelectRS($criteriaCount); + break; + case "AVAILABLE": + $rsCriteriaCount = \GroupwfPeer::doSelectRS($criteriaCount); + break; + } + + $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $result = $rsCriteriaCount->next(); + $row = $rsCriteriaCount->getRow(); + + $numRecTotalGroup = (int)($row["NUM_REC"]); + $numRecTotal = $numRecTotal + $numRecTotalGroup; } - $oDataset = \GroupwfPeer::doSelectRS( $criteria ); - $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); - $groups = array (); - while ($oDataset->next()) { - $groups[] = $oDataset->getRow(); + + //Users + //Query + if (empty($type) || $type == "user") { + $criteriaUser = new \Criteria("workflow"); + + $criteriaUser->addSelectColumn(\UsersPeer::USR_UID); + $criteriaUser->addSelectColumn(\UsersPeer::USR_USERNAME); + $criteriaUser->addSelectColumn(\UsersPeer::USR_FIRSTNAME); + $criteriaUser->addSelectColumn(\UsersPeer::USR_LASTNAME); + + switch ($option) { + case "ASSIGNEE": + $criteriaUser->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN); + $criteriaUser->add(\TaskUserPeer::TAS_UID, $taskUid, \Criteria::EQUAL); + $criteriaUser->add(\TaskUserPeer::TU_TYPE, $taskUserType, \Criteria::EQUAL); + $criteriaUser->add(\TaskUserPeer::TU_RELATION, 1, \Criteria::EQUAL); + break; + case "AVAILABLE": + $criteriaUser->add(\UsersPeer::USR_UID, $arrayUserUid, \Criteria::NOT_IN); + break; + } + + if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") { + $arraySearch = array( + "" => "%" . $arrayFilterData["filter"] . "%", + "LEFT" => $arrayFilterData["filter"] . "%", + "RIGHT" => "%" . $arrayFilterData["filter"] + ); + + $search = $arraySearch[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""]; + + $criteriaUser->add( + $criteriaUser->getNewCriterion(\UsersPeer::USR_USERNAME, $search, \Criteria::LIKE)->addOr( + $criteriaUser->getNewCriterion(\UsersPeer::USR_FIRSTNAME, $search, \Criteria::LIKE))->addOr( + $criteriaUser->getNewCriterion(\UsersPeer::USR_LASTNAME, $search, \Criteria::LIKE)) + ); + } + + $criteriaUser->add(\UsersPeer::USR_STATUS, "ACTIVE", \Criteria::EQUAL); + + //Number records total + $criteriaCount = clone $criteriaUser; + + $criteriaCount->clearSelectColumns(); + $criteriaCount->addSelectColumn("COUNT(" . \UsersPeer::USR_UID . ") AS NUM_REC"); + + switch ($option) { + case "ASSIGNEE": + $rsCriteriaCount = \TaskUserPeer::doSelectRS($criteriaCount); + break; + case "AVAILABLE": + $rsCriteriaCount = \UsersPeer::doSelectRS($criteriaCount); + break; + } + + $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $result = $rsCriteriaCount->next(); + $row = $rsCriteriaCount->getRow(); + + $numRecTotalUser = (int)($row["NUM_REC"]); + $numRecTotal = $numRecTotal + $numRecTotalUser; } - $result = array ('rows' => $groups); - foreach ($result['rows'] as $results) { - if (! in_array($results['GRP_UID'], $aUIDS1)) { - $c++; - $oCriteria = new \Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); - $oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']); - $oDataset2 = \GroupUserPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - if ($type == '' || $type == 'group') { - $aUsers[] = array('aas_uid' => $results['GRP_UID'], - 'aas_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $results['GRP_TITLE'] . - ' (' . $aRow2['MEMBERS_NUMBER'] . ' ' . - ((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')). - ')' . '' : $results['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']), - 'aas_lastname' => "", - 'aas_username' => "", - 'aas_type' => "group" ); + + //Groups + //Query + if (empty($type) || $type == "group") { + $criteriaGroup->addAscendingOrderByColumn("GRP_TITLE"); + + if (!is_null($start)) { + $criteriaGroup->setOffset((int)($start)); + } + + if (!is_null($limit)) { + $criteriaGroup->setLimit((int)($limit)); + } + + switch ($option) { + case "ASSIGNEE": + $rsCriteriaGroup = \TaskUserPeer::doSelectRS($criteriaGroup); + break; + case "AVAILABLE": + $rsCriteriaGroup = \GroupwfPeer::doSelectRS($criteriaGroup); + break; + } + + $rsCriteriaGroup->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $numRecGroup = 0; + + while ($rsCriteriaGroup->next()) { + $row = $rsCriteriaGroup->getRow(); + + $criteria2 = new \Criteria("workflow"); + + $criteria2->addSelectColumn("COUNT(" . \GroupUserPeer::GRP_UID . ") AS NUM_MEM"); + $criteria2->add(\GroupUserPeer::GRP_UID, $row["GRP_UID"], \Criteria::EQUAL); + + $rsCriteria2 = \GroupUserPeer::doSelectRS($criteria2); + $rsCriteria2->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $result = $rsCriteria2->next(); + $row2 = $rsCriteria2->getRow(); + + $arrayAssignee[] = $this->getTaskAssigneeDataFromRecord( + array( + $row["GRP_UID"], + $row["GRP_TITLE"] . " (" . $row2["NUM_MEM"] . " " . \G::LoadTranslation(((int)($row2["NUM_MEM"]) == 1)? "ID_USER" : "ID_USERS") . ")", + "", + "", + "group" + ), + $taskUserType + ); + + $numRecGroup++; + } + } + + //Users + //Query + if (empty($type) || $type == "user") { + $flagUser = true; + + if ($numRecTotalGroup > 0) { + if ($numRecGroup > 0) { + if (!is_null($limit)) { + if ($numRecGroup < (int)($limit)) { + $start = 0; + $limit = $limit - $numRecGroup; + } else { + $flagUser = false; + } + } else { + $start = 0; + } + } else { + $start = (int)($start) - $numRecTotalGroup; + } + } + + if ($flagUser) { + //Users + //Query + $criteriaUser->addAscendingOrderByColumn(\UsersPeer::USR_FIRSTNAME); + + if (!is_null($start)) { + $criteriaUser->setOffset((int)($start)); + } + + if (!is_null($limit)) { + $criteriaUser->setLimit((int)($limit)); + } + + switch ($option) { + case "ASSIGNEE": + $rsCriteriaUser = \TaskUserPeer::doSelectRS($criteriaUser); + break; + case "AVAILABLE": + $rsCriteriaUser = \UsersPeer::doSelectRS($criteriaUser); + break; + } + + $rsCriteriaUser->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteriaUser->next()) { + $row = $rsCriteriaUser->getRow(); + + + $arrayAssignee[] = $this->getTaskAssigneeDataFromRecord( + array( + $row["USR_UID"], + $row["USR_FIRSTNAME"], + $row["USR_LASTNAME"], + $row["USR_USERNAME"], + "user" + ), + $taskUserType + ); } } } - $oCriteria = new \Criteria('workflow'); - $oCriteria->addSelectColumn(\UsersPeer::USR_UID); - $oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL); - if ($filter != '') { - $oCriteria->add( $oCriteria->getNewCriterion( \UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE ) )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE ) ) ); - } - $oCriteria->add(\UsersPeer::USR_STATUS, 'ACTIVE'); - $oCriteria->add(\UsersPeer::USR_UID, $aUIDS2, \Criteria::NOT_IN); - $oDataset = \UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($type == '' || $type == 'user') { - $aUsers[] = array('aas_uid' => $aRow['USR_UID'], - 'aas_name' => $aRow['USR_FIRSTNAME'], - 'aas_lastname' => $aRow['USR_LASTNAME'], - 'aas_username' => $aRow['USR_USERNAME'], - 'aas_type' => "user" ); - } - $oDataset->next(); - } - if ($start) { - if ($start < 0) { - throw new \Exception(\G::LoadTranslation("ID_INVALID_START")); - } - } else { - $start = 0; - } - if (isset($limit)) { - if ($limit < 0) { - throw new \Exception(\G::LoadTranslation("ID_INVALID_LIMIT")); - } else { - if ($limit == 0) { - return array(); - } - } - } else { - $limit = count($aUsers) + 1; - } - $aUsers = $this->arrayPagination($aUsers, $start, $limit); - return $aUsers; + + //Return + return array( + "total" => $numRecTotal, + "start" => (int)((!is_null($startbk))? $startbk : 0), + "limit" => (int)((!is_null($limitbk))? $limitbk : 0), + $filterName => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]))? $arrayFilterData["filter"] : "", + "data" => $arrayAssignee + ); } catch (\Exception $e) { throw $e; } @@ -1253,283 +1375,6 @@ class Task } } - /** - * Return a adhoc assignee list of an activity - * - * @param string $sProcessUID {@min 32} {@max 32} - * @param string $sTaskUID {@min 32} {@max 32} - * @param string $filter - * @param int $start - * @param int $limit - * @param string $type - * - * return array - * - * @access public - */ - public function getTaskAdhocAssignees($sProcessUID, $sTaskUID, $filter, $start, $limit, $type) - { - try { - require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RbacUsers.php"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "TaskUser.php"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "GroupUser.php"); - Validator::proUid($sProcessUID, '$prj_uid'); - $this->validateActUid($sTaskUID); - $aUsers = array(); - $sDelimiter = \DBAdapter::getStringDelimiter(); - $oCriteria = new \Criteria('workflow'); - $oCriteria->addAsColumn('GRP_TITLE', 'C.CON_VALUE'); - $oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID); - $oCriteria->addSelectColumn(\TaskUserPeer::USR_UID); - $oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE); - $oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION); - $oCriteria->addAlias('C', 'CONTENT'); - $aConditions = array(); - $aConditions[] = array(\TaskUserPeer::USR_UID, 'C.CON_ID' ); - $aConditions[] = array('C.CON_CATEGORY', $sDelimiter . 'GRP_TITLE' . $sDelimiter ); - $aConditions[] = array('C.CON_LANG', $sDelimiter . SYS_LANG . $sDelimiter ); - $oCriteria->addJoinMC($aConditions, \Criteria::LEFT_JOIN); - $oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID); - $oCriteria->add(\TaskUserPeer::TU_TYPE, 2); - $oCriteria->add(\TaskUserPeer::TU_RELATION, 2); - $oDataset = \TaskUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - $c = 0; - $oTasks = new \Tasks(); - $aAux = $oTasks->getGroupsOfTask($sTaskUID, 2); - $aUIDS1 = array(); - foreach ($aAux as $aGroup) { - $aUIDS1[] = $aGroup['GRP_UID']; - } - $criteria = new \Criteria( 'workflow' ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_UID ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_STATUS ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_UX ); - $criteria->addAsColumn( 'GRP_TITLE', \ContentPeer::CON_VALUE ); - $criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN ); - $criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' ); - $criteria->add( \ContentPeer::CON_LANG, SYS_LANG ); - $criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE ); - if ($filter != '') { - $criteria->add( \ContentPeer::CON_VALUE, '%' . $filter . '%', \Criteria::LIKE ); - } - $oDataset = \GroupwfPeer::doSelectRS( $criteria ); - $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); - $groups = array (); - while ($oDataset->next()) { - $groups[] = $oDataset->getRow(); - } - $result = array ('rows' => $groups); - foreach ($result['rows'] as $results) { - if (in_array($results['GRP_UID'], $aUIDS1)) { - $c++; - $oCriteria = new \Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); - $oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']); - $oDataset2 = \GroupUserPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - if ($type == '' || $type == 'group') { - $aUsers[] = array('ada_uid' => $results['GRP_UID'], - 'ada_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $results['GRP_TITLE'] . - ' (' . $aRow2['MEMBERS_NUMBER'] . ' ' . - ((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')). - ')' . '' : $results['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']), - 'ada_lastname' => "", - 'ada_username' => "", - 'ada_type' => "group" ); - } - } - } - $oCriteria = new \Criteria('workflow'); - $oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL); - if ($filter != '') { - $oCriteria->add( $oCriteria->getNewCriterion( \UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE ) )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE ) ) ); - } - $oCriteria->addSelectColumn(\TaskUserPeer::TAS_UID); - $oCriteria->addSelectColumn(\TaskUserPeer::USR_UID); - $oCriteria->addSelectColumn(\TaskUserPeer::TU_TYPE); - $oCriteria->addSelectColumn(\TaskUserPeer::TU_RELATION); - $oCriteria->addJoin(\TaskUserPeer::USR_UID, \UsersPeer::USR_UID, \Criteria::LEFT_JOIN); - $oCriteria->add(\TaskUserPeer::TAS_UID, $sTaskUID); - $oCriteria->add(\TaskUserPeer::TU_TYPE, 2); - $oCriteria->add(\TaskUserPeer::TU_RELATION, 1); - $oDataset = \TaskUserPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($type == '' || $type == 'user') { - $aUsers[] = array('ada_uid' => $aRow['USR_UID'], - 'ada_name' => $aRow['USR_FIRSTNAME'], - 'ada_lastname' => $aRow['USR_LASTNAME'], - 'ada_username' => $aRow['USR_USERNAME'], - 'ada_type' => "user" ); - } - $oDataset->next(); - } - if ($start) { - if ($start < 0) { - throw new \Exception(\G::LoadTranslation("ID_INVALID_START")); - } - } else { - $start = 0; - } - if (isset($limit)) { - if ($limit < 0) { - throw new \Exception(\G::LoadTranslation("ID_INVALID_LIMIT")); - } else { - if ($limit == 0) { - return array(); - } - } - } else { - $limit = count($aUsers) + 1; - } - $aUsers = $this->arrayPagination($aUsers, $start, $limit); - return $aUsers; - } catch (\Exception $e) { - throw $e; - } - } - - /** - * Return the available adhoc users and users groups to assigned to an activity - * - * @param string $sProcessUID {@min 32} {@max 32} - * @param string $sTaskUID {@min 32} {@max 32} - * @param string $filter - * @param int $start - * @param int $limit - * @param string $type - * - * return array - * - * @access public - */ - public function getTaskAvailableAdhocAssignee($sProcessUID, $sTaskUID, $filter, $start, $limit, $type) - { - try { - require_once (PATH_RBAC_HOME . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "RbacUsers.php"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "TaskUser.php"); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "GroupUser.php"); - Validator::proUid($sProcessUID, '$prj_uid'); - $this->validateActUid($sTaskUID); - $iType = 2; - $oTasks = new \Tasks(); - $aAux = $oTasks->getGroupsOfTask($sTaskUID, $iType); - $aUIDS1 = array(); - $aUIDS2 = array(); - foreach ($aAux as $aGroup) { - $aUIDS1[] = $aGroup['GRP_UID']; - } - $aAux = $oTasks->getUsersOfTask($sTaskUID, $iType); - foreach ($aAux as $aUser) { - $aUIDS2[] = $aUser['USR_UID']; - } - $aUsers = array(); - $c = 0; - $oTasks = new \Tasks(); - $aAux = $oTasks->getGroupsOfTask($sTaskUID, 2); - $aUIDS1 = array(); - foreach ($aAux as $aGroup) { - $aUIDS1[] = $aGroup['GRP_UID']; - } - $criteria = new \Criteria( 'workflow' ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_UID ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_STATUS ); - $criteria->addSelectColumn( \GroupwfPeer::GRP_UX ); - $criteria->add(\GroupwfPeer::GRP_STATUS, "ACTIVE", \Criteria::EQUAL); - $criteria->addAsColumn( 'GRP_TITLE', \ContentPeer::CON_VALUE ); - $criteria->addJoin( \GroupwfPeer::GRP_UID, \ContentPeer::CON_ID, \Criteria::LEFT_JOIN ); - $criteria->add( \ContentPeer::CON_CATEGORY, 'GRP_TITLE' ); - $criteria->add( \ContentPeer::CON_LANG, SYS_LANG ); - $criteria->addAscendingOrderByColumn( \ContentPeer::CON_VALUE ); - if ($filter != '') { - $criteria->add( \ContentPeer::CON_VALUE, '%' . $filter . '%', \Criteria::LIKE ); - } - $oDataset = \GroupwfPeer::doSelectRS( $criteria ); - $oDataset->setFetchmode( \ResultSet::FETCHMODE_ASSOC ); - $groups = array (); - while ($oDataset->next()) { - $groups[] = $oDataset->getRow(); - } - $result = array ('rows' => $groups); - foreach ($result['rows'] as $results) { - if (! in_array($results['GRP_UID'], $aUIDS1)) { - $c++; - $oCriteria = new \Criteria('workflow'); - $oCriteria->addSelectColumn('COUNT(*) AS MEMBERS_NUMBER'); - $oCriteria->add(\GroupUserPeer::GRP_UID, $results['GRP_UID']); - $oDataset2 = \GroupUserPeer::doSelectRS($oCriteria); - $oDataset2->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset2->next(); - $aRow2 = $oDataset2->getRow(); - if ($type == '' || $type == 'group') { - $aUsers[] = array('ada_uid' => $results['GRP_UID'], - 'ada_name' => (!isset($aRow2['GROUP_INACTIVE']) ? $results['GRP_TITLE'] . - ' (' . $aRow2['MEMBERS_NUMBER'] . ' ' . - ((int) $aRow2['MEMBERS_NUMBER'] == 1 ? \G::LoadTranslation('ID_USER') : \G::LoadTranslation('ID_USERS')). - ')' . '' : $results['GRP_TITLE'] . ' ' . $aRow2['GROUP_INACTIVE']), - 'ada_lastname' => "", - 'ada_username' => "", - 'ada_type' => "group" ); - } - } - } - $oCriteria = new \Criteria('workflow'); - $oCriteria->addSelectColumn(\UsersPeer::USR_UID); - $oCriteria->addSelectColumn(\UsersPeer::USR_USERNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_FIRSTNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_LASTNAME); - $oCriteria->addSelectColumn(\UsersPeer::USR_EMAIL); - if ($filter != '') { - $oCriteria->add( $oCriteria->getNewCriterion( \UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE ) )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE ) ) ); - } - $oCriteria->add(\UsersPeer::USR_STATUS, 'ACTIVE'); - $oCriteria->add(\UsersPeer::USR_UID, $aUIDS2, \Criteria::NOT_IN); - $oDataset = \UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - $oDataset->next(); - while ($aRow = $oDataset->getRow()) { - if ($type == '' || $type == 'user') { - $aUsers[] = array('ada_uid' => $aRow['USR_UID'], - 'ada_name' => $aRow['USR_FIRSTNAME'], - 'ada_lastname' => $aRow['USR_LASTNAME'], - 'ada_username' => $aRow['USR_USERNAME'], - 'ada_type' => "user" ); - } - $oDataset->next(); - } - if ($start) { - if ($start < 0) { - throw new \Exception(\G::LoadTranslation("ID_INVALID_START")); - } - } else { - $start = 0; - } - if (isset($limit)) { - if ($limit < 0) { - throw new \Exception(\G::LoadTranslation("ID_INVALID_LIMIT")); - } else { - if ($limit == 0) { - return array(); - } - } - } else { - $limit = count($aUsers) + 1; - } - $aUsers = $this->arrayPagination($aUsers, $start, $limit); - return $aUsers; - } catch (\Exception $e) { - throw $e; - } - } - /** * Return a single Adhoc user or group assigned to an activity * @@ -1751,7 +1596,8 @@ class Task if (! is_null( $oTaskUser )) { \TaskUserPeer::doDelete($oCriteria); - $arrayTaskAdhocAssignees = $this->getTaskAdhocAssignees($sProcessUID, $sTaskUID, "", null, null, ""); + $arrayAux = $this->getTaskAssignees($sProcessUID, $sTaskUID, "ASSIGNEE", 2); + $arrayTaskAdhocAssignees = $arrayAux["data"]; if (empty($arrayTaskAdhocAssignees)) { $task = new \Task(); diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/User.php b/workflow/engine/src/ProcessMaker/BusinessModel/User.php index a81d6c88c..97411d669 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/User.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/User.php @@ -4,7 +4,6 @@ use \G; class User { - //--- --- private $arrayFieldDefinition = array( "USR_UID" => array("type" => "string", "required" => false, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "usrUid"), "USR_FIRSTNAME" => array("type" => "string", "required" => true, "empty" => false, "defaultValues" => array(), "fieldNameAux" => "usrFirstname"), @@ -29,7 +28,6 @@ class User "USR_BIRTHDAY" => array("type" => "date", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "usrBirthday"), "USR_FAX" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "usrFax"), "USR_CELLULAR" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "usrCellular"), - /*----------------------------------********---------------------------------*/ "USR_COST_BY_HOUR" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "usrCostByHour"), "USR_UNIT_COST" => array("type" => "string", "required" => false, "empty" => true, "defaultValues" => array(), "fieldNameAux" => "usrUnitCost"), @@ -348,7 +346,7 @@ class User return array( $this->getFieldNameByFormatFieldName("USR_UID") => $record["USR_UID"], $this->getFieldNameByFormatFieldName("USR_USERNAME") => $record["USR_USERNAME"], - $this->getFieldNameByFormatFieldName("USR_PASSWORD") => $record["USR_PASSWORD"], + //$this->getFieldNameByFormatFieldName("USR_PASSWORD") => $record["USR_PASSWORD"], $this->getFieldNameByFormatFieldName("USR_FIRSTNAME") => $record["USR_FIRSTNAME"], $this->getFieldNameByFormatFieldName("USR_LASTNAME") => $record["USR_LASTNAME"], $this->getFieldNameByFormatFieldName("USR_EMAIL") => $record["USR_EMAIL"], @@ -759,7 +757,6 @@ class User throw $e; } } - //--- /--- /** * Create User Uid @@ -777,7 +774,7 @@ class User if ($pluginRegistry->existsTrigger(PM_BEFORE_CREATE_USER)) { try { $pluginRegistry->executeTriggers(PM_BEFORE_CREATE_USER, null); - } catch(Exception $error) { + } catch (Exception $error) { throw new Exception($error->getMessage()); } } @@ -1031,51 +1028,130 @@ class User /** * Get all Users * - * @param string $filter - * @param int $start - * @param int $limit + * @param array $arrayFilterData Data of the filters + * @param string $sortField Field name to sort + * @param string $sortDir Direction of sorting (ASC, DESC) + * @param int $start Start + * @param int $limit Limit * * return array Return an array with all Users */ - public function getUsers($filter, $start, $limit) + public function getUsers($arrayFilterData = null, $sortField = null, $sortDir = null, $start = null, $limit = null) { try { - $aUserInfo = array(); - require_once (PATH_TRUNK . "workflow" . PATH_SEP . "engine" . PATH_SEP . "classes" . PATH_SEP . "model" . PATH_SEP . "Users.php"); + $arrayUser = array(); - $oCriteria = $this->getUserCriteria(); + $numRecTotal = 0; - if ($filter != '') { - $oCriteria->add( $oCriteria->getNewCriterion( \UsersPeer::USR_USERNAME, "%$filter%", \Criteria::LIKE )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_FIRSTNAME, "%$filter%", \Criteria::LIKE ) )->addOr( $oCriteria->getNewCriterion( \UsersPeer::USR_LASTNAME, "%$filter%", \Criteria::LIKE ) ) ); + //Verify data + $process = new \ProcessMaker\BusinessModel\Process(); + + $process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), array("start" => "start", "limit" => "limit")); + + //Set variables + $filterName = "filter"; + + if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"])) { + $arrayAux = array( + "" => "filter", + "LEFT" => "lfilter", + "RIGHT" => "rfilter" + ); + + $filterName = $arrayAux[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""]; } - if ($start) { - if ($start < 0) { - throw new \Exception(\G::LoadTranslation("ID_INVALID_START")); + + //Get data + if (!is_null($limit) && $limit . "" == "0") { + //Return + return array( + "total" => $numRecTotal, + "start" => (int)((!is_null($start))? $start : 0), + "limit" => (int)((!is_null($limit))? $limit : 0), + $filterName => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]))? $arrayFilterData["filter"] : "", + "data" => $arrayUser + ); + } + + //Query + $criteria = $this->getUserCriteria(); + + if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") { + $arraySearch = array( + "" => "%" . $arrayFilterData["filter"] . "%", + "LEFT" => $arrayFilterData["filter"] . "%", + "RIGHT" => "%" . $arrayFilterData["filter"] + ); + + $search = $arraySearch[(isset($arrayFilterData["filterOption"]))? $arrayFilterData["filterOption"] : ""]; + + $criteria->add( + $criteria->getNewCriterion(\UsersPeer::USR_USERNAME, $search, \Criteria::LIKE)->addOr( + $criteria->getNewCriterion(\UsersPeer::USR_FIRSTNAME, $search, \Criteria::LIKE))->addOr( + $criteria->getNewCriterion(\UsersPeer::USR_LASTNAME, $search, \Criteria::LIKE)) + ); + } + + $criteria->add(\UsersPeer::USR_STATUS, "ACTIVE", \Criteria::EQUAL); + + //Number records total + $criteriaCount = clone $criteria; + + $criteriaCount->clearSelectColumns(); + $criteriaCount->addSelectColumn("COUNT(" . \UsersPeer::USR_UID . ") AS NUM_REC"); + + $rsCriteriaCount = \UsersPeer::doSelectRS($criteriaCount); + $rsCriteriaCount->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + $result = $rsCriteriaCount->next(); + $row = $rsCriteriaCount->getRow(); + + $numRecTotal = (int)($row["NUM_REC"]); + + //Query + if (!is_null($sortField) && trim($sortField) != "") { + $sortField = strtoupper($sortField); + + if (in_array(\UsersPeer::TABLE_NAME . "." . $sortField, $criteria->getSelectColumns())) { + $sortField = \UsersPeer::TABLE_NAME . "." . $sortField; } else { - $oCriteria->setOffset($start); + $sortField = \UsersPeer::USR_FIRSTNAME; } + } else { + $sortField = \UsersPeer::USR_FIRSTNAME; } - if ($limit != '') { - if ($limit < 0) { - throw new \Exception(\G::LoadTranslation("ID_INVALID_LIMIT")); - } else { - if ($limit == 0) { - return $aUserInfo; - } else { - $oCriteria->setLimit($limit); - } - } + + if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") { + $criteria->addDescendingOrderByColumn($sortField); + } else { + $criteria->addAscendingOrderByColumn($sortField); } - $oCriteria->add(\UsersPeer::USR_STATUS, "ACTIVE", \Criteria::EQUAL); - $oDataset = \UsersPeer::doSelectRS($oCriteria); - $oDataset->setFetchmode(\ResultSet::FETCHMODE_ASSOC); - while ($oDataset->next()) { - $aRow1 = $oDataset->getRow(); - $aRow1 = array_change_key_case($aRow1, CASE_LOWER); - $aUserInfo[] = $aRow1; + + if (!is_null($start)) { + $criteria->setOffset((int)($start)); } + + if (!is_null($limit)) { + $criteria->setLimit((int)($limit)); + } + + $rsCriteria = \UsersPeer::doSelectRS($criteria); + $rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC); + + while ($rsCriteria->next()) { + $row = $rsCriteria->getRow(); + + $arrayUser[] = $this->getUserDataFromRecord($row); + } + //Return - return $aUserInfo; + return array( + "total" => $numRecTotal, + "start" => (int)((!is_null($start))? $start : 0), + "limit" => (int)((!is_null($limit))? $limit : 0), + $filterName => (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]))? $arrayFilterData["filter"] : "", + "data" => $arrayUser + ); } catch (\Exception $e) { throw $e; } @@ -1146,3 +1222,4 @@ class User } } } + diff --git a/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php b/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php index d83cdbec0..3f61f990d 100644 --- a/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php +++ b/workflow/engine/src/ProcessMaker/BusinessModel/WebEntry.php @@ -255,7 +255,9 @@ class WebEntry } if (isset($arrayData["TAS_UID"])) { - $process->throwExceptionIfNotExistsTask($processUid, $arrayData["TAS_UID"], $this->arrayFieldNameForException["taskUid"]); + $task = new \ProcessMaker\BusinessModel\Task(); + + $task->throwExceptionIfNotExistsTask($processUid, $arrayData["TAS_UID"], $this->arrayFieldNameForException["taskUid"]); } if (isset($arrayData["DYN_UID"])) { diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Group.php b/workflow/engine/src/ProcessMaker/Services/Api/Group.php index 834247609..2b73e904a 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Group.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Group.php @@ -34,15 +34,20 @@ class Group extends Api /** * @url GET */ - public function index($filter = null, $start = null, $limit = null) + public function index($filter = null, $lfilter = null, $rfilter = null, $start = null, $limit = null) { try { $group = new \ProcessMaker\BusinessModel\Group(); $group->setFormatFieldNameInUppercase(false); - $response = $group->getGroups(array("filter" => $filter), null, null, $start, $limit); + $arrayFilterData = array( + "filter" => (!is_null($filter))? $filter : ((!is_null($lfilter))? $lfilter : ((!is_null($rfilter))? $rfilter : null)), + "filterOption" => (!is_null($filter))? "" : ((!is_null($lfilter))? "LEFT" : ((!is_null($rfilter))? "RIGHT" : "")) + ); - return $response; + $response = $group->getGroups($arrayFilterData, null, null, $start, $limit); + + return $response["data"]; } catch (\Exception $e) { throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity/Assignee.php b/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity/Assignee.php index dbcb53a84..2014cb0dc 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity/Assignee.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/Project/Activity/Assignee.php @@ -11,56 +11,66 @@ use \Luracast\Restler\RestException; */ class Assignee extends Api { + private $task; + /** - * @url GET /:prjUid/activity/:actUid/assignee - * - * @param string $prjUid {@min 32} {@max 32} - * @param string $actUid {@min 32} {@max 32} - * @param string $filter - * @param int $start - * @param int $limit - * @param string $type + * Constructor of the class * + * return void */ - public function doGetActivityAssignees($prjUid, $actUid, $filter = '', $start = null, $limit = null, $type = '') + public function __construct() { - $response = array(); try { - $task = new \ProcessMaker\BusinessModel\Task(); - $arrayData = $task->getTaskAssignees($prjUid, $actUid, $filter, $start, $limit, $type); - //Response - $response = $arrayData; + $this->task = new \ProcessMaker\BusinessModel\Task(); } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } - return $response; } /** - * @url GET /:prjUid/activity/:actUid/available-assignee - * - * @param string $prjUid {@min 32} {@max 32} - * @param string $actUid {@min 32} {@max 32} - * @param string $filter - * @param int $start - * @param int $limit - * @param string $type + * @url GET /:prj_uid/activity/:act_uid/assignee/paged + * @url GET /:prj_uid/activity/:act_uid/assignee * + * @param string $prj_uid {@min 32}{@max 32} + * @param string $act_uid {@min 32}{@max 32} */ - public function doGetActivityAvailableAssignee($prjUid, $actUid, $filter = '', $start = null, $limit = null, $type = '') + public function doGetActivityAssignees($prj_uid, $act_uid, $filter = null, $lfilter = null, $rfilter = null, $start = null, $limit = null, $type = null) { - $response = array(); try { - $task = new \ProcessMaker\BusinessModel\Task(); - $arrayData = $task->getTaskAvailableAssignee($prjUid, $actUid, $filter, $start, $limit, $type); - //Response - $response = $arrayData; + $arrayFilterData = array( + "filter" => (!is_null($filter))? $filter : ((!is_null($lfilter))? $lfilter : ((!is_null($rfilter))? $rfilter : null)), + "filterOption" => (!is_null($filter))? "" : ((!is_null($lfilter))? "LEFT" : ((!is_null($rfilter))? "RIGHT" : "")) + ); + + $response = $this->task->getTaskAssignees($prj_uid, $act_uid, "ASSIGNEE", 1, $arrayFilterData, $start, $limit, $type); + + return (preg_match("/^.*\/paged.*$/", $this->restler->url))? $response : $response["data"]; + } catch (\Exception $e) { + throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); + } + } + + /** + * @url GET /:prj_uid/activity/:act_uid/available-assignee/paged + * @url GET /:prj_uid/activity/:act_uid/available-assignee + * + * @param string $prj_uid {@min 32}{@max 32} + * @param string $act_uid {@min 32}{@max 32} + */ + public function doGetActivityAvailableAssignees($prj_uid, $act_uid, $filter = null, $lfilter = null, $rfilter = null, $start = null, $limit = null, $type = null) + { + try { + $arrayFilterData = array( + "filter" => (!is_null($filter))? $filter : ((!is_null($lfilter))? $lfilter : ((!is_null($rfilter))? $rfilter : null)), + "filterOption" => (!is_null($filter))? "" : ((!is_null($lfilter))? "LEFT" : ((!is_null($rfilter))? "RIGHT" : "")) + ); + + $response = $this->task->getTaskAssignees($prj_uid, $act_uid, "AVAILABLE", 1, $arrayFilterData, $start, $limit, $type); + + return (preg_match("/^.*\/paged.*$/", $this->restler->url))? $response : $response["data"]; } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } - return $response; } /** @@ -69,21 +79,16 @@ class Assignee extends Api * @param string $prjUid {@min 32} {@max 32} * @param string $actUid {@min 32} {@max 32} * @param string $aasUid {@min 32} {@max 32} - * */ public function doGetActivityAssignee($prjUid, $actUid, $aasUid) { - $response = array(); try { - $task = new \ProcessMaker\BusinessModel\Task(); - $objectData = $task->getTaskAssignee($prjUid, $actUid, $aasUid); - //Response - $response = $objectData; + $response = $this->task->getTaskAssignee($prjUid, $actUid, $aasUid); + + return $response; } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } - return $response; } /** @@ -99,10 +104,8 @@ class Assignee extends Api public function doPostActivityAssignee($prjUid, $actUid, $aas_uid, $aas_type) { try { - $task = new \ProcessMaker\BusinessModel\Task(); - $task->addTaskAssignee($prjUid, $actUid, $aas_uid, $aas_type); + $this->task->addTaskAssignee($prjUid, $actUid, $aas_uid, $aas_type); } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } } @@ -113,69 +116,60 @@ class Assignee extends Api * @param string $prjUid {@min 32} {@max 32} * @param string $actUid {@min 32} {@max 32} * @param string $aasUid {@min 32} {@max 32} - * */ public function doDeleteActivityAssignee($prjUid, $actUid, $aasUid) { try { - $task = new \ProcessMaker\BusinessModel\Task(); - $task->removeTaskAssignee($prjUid, $actUid, $aasUid); + $this->task->removeTaskAssignee($prjUid, $actUid, $aasUid); } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } } /** - * @url GET /:prjUid/activity/:actUid/adhoc-assignee - * - * @param string $prjUid {@min 32} {@max 32} - * @param string $actUid {@min 32} {@max 32} - * @param string $filter - * @param int $start - * @param int $limit - * @param string $type + * @url GET /:prj_uid/activity/:act_uid/adhoc-assignee/paged + * @url GET /:prj_uid/activity/:act_uid/adhoc-assignee * + * @param string $prj_uid {@min 32}{@max 32} + * @param string $act_uid {@min 32}{@max 32} */ - public function doGetActivityAdhocAssignees($prjUid, $actUid, $filter = '', $start = null, $limit = null, $type = '') + public function doGetActivityAdhocAssignees($prj_uid, $act_uid, $filter = null, $lfilter = null, $rfilter = null, $start = null, $limit = null, $type = null) { - $response = array(); try { - $task = new \ProcessMaker\BusinessModel\Task(); - $arrayData = $task->getTaskAdhocAssignees($prjUid, $actUid, $filter, $start, $limit, $type); - //Response - $response = $arrayData; + $arrayFilterData = array( + "filter" => (!is_null($filter))? $filter : ((!is_null($lfilter))? $lfilter : ((!is_null($rfilter))? $rfilter : null)), + "filterOption" => (!is_null($filter))? "" : ((!is_null($lfilter))? "LEFT" : ((!is_null($rfilter))? "RIGHT" : "")) + ); + + $response = $this->task->getTaskAssignees($prj_uid, $act_uid, "ASSIGNEE", 2, $arrayFilterData, $start, $limit, $type); + + return (preg_match("/^.*\/paged.*$/", $this->restler->url))? $response : $response["data"]; } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } - return $response; } /** - * @url GET /:prjUid/activity/:actUid/adhoc-available-assignee - * - * @param string $prjUid {@min 32} {@max 32} - * @param string $actUid {@min 32} {@max 32} - * @param string $filter - * @param int $start - * @param int $limit - * @param string $type + * @url GET /:prj_uid/activity/:act_uid/adhoc-available-assignee/paged + * @url GET /:prj_uid/activity/:act_uid/adhoc-available-assignee * + * @param string $prj_uid {@min 32}{@max 32} + * @param string $act_uid {@min 32}{@max 32} */ - public function doGetActivityAvailableAdhocAssignee($prjUid, $actUid, $filter = '', $start = null, $limit = null, $type = '') + public function doGetActivityAdhocAvailableAssignees($prj_uid, $act_uid, $filter = null, $lfilter = null, $rfilter = null, $start = null, $limit = null, $type = null) { - $response = array(); try { - $task = new \ProcessMaker\BusinessModel\Task(); - $arrayData = $task->getTaskAvailableAdhocAssignee($prjUid, $actUid, $filter, $start, $limit, $type); - //Response - $response = $arrayData; + $arrayFilterData = array( + "filter" => (!is_null($filter))? $filter : ((!is_null($lfilter))? $lfilter : ((!is_null($rfilter))? $rfilter : null)), + "filterOption" => (!is_null($filter))? "" : ((!is_null($lfilter))? "LEFT" : ((!is_null($rfilter))? "RIGHT" : "")) + ); + + $response = $this->task->getTaskAssignees($prj_uid, $act_uid, "AVAILABLE", 2, $arrayFilterData, $start, $limit, $type); + + return (preg_match("/^.*\/paged.*$/", $this->restler->url))? $response : $response["data"]; } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } - return $response; } /** @@ -184,21 +178,16 @@ class Assignee extends Api * @param string $prjUid {@min 32} {@max 32} * @param string $actUid {@min 32} {@max 32} * @param string $assUid {@min 32} {@max 32} - * */ public function doGetActivityAdhocAssignee($prjUid, $actUid, $aasUid) { - $response = array(); try { - $task = new \ProcessMaker\BusinessModel\Task(); - $objectData = $task->getTaskAdhocAssignee($prjUid, $actUid, $aasUid); - //Response - $response = $objectData; + $response = $this->task->getTaskAdhocAssignee($prjUid, $actUid, $aasUid); + + return $response; } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } - return $response; } /** @@ -214,10 +203,8 @@ class Assignee extends Api public function doPostActivityAdhocAssignee($prjUid, $actUid, $ada_uid, $ada_type) { try { - $task = new \ProcessMaker\BusinessModel\Task(); - $task->addTaskAdhocAssignee($prjUid, $actUid, $ada_uid, $ada_type); + $this->task->addTaskAdhocAssignee($prjUid, $actUid, $ada_uid, $ada_type); } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } } @@ -228,15 +215,12 @@ class Assignee extends Api * @param string $prjUid {@min 32} {@max 32} * @param string $actUid {@min 32} {@max 32} * @param string $adaUid {@min 32} {@max 32} - * */ public function doDeleteActivityAdhocAssignee($prjUid, $actUid, $adaUid) { try { - $task = new \ProcessMaker\BusinessModel\Task(); - $task->removeTaskAdhocAssignee($prjUid, $actUid, $adaUid); + $this->task->removeTaskAdhocAssignee($prjUid, $actUid, $adaUid); } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } } @@ -250,21 +234,16 @@ class Assignee extends Api * @param int $start * @param int $limit * @param string $type - * */ - public function doGetActivityAssigneesAll($prjUid, $actUid, $filter = '', $start = null, $limit = null, $type = '') + public function doGetActivityAssigneesAll($prjUid, $actUid, $filter = null, $start = null, $limit = null, $type = null) { - $response = array(); try { - $task = new \ProcessMaker\BusinessModel\Task(); - $arrayData = $task->getTaskAssigneesAll($prjUid, $actUid, $filter, $start, $limit, $type); - //Response - $response = $arrayData; + $arrayData = $this->task->getTaskAssigneesAll($prjUid, $actUid, $filter, $start, $limit, $type); + + return $response; } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } - return $response; } /** @@ -276,21 +255,17 @@ class Assignee extends Api * @param int $start * @param int $limit * @param string $type - * */ - public function doGetActivityAdhocAssigneesAll($prjUid, $actUid, $filter = '', $start = null, $limit = null, $type = '') + public function doGetActivityAdhocAssigneesAll($prjUid, $actUid, $filter = null, $start = null, $limit = null, $type = null) { $response = array(); try { - $task = new \ProcessMaker\BusinessModel\Task(); - $arrayData = $task->getTaskAdhocAssigneesAll($prjUid, $actUid, $filter, $start, $limit, $type); - //Response - $response = $arrayData; + $response = $this->task->getTaskAdhocAssigneesAll($prjUid, $actUid, $filter, $start, $limit, $type); + + return $response; } catch (\Exception $e) { - //Response throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } - return $response; } } diff --git a/workflow/engine/src/ProcessMaker/Services/Api/User.php b/workflow/engine/src/ProcessMaker/Services/Api/User.php index d2bf22d01..213849dfd 100644 --- a/workflow/engine/src/ProcessMaker/Services/Api/User.php +++ b/workflow/engine/src/ProcessMaker/Services/Api/User.php @@ -33,18 +33,23 @@ class User extends Api /** * @url GET - * @param string $filter - * @param int $start - * @param int $limit */ - public function doGetUsers($filter = '', $start = null, $limit = null) + public function index($filter = null, $lfilter = null, $rfilter = null, $start = null, $limit = null) { try { $user = new \ProcessMaker\BusinessModel\User(); - $response = $user->getUsers($filter, $start, $limit); - return $response; + $user->setFormatFieldNameInUppercase(false); + + $arrayFilterData = array( + "filter" => (!is_null($filter))? $filter : ((!is_null($lfilter))? $lfilter : ((!is_null($rfilter))? $rfilter : null)), + "filterOption" => (!is_null($filter))? "" : ((!is_null($lfilter))? "LEFT" : ((!is_null($rfilter))? "RIGHT" : "")) + ); + + $response = $user->getUsers($arrayFilterData, null, null, $start, $limit); + + return $response["data"]; } catch (\Exception $e) { - throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage())); + throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()); } } @@ -57,6 +62,8 @@ class User extends Api { try { $user = new \ProcessMaker\BusinessModel\User(); + $user->setFormatFieldNameInUppercase(false); + $response = $user->getUser($usr_uid); return $response; } catch (\Exception $e) { @@ -131,3 +138,4 @@ class User extends Api } } } +