Solving conflicts with branch 3.1-CONTENT
This commit is contained in:
@@ -614,9 +614,13 @@ class Group
|
||||
*
|
||||
* return object
|
||||
*/
|
||||
public function getUserCriteria($groupUid, $arrayFilterData = null, $arrayUserUidExclude = null)
|
||||
public function getUserCriteria($groupUid, array $arrayWhere = null, $arrayUserUidExclude = null)
|
||||
{
|
||||
try {
|
||||
$flag = !is_null($arrayWhere) && is_array($arrayWhere);
|
||||
$flagCondition = $flag && array_key_exists('condition', $arrayWhere);
|
||||
$flagFilter = $flag && array_key_exists('filter', $arrayWhere);
|
||||
|
||||
$criteria = new \Criteria("workflow");
|
||||
|
||||
$criteria->addSelectColumn(\UsersPeer::USR_UID);
|
||||
@@ -631,17 +635,23 @@ class Group
|
||||
$criteria->add(\GroupUserPeer::GRP_UID, $groupUid, \Criteria::EQUAL);
|
||||
}
|
||||
|
||||
$criteria->add(\UsersPeer::USR_STATUS, "CLOSED", \Criteria::NOT_EQUAL);
|
||||
if ($flagCondition && !empty($arrayWhere['condition'])) {
|
||||
foreach ($arrayWhere['condition'] as $value) {
|
||||
$criteria->add($value[0], $value[1], $value[2]);
|
||||
}
|
||||
} else {
|
||||
$criteria->add(\UsersPeer::USR_STATUS, 'CLOSED', \Criteria::NOT_EQUAL);
|
||||
}
|
||||
|
||||
if (!is_null($arrayUserUidExclude) && is_array($arrayUserUidExclude)) {
|
||||
$criteria->add(\UsersPeer::USR_UID, $arrayUserUidExclude, \Criteria::NOT_IN);
|
||||
}
|
||||
|
||||
if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
|
||||
if ($flagFilter && trim($arrayWhere['filter']) != '') {
|
||||
$criteria->add(
|
||||
$criteria->getNewCriterion(\UsersPeer::USR_USERNAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(\UsersPeer::USR_FIRSTNAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(\UsersPeer::USR_LASTNAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)))
|
||||
$criteria->getNewCriterion(\UsersPeer::USR_USERNAME, '%' . $arrayWhere['filter'] . '%', \Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(\UsersPeer::USR_FIRSTNAME, '%' . $arrayWhere['filter'] . '%', \Criteria::LIKE)->addOr(
|
||||
$criteria->getNewCriterion(\UsersPeer::USR_LASTNAME, '%' . $arrayWhere['filter'] . '%', \Criteria::LIKE)))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
@@ -154,112 +154,96 @@ class NotificationDevice
|
||||
}
|
||||
|
||||
/**
|
||||
* Send Message each user id
|
||||
*
|
||||
* @param array $request_data
|
||||
* @author Ronald Quenta <ronald.quenta@processmaker.com>
|
||||
*
|
||||
* @param $appFields
|
||||
* @param $nextDel
|
||||
* @param $iNewDelIndex
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function routeCaseNotification($currentUserId, $processId, $currentTaskId, $appFields, $aTasks,
|
||||
$nextIndex, $currentDelIndex)
|
||||
public function routeCaseNotificationDevice($appFields, $nextDel, $iNewDelIndex)
|
||||
{
|
||||
try {
|
||||
$response = array();
|
||||
$typeList = 'todo';
|
||||
foreach ($aTasks as $aTask) {
|
||||
$arrayTaskUser = array();
|
||||
$delIndex = null;
|
||||
foreach ($nextIndex as $nIndex) {
|
||||
if ($aTask['TAS_UID'] == $nIndex['TAS_UID']) {
|
||||
$delIndex = $nIndex['DEL_INDEX'];
|
||||
break;
|
||||
$arrayTaskUser = array();
|
||||
switch ($nextDel["TAS_ASSIGN_TYPE"]) {
|
||||
case "SELF_SERVICE":
|
||||
$arrayTaskUser = $this->getTaskUserSelfService($nextDel["TAS_UID"], $appFields);
|
||||
$typeList = 'unassigned';
|
||||
break;
|
||||
default:
|
||||
if (isset($nextDel["USR_UID"]) && !empty($nextDel["USR_UID"])) {
|
||||
$arrayTaskUser = $nextDel["USR_UID"];
|
||||
}
|
||||
}
|
||||
switch ($aTask["TAS_ASSIGN_TYPE"]) {
|
||||
case "MULTIPLE_INSTANCE":
|
||||
case "MULTIPLE_INSTANCE_VALUE_BASED":
|
||||
$arrayTaskUser = $this->getTaskUserMultipleInstance($aTask["TAS_UID"], $appFields);
|
||||
$delIndex = 0;
|
||||
break;
|
||||
case "SELF_SERVICE":
|
||||
$arrayTaskUser = $this->getTaskUserSelfService($aTask["TAS_UID"], $appFields);
|
||||
$typeList = 'unassigned';
|
||||
break;
|
||||
default:
|
||||
if (isset($aTask["USR_UID"]) && !empty($aTask["USR_UID"])) {
|
||||
$arrayTaskUser = $aTask["USR_UID"];
|
||||
}
|
||||
break;
|
||||
break;
|
||||
}
|
||||
|
||||
$userIds = $arrayTaskUser;
|
||||
//sub process
|
||||
$taskAssignType = (isset($nextDel["TAS_ASSIGN_TYPE"])) ? $nextDel["TAS_ASSIGN_TYPE"] : $nextDel["SP_TYPE"];
|
||||
$message = '#' . $appFields['APP_NUMBER'] . ' : ' . $appFields['APP_TITLE'];
|
||||
$data = array(
|
||||
'processId' => $appFields['PRO_UID'],
|
||||
'taskId' => $nextDel["TAS_UID"],
|
||||
'taskAssignType' => $taskAssignType,
|
||||
'caseId' => $appFields['APP_UID'],
|
||||
'caseTitle' => $appFields['APP_TITLE'],
|
||||
'delIndex' => $iNewDelIndex,
|
||||
'typeList' => $typeList,
|
||||
'caseNumber' => $appFields['APP_NUMBER']
|
||||
);
|
||||
|
||||
if ($userIds) {
|
||||
$oNoti = new \NotificationDevice();
|
||||
if (is_array($userIds)) {
|
||||
$devices = $oNoti->loadUsersArrayId($userIds);
|
||||
} else {
|
||||
$devices = $oNoti->loadByUsersId($userIds);
|
||||
$lists = new \ProcessMaker\BusinessModel\Lists();
|
||||
$counter = $lists->getCounters($userIds);
|
||||
$light = new \ProcessMaker\Services\Api\Light();
|
||||
$result = $light->parserCountersCases($counter);
|
||||
$data['counters'] = $result;
|
||||
}
|
||||
|
||||
$userIds = $arrayTaskUser;
|
||||
$message = '#'. $appFields['APP_NUMBER'] . ' : '.$appFields['APP_TITLE'];
|
||||
$data = array(
|
||||
'processId' => $processId,
|
||||
'taskId' => $aTask["TAS_UID"],
|
||||
'taskAssignType' => $aTask["TAS_ASSIGN_TYPE"],
|
||||
'caseId' => $appFields['APP_UID'],
|
||||
'caseTitle' => $appFields['APP_TITLE'],
|
||||
'delIndex' => $delIndex,
|
||||
'typeList' => $typeList
|
||||
);
|
||||
|
||||
if ($userIds) {
|
||||
$oNoti = new \NotificationDevice();
|
||||
$devices = array();
|
||||
if (is_array($userIds)) {
|
||||
$devices = $oNoti->loadUsersArrayId($userIds);
|
||||
} else {
|
||||
$devices = $oNoti->loadByUsersId($userIds);
|
||||
$lists = new \ProcessMaker\BusinessModel\Lists();
|
||||
$counter = $lists->getCounters($userIds);
|
||||
$light = new \ProcessMaker\Services\Api\Light();
|
||||
$result = $light->parserCountersCases($counter);
|
||||
$data['counters'] = $result;
|
||||
}
|
||||
|
||||
$devicesAndroidIds = array();
|
||||
$devicesAppleIds = array();
|
||||
foreach ($devices as $dev) {
|
||||
switch ($dev['DEV_TYPE']) {
|
||||
case "apple":
|
||||
$devicesAppleIds[] = $dev['DEV_REG_ID'];
|
||||
break;
|
||||
case "android":
|
||||
$devicesAndroidIds[] = $dev['DEV_REG_ID'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
$isExistNextNotifications = $oNoti->isExistNextNotification($appFields['APP_UID'],
|
||||
$currentDelIndex);
|
||||
if (count($devicesAppleIds) > 0 && $isExistNextNotifications) {
|
||||
$arrayData = array();
|
||||
$arrayData['NOT_FROM'] = $currentUserId;
|
||||
$arrayData['DEV_TYPE'] = 'apple';
|
||||
$arrayData['DEV_UID'] = serialize($devicesAppleIds);
|
||||
$arrayData['NOT_MSG'] = $message;
|
||||
$arrayData['NOT_DATA'] = serialize($data);
|
||||
$arrayData['NOT_STATUS'] = "pending";
|
||||
$notQueue = new \NotificationQueue();
|
||||
$notQueue->create($arrayData);
|
||||
}
|
||||
if (count($devicesAndroidIds) > 0 && $isExistNextNotifications) {
|
||||
$arrayData = array();
|
||||
$arrayData['NOT_FROM'] = $currentUserId;
|
||||
$arrayData['DEV_TYPE'] = 'android';
|
||||
$arrayData['DEV_UID'] = serialize($devicesAndroidIds);
|
||||
$arrayData['NOT_MSG'] = $message;
|
||||
$arrayData['NOT_DATA'] = serialize($data);
|
||||
$arrayData['NOT_STATUS'] = "pending";
|
||||
$notQueue = new \NotificationQueue();
|
||||
$notQueue->create($arrayData);
|
||||
$devicesAndroidIds = array();
|
||||
$devicesAppleIds = array();
|
||||
foreach ($devices as $dev) {
|
||||
switch ($dev['DEV_TYPE']) {
|
||||
case "apple":
|
||||
$devicesAppleIds[] = $dev['DEV_REG_ID'];
|
||||
break;
|
||||
case "android":
|
||||
$devicesAndroidIds[] = $dev['DEV_REG_ID'];
|
||||
break;
|
||||
}
|
||||
}
|
||||
if (count($devicesAppleIds) > 0) {
|
||||
$arrayData = array();
|
||||
$arrayData['NOT_FROM'] = $appFields['APP_CUR_USER'];
|
||||
$arrayData['DEV_TYPE'] = 'apple';
|
||||
$arrayData['DEV_UID'] = serialize($devicesAppleIds);
|
||||
$arrayData['NOT_MSG'] = $message;
|
||||
$arrayData['NOT_DATA'] = serialize($data);
|
||||
$arrayData['NOT_STATUS'] = "pending";
|
||||
$notQueue = new \NotificationQueue();
|
||||
$notQueue->create($arrayData);
|
||||
}
|
||||
if (count($devicesAndroidIds) > 0) {
|
||||
$arrayData = array();
|
||||
$arrayData['NOT_FROM'] = $appFields['APP_CUR_USER'];
|
||||
$arrayData['DEV_TYPE'] = 'android';
|
||||
$arrayData['DEV_UID'] = serialize($devicesAndroidIds);
|
||||
$arrayData['NOT_MSG'] = $message;
|
||||
$arrayData['NOT_DATA'] = serialize($data);
|
||||
$arrayData['NOT_STATUS'] = "pending";
|
||||
$notQueue = new \NotificationQueue();
|
||||
$notQueue->create($arrayData);
|
||||
}
|
||||
}
|
||||
} catch (\Exception $e) {
|
||||
throw new \Exception($e->getMessage(), Api::STAT_APP_EXCEPTION);
|
||||
}
|
||||
|
||||
return $response;
|
||||
}
|
||||
|
||||
@@ -301,16 +285,4 @@ class NotificationDevice
|
||||
|
||||
return $arrayTaskUser;
|
||||
}
|
||||
public function getTaskUserMultipleInstance($tas_uid, $appFields)
|
||||
{
|
||||
$oDerivation = new \Derivation();
|
||||
$taskNextDel = \TaskPeer::retrieveByPK($tas_uid);
|
||||
$oDerivation->case = new \Cases();
|
||||
$arrayUsersOfTask = $oDerivation->getNextAssignedUser(array("APP_UID" => $appFields['APP_UID'], "NEXT_TASK" => $taskNextDel->toArray(\BasePeer::TYPE_FIELDNAME)));
|
||||
$arrayTaskUser = array();
|
||||
foreach ($arrayUsersOfTask as $arrayUser) {
|
||||
$arrayTaskUser[] = $arrayUser["USR_UID"];
|
||||
}
|
||||
return $arrayTaskUser;
|
||||
}
|
||||
}
|
||||
|
||||
@@ -150,7 +150,7 @@ class Table
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
public function getTableData($tab_uid, $pro_uid = '', $filter = null, $reportFlag = false)
|
||||
public function getTableData($tab_uid, $pro_uid = '', $filter = null, $reportFlag = false, $search = '')
|
||||
{
|
||||
//Validation
|
||||
$inputFilter = new \InputFilter();
|
||||
@@ -164,7 +164,7 @@ class Table
|
||||
|
||||
$additionalTables = new AdditionalTables();
|
||||
$table = $additionalTables->load($tab_uid, true);
|
||||
$result = $additionalTables->getAllData($tab_uid, null, null, null, $filter);
|
||||
$result = $additionalTables->getAllData($tab_uid, null, null, null, $filter, false, $search);
|
||||
$primaryKeys = $additionalTables->getPrimaryKeys();
|
||||
if (is_array($result['rows'])) {
|
||||
foreach ($result['rows'] as $i => $row) {
|
||||
|
||||
@@ -42,6 +42,36 @@ class User
|
||||
"usrPhoto" => "USR_PHOTO"
|
||||
);
|
||||
|
||||
private $arrayPermissionsForEditUser = array (
|
||||
'USR_FIRSTNAME' => 'PM_EDIT_USER_PROFILE_FIRST_NAME',
|
||||
'USR_LASTNAME' => 'PM_EDIT_USER_PROFILE_LAST_NAME',
|
||||
'USR_USERNAME' => 'PM_EDIT_USER_PROFILE_USERNAME',
|
||||
'USR_EMAIL' => 'PM_EDIT_USER_PROFILE_EMAIL',
|
||||
'USR_ADDRESS' => 'PM_EDIT_USER_PROFILE_ADDRESS',
|
||||
'USR_ZIP_CODE' => 'PM_EDIT_USER_PROFILE_ZIP_CODE',
|
||||
'USR_COUNTRY' => 'PM_EDIT_USER_PROFILE_COUNTRY',
|
||||
'USR_REGION' => 'PM_EDIT_USER_PROFILE_STATE_OR_REGION',
|
||||
'USR_LOCATION' => 'PM_EDIT_USER_PROFILE_LOCATION',
|
||||
'USR_PHONE' => 'PM_EDIT_USER_PROFILE_PHONE',
|
||||
'USR_POSITION' => 'PM_EDIT_USER_PROFILE_POSITION',
|
||||
'USR_REPLACED_BY' => 'PM_EDIT_USER_PROFILE_REPLACED_BY',
|
||||
'USR_DUE_DATE' => 'PM_EDIT_USER_PROFILE_EXPIRATION_DATE',
|
||||
'USR_CALENDAR' => 'PM_EDIT_USER_PROFILE_CALENDAR',
|
||||
'USR_STATUS' => 'PM_EDIT_USER_PROFILE_STATUS',
|
||||
'USR_ROLE' => 'PM_EDIT_USER_PROFILE_ROLE',
|
||||
'USR_TIME_ZONE' => 'PM_EDIT_USER_PROFILE_TIME_ZONE',
|
||||
'USR_DEFAULT_LANG' => 'PM_EDIT_USER_PROFILE_DEFAULT_LANGUAGE',
|
||||
'USR_COST_BY_HOUR' => 'PM_EDIT_USER_PROFILE_COSTS',
|
||||
'USR_UNIT_COST' => 'PM_EDIT_USER_PROFILE_COSTS',
|
||||
'USR_CUR_PASS' => 'PM_EDIT_USER_PROFILE_PASSWORD',
|
||||
'USR_NEW_PASS' => 'PM_EDIT_USER_PROFILE_PASSWORD',
|
||||
'USR_CNF_PASS' => 'PM_EDIT_USER_PROFILE_PASSWORD',
|
||||
'USR_LOGGED_NEXT_TIME' => 'PM_EDIT_USER_PROFILE_USER_MUST_CHANGE_PASSWORD_AT_NEXT_LOGON',
|
||||
'USR_PHOTO' => 'PM_EDIT_USER_PROFILE_PHOTO',
|
||||
'PREF_DEFAULT_MENUSELECTED' => 'PM_EDIT_USER_PROFILE_DEFAULT_MAIN_MENU_OPTIONS',
|
||||
'PREF_DEFAULT_CASESELECTED' => 'PM_EDIT_USER_PROFILE_DEFAULT_CASES_MENU_OPTIONS'
|
||||
);
|
||||
|
||||
/**
|
||||
* Constructor of the class
|
||||
*
|
||||
@@ -58,6 +88,13 @@ class User
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @return array
|
||||
*/
|
||||
public function getPermissionsForEdit(){
|
||||
return $this->arrayPermissionsForEditUser;
|
||||
}
|
||||
|
||||
/**
|
||||
* Set the format of the fields name (uppercase, lowercase)
|
||||
*
|
||||
@@ -1322,6 +1359,53 @@ class User
|
||||
$this->userObj->update($fields);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $userUid
|
||||
* @param array $arrayPermission
|
||||
* @return User
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function checkPermissionForEdit($userUid, $arrayPermission = array(), $form)
|
||||
{
|
||||
try {
|
||||
foreach ($arrayPermission as $key => $value) {
|
||||
$flagPermission = $this->checkPermission($userUid, $value);
|
||||
if (!$flagPermission){
|
||||
unset($form[$key]);
|
||||
}
|
||||
}
|
||||
return $form;
|
||||
} catch (\Exception $e) {
|
||||
throw $e;
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* @param $aFields
|
||||
* @return array
|
||||
* @throws \Exception
|
||||
*/
|
||||
public function loadDetailedPermissions($aFields)
|
||||
{
|
||||
try {
|
||||
global $RBAC;
|
||||
$resultPermissionsForUser = array();
|
||||
if ($aFields['USR_UID'] != '') {
|
||||
foreach ($this->arrayPermissionsForEditUser as $index => $item) {
|
||||
if ($RBAC->userCanAccess($item) !== 1) {
|
||||
$resultPermissionsForUser[$index] = $item;
|
||||
}
|
||||
}
|
||||
return $resultPermissionsForUser;
|
||||
} else {
|
||||
$lang = defined('SYS_LANG') ? SYS_LANG : 'en';
|
||||
throw (new \Exception(G::LoadTranslation("ID_USER_UID_DOESNT_EXIST", $lang, array("USR_UID" => $aFields['USR_UID']))));
|
||||
}
|
||||
} catch (\Exception $oError) {
|
||||
throw ($oError);
|
||||
}
|
||||
}
|
||||
|
||||
/**
|
||||
* Check permission
|
||||
*
|
||||
|
||||
@@ -268,6 +268,9 @@ abstract class Importer
|
||||
if (sizeof($objectList) > 0 && $processGranulate) {
|
||||
$granularObj->import($objectList);
|
||||
}
|
||||
$project = new \ProcessMaker\Project\Adapter\BpmnWorkflow();
|
||||
$diagram = $project->getStruct($projectUid);
|
||||
$res = $project->updateFromStruct($projectUid, $diagram);
|
||||
}
|
||||
|
||||
return $projectUid;
|
||||
@@ -533,7 +536,19 @@ abstract class Importer
|
||||
foreach ($arrayWorkflowTables["tasks"] as $key => $value) {
|
||||
$arrayTaskData = $value;
|
||||
|
||||
if (!in_array($arrayTaskData["TAS_TYPE"], array("GATEWAYTOGATEWAY", "WEBENTRYEVENT", "END-MESSAGE-EVENT", "START-MESSAGE-EVENT", "INTERMEDIATE-THROW-MESSAGE-EVENT", "INTERMEDIATE-CATCH-MESSAGE-EVENT", "START-TIMER-EVENT", "INTERMEDIATE-CATCH-TIMER-EVENT", "END-EMAIL-EVENT", "INTERMEDIATE-THROW-EMAIL-EVENT"))) {
|
||||
if (!in_array($arrayTaskData["TAS_TYPE"], array(
|
||||
"GATEWAYTOGATEWAY",
|
||||
"WEBENTRYEVENT",
|
||||
"END-MESSAGE-EVENT",
|
||||
"START-MESSAGE-EVENT",
|
||||
"INTERMEDIATE-THROW-MESSAGE-EVENT",
|
||||
"INTERMEDIATE-CATCH-MESSAGE-EVENT",
|
||||
"START-TIMER-EVENT",
|
||||
"INTERMEDIATE-CATCH-TIMER-EVENT",
|
||||
"END-EMAIL-EVENT",
|
||||
"INTERMEDIATE-THROW-EMAIL-EVENT"
|
||||
))
|
||||
) {
|
||||
$result = $workflow->updateTask($arrayTaskData["TAS_UID"], $arrayTaskData);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -72,6 +72,8 @@ class Pmtable extends Api
|
||||
|
||||
/**
|
||||
* @param string $pmt_uid {@min 1} {@max 32}
|
||||
* @param string $filter
|
||||
* @param string $q
|
||||
* @return array
|
||||
*
|
||||
* @author Brayan Pereyra (Cochalo) <brayan@colosa.com>
|
||||
@@ -79,11 +81,11 @@ class Pmtable extends Api
|
||||
*
|
||||
* @url GET /:pmt_uid/data
|
||||
*/
|
||||
public function doGetPmTableData($pmt_uid, $filter = null)
|
||||
public function doGetPmTableData($pmt_uid, $filter = null, $q = "")
|
||||
{
|
||||
try {
|
||||
$oPmTable = new \ProcessMaker\BusinessModel\Table();
|
||||
$response = $oPmTable->getTableData($pmt_uid, null, $filter);
|
||||
$response = $oPmTable->getTableData($pmt_uid, null, $filter, false, $q);
|
||||
return $response;
|
||||
} catch (\Exception $e) {
|
||||
throw (new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage()));
|
||||
|
||||
Reference in New Issue
Block a user