Solving conflicts with branch 3.1-CONTENT

This commit is contained in:
Julio Cesar Laura Avendaño
2016-07-21 16:33:27 -04:00
24 changed files with 757 additions and 235 deletions

View File

@@ -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)))
);
}

View File

@@ -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;
}
}

View File

@@ -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) {

View File

@@ -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
*

View File

@@ -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);
}
}

View File

@@ -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()));