HOR-474 "Asignacion de un rol a usuarios tarda demasiado " SOLVED
Issue:
Asignacion de un rol a usuarios tarda demasiado
Cause:
Los metodos Roles::getRoleUsers() y Roles::getAllUsers() no son optimos
Solution:
- Se a mejorado el metodo \ProcessMaker\BusinessModel\Role\User::getUsers() (Back-End)
- Se agrego el pager a los grids en ADMIN>Users>Roles>Users (Front-End)
HOR-474 "Asignacion de un rol a usuarios tarda demasiado " SOLVED
Issue:
Asignacion de un rol a usuarios tarda demasiado
Cause:
Los metodos Roles::getRoleUsers() y Roles::getAllUsers() no son optimos
Solution:
- Se a mejorado el metodo \ProcessMaker\BusinessModel\Role\User::getUsers() (Back-End)
- Se agrego el pager a los grids en ADMIN>Users>Roles>Users (Front-End)
HOR-474 "Asignacion de un rol a usuarios tarda demasiado " SOLVED
Issue:
Asignacion de un rol a usuarios tarda demasiado
Cause:
Los metodos Roles::getRoleUsers() y Roles::getAllUsers() no son optimos
Solution:
- Se a mejorado el metodo \ProcessMaker\BusinessModel\Role\User::getUsers() (Back-End)
- Se agrego el pager a los grids en ADMIN>Users>Roles>Users (Front-End)
This commit is contained in:
@@ -788,7 +788,7 @@ class RBAC
|
|||||||
*/
|
*/
|
||||||
public function getRoleUsers ($ROL_UID, $filter = '')
|
public function getRoleUsers ($ROL_UID, $filter = '')
|
||||||
{
|
{
|
||||||
return $this->rolesObj->getRoleUsers( $ROL_UID, $filter );
|
throw new Exception(__METHOD__ . ': The method is deprecated');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -859,7 +859,7 @@ class RBAC
|
|||||||
*/
|
*/
|
||||||
public function getAllUsers ($ROL_UID, $filter = '')
|
public function getAllUsers ($ROL_UID, $filter = '')
|
||||||
{
|
{
|
||||||
return $this->rolesObj->getAllUsers( $ROL_UID, $filter );
|
throw new Exception(__METHOD__ . ': The method is deprecated');
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -398,85 +398,11 @@ class Roles extends BaseRoles {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getRoleUsers($ROL_UID, $filter='') {
|
function getRoleUsers($ROL_UID, $filter='') {
|
||||||
try {
|
throw new Exception(__METHOD__ . ': The method is deprecated');
|
||||||
$criteria = new Criteria();
|
|
||||||
$criteria->addSelectColumn(RolesPeer::ROL_UID);
|
|
||||||
$criteria->addSelectColumn(RolesPeer::ROL_PARENT);
|
|
||||||
$criteria->addSelectColumn(RolesPeer::ROL_SYSTEM);
|
|
||||||
$criteria->addSelectColumn(RolesPeer::ROL_CODE);
|
|
||||||
$criteria->addSelectColumn(RolesPeer::ROL_CREATE_DATE);
|
|
||||||
$criteria->addSelectColumn(RolesPeer::ROL_UPDATE_DATE);
|
|
||||||
$criteria->addSelectColumn(RolesPeer::ROL_STATUS);
|
|
||||||
$criteria->addSelectColumn(RbacUsersPeer::USR_UID);
|
|
||||||
$criteria->addSelectColumn(RbacUsersPeer::USR_USERNAME);
|
|
||||||
$criteria->addSelectColumn(RbacUsersPeer::USR_FIRSTNAME);
|
|
||||||
$criteria->addSelectColumn(RbacUsersPeer::USR_LASTNAME);
|
|
||||||
$criteria->add(RolesPeer::ROL_UID, "", Criteria::NOT_EQUAL);
|
|
||||||
$criteria->add(RolesPeer::ROL_UID, $ROL_UID);
|
|
||||||
|
|
||||||
$criteria->add(RbacUsersPeer::USR_STATUS, 0, Criteria::NOT_EQUAL);
|
|
||||||
|
|
||||||
$criteria->addJoin(RolesPeer::ROL_UID, UsersRolesPeer::ROL_UID);
|
|
||||||
$criteria->addJoin(UsersRolesPeer::USR_UID, RbacUsersPeer::USR_UID);
|
|
||||||
|
|
||||||
if ($filter != ''){
|
|
||||||
$criteria->add(
|
|
||||||
$criteria->getNewCriterion(RbacUsersPeer::USR_USERNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
|
|
||||||
$criteria->getNewCriterion(RbacUsersPeer::USR_FIRSTNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
|
|
||||||
$criteria->getNewCriterion(RbacUsersPeer::USR_LASTNAME,'%'.$filter.'%',Criteria::LIKE)))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$oDataset = RolesPeer::doSelectRS($criteria);
|
|
||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
||||||
return $oDataset;
|
|
||||||
|
|
||||||
} catch( exception $e ) {
|
|
||||||
throw $e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function getAllUsers($ROL_UID, $filter='') {
|
function getAllUsers($ROL_UID, $filter='') {
|
||||||
try {
|
throw new Exception(__METHOD__ . ': The method is deprecated');
|
||||||
$c = new Criteria();
|
|
||||||
$c->addSelectColumn(RbacUsersPeer::USR_UID);
|
|
||||||
$c->add(RolesPeer::ROL_UID, $ROL_UID);
|
|
||||||
$c->addJoin(RolesPeer::ROL_UID, UsersRolesPeer::ROL_UID);
|
|
||||||
$c->addJoin(UsersRolesPeer::USR_UID, RbacUsersPeer::USR_UID);
|
|
||||||
|
|
||||||
$result = RolesPeer::doSelectRS($c);
|
|
||||||
$result->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
||||||
$result->next();
|
|
||||||
|
|
||||||
$a = Array();
|
|
||||||
while( $row = $result->getRow() ) {
|
|
||||||
$a[] = $row['USR_UID'];
|
|
||||||
$result->next();
|
|
||||||
}
|
|
||||||
|
|
||||||
$criteria = new Criteria();
|
|
||||||
|
|
||||||
$criteria->addSelectColumn(RbacUsersPeer::USR_UID);
|
|
||||||
$criteria->addSelectColumn(RbacUsersPeer::USR_USERNAME);
|
|
||||||
$criteria->addSelectColumn(RbacUsersPeer::USR_FIRSTNAME);
|
|
||||||
$criteria->addSelectColumn(RbacUsersPeer::USR_LASTNAME);
|
|
||||||
$criteria->add(RbacUsersPeer::USR_STATUS, 1, Criteria::EQUAL);
|
|
||||||
$criteria->add(RbacUsersPeer::USR_UID, $a, Criteria::NOT_IN);
|
|
||||||
|
|
||||||
if ($filter != ''){
|
|
||||||
$criteria->add(
|
|
||||||
$criteria->getNewCriterion(RbacUsersPeer::USR_USERNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
|
|
||||||
$criteria->getNewCriterion(RbacUsersPeer::USR_FIRSTNAME,'%'.$filter.'%',Criteria::LIKE)->addOr(
|
|
||||||
$criteria->getNewCriterion(RbacUsersPeer::USR_LASTNAME,'%'.$filter.'%',Criteria::LIKE)))
|
|
||||||
);
|
|
||||||
}
|
|
||||||
|
|
||||||
$oDataset = RbacUsersPeer::doSelectRS($criteria);
|
|
||||||
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
|
|
||||||
return $oDataset;
|
|
||||||
} catch( exception $e ) {
|
|
||||||
throw $e;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
function assignUserToRole($aData) {
|
function assignUserToRole($aData) {
|
||||||
|
|||||||
@@ -1,42 +1,32 @@
|
|||||||
<?php
|
<?php
|
||||||
/**
|
$response = [];
|
||||||
* data_rolesUsers.php
|
|
||||||
*
|
|
||||||
* ProcessMaker Open Source Edition
|
|
||||||
* Copyright (C) 2004 - 2008 Colosa Inc.23
|
|
||||||
*
|
|
||||||
* This program is free software: you can redistribute it and/or modify
|
|
||||||
* it under the terms of the GNU Affero General Public License as
|
|
||||||
* published by the Free Software Foundation, either version 3 of the
|
|
||||||
* License, or (at your option) any later version.
|
|
||||||
*
|
|
||||||
* This program is distributed in the hope that it will be useful,
|
|
||||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
||||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
||||||
* GNU Affero General Public License for more details.
|
|
||||||
*
|
|
||||||
* You should have received a copy of the GNU Affero General Public License
|
|
||||||
* along with this program. If not, see <http://www.gnu.org/licenses/>.
|
|
||||||
*
|
|
||||||
* For more information, contact Colosa Inc, 2566 Le Jeune Rd.,
|
|
||||||
* Coral Gables, FL, 33134, USA, or email info@colosa.com.
|
|
||||||
*/
|
|
||||||
|
|
||||||
$ROL_UID = $_GET['rUID'];
|
try {
|
||||||
$TYPE_DATA = $_GET["type"];
|
$option = $_POST['option'];
|
||||||
|
$roleUid = $_POST['roleUid'];
|
||||||
|
|
||||||
global $RBAC;
|
$pageSize = $_POST['pageSize'];
|
||||||
|
$filter = $_POST['filter'];
|
||||||
|
|
||||||
$filter = (isset( $_REQUEST['textFilter'] )) ? $_REQUEST['textFilter'] : '';
|
$sortField = (isset($_POST['sort']))? $_POST['sort']: 'USR_FIRSTNAME';
|
||||||
|
$sortDir = (isset($_POST['dir']))? $_POST['dir']: 'ASC';
|
||||||
|
$start = (isset($_POST['start']))? $_POST['start']: 0;
|
||||||
|
$limit = (isset($_POST['limit']))? $_POST['limit']: $pageSize;
|
||||||
|
|
||||||
if ($TYPE_DATA == 'list')
|
$roleUser = new \ProcessMaker\BusinessModel\Role\User();
|
||||||
$oDataset = $RBAC->getRoleUsers( $ROL_UID, $filter );
|
|
||||||
if ($TYPE_DATA == 'show')
|
|
||||||
$oDataset = $RBAC->getAllUsers( $ROL_UID, $filter );
|
|
||||||
|
|
||||||
$rows = Array ();
|
$result = $roleUser->getUsers(
|
||||||
while ($oDataset->next()) {
|
$roleUid, $option, ['filter' => $filter, 'filterOption' => ''], $sortField, $sortDir, $start, $limit
|
||||||
$rows[] = $oDataset->getRow();
|
);
|
||||||
|
|
||||||
|
$response['status'] = 'OK';
|
||||||
|
$response['success'] = true;
|
||||||
|
$response['resultTotal'] = $result['total'];
|
||||||
|
$response['resultRoot'] = $result['data'];
|
||||||
|
} catch (Exception $e) {
|
||||||
|
$response['status'] = 'ERROR';
|
||||||
|
$response['message'] = $e->getMessage();
|
||||||
}
|
}
|
||||||
echo '{users: ' . G::json_encode( $rows ) . '}';
|
|
||||||
|
echo G::json_encode($response);
|
||||||
|
|
||||||
|
|||||||
@@ -48,8 +48,15 @@ $G_ID_SUB_MENU_SELECTED = 'ROLES';
|
|||||||
|
|
||||||
$G_PUBLISH = new Publisher();
|
$G_PUBLISH = new Publisher();
|
||||||
|
|
||||||
|
$configuration = new Configurations();
|
||||||
|
$arrayConfigPage = $configuration->getConfiguration('roleUsersPermissionsList', 'pageSize', null, $_SESSION['USER_LOGGED']);
|
||||||
|
|
||||||
|
$arrayConfig = [];
|
||||||
|
$arrayConfig['pageSize'] = (isset($arrayConfigPage['pageSize']))? $arrayConfigPage['pageSize'] : 20;
|
||||||
|
|
||||||
$oHeadPublisher = & headPublisher::getSingleton();
|
$oHeadPublisher = & headPublisher::getSingleton();
|
||||||
$oHeadPublisher->assign("PARTNER_FLAG", (defined('PARTNER_FLAG')) ? PARTNER_FLAG : false);
|
$oHeadPublisher->assign("PARTNER_FLAG", (defined('PARTNER_FLAG')) ? PARTNER_FLAG : false);
|
||||||
|
$oHeadPublisher->assign('CONFIG', $arrayConfig);
|
||||||
$oHeadPublisher->addExtJsScript( 'roles/rolesUsersPermission', false ); //adding a javascript file .js
|
$oHeadPublisher->addExtJsScript( 'roles/rolesUsersPermission', false ); //adding a javascript file .js
|
||||||
$oHeadPublisher->addContent( 'roles/rolesUsersPermission' ); //adding a html file .html.
|
$oHeadPublisher->addContent( 'roles/rolesUsersPermission' ); //adding a html file .html.
|
||||||
|
|
||||||
|
|||||||
@@ -2694,30 +2694,22 @@ class Cases
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Number records total
|
//Number records total
|
||||||
$criteriaCount = clone $criteria;
|
$numRecTotal = \UsersPeer::doCount($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
|
//Query
|
||||||
|
$conf = new \Configurations();
|
||||||
|
$sortFieldDefault = \UsersPeer::TABLE_NAME . '.' . $conf->userNameFormatGetFirstFieldByUsersTable();
|
||||||
|
|
||||||
if (!is_null($sortField) && trim($sortField) != '') {
|
if (!is_null($sortField) && trim($sortField) != '') {
|
||||||
$sortField = strtoupper($sortField);
|
$sortField = strtoupper($sortField);
|
||||||
|
|
||||||
if (in_array(\UsersPeer::TABLE_NAME . '.' . $sortField, $criteria->getSelectColumns())) {
|
if (in_array(\UsersPeer::TABLE_NAME . '.' . $sortField, $criteria->getSelectColumns())) {
|
||||||
$sortField = \UsersPeer::TABLE_NAME . '.' . $sortField;
|
$sortField = \UsersPeer::TABLE_NAME . '.' . $sortField;
|
||||||
} else {
|
} else {
|
||||||
$sortField = \UsersPeer::USR_FIRSTNAME;
|
$sortField = $sortFieldDefault;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$sortField = \UsersPeer::USR_FIRSTNAME;
|
$sortField = $sortFieldDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_null($sortDir) && trim($sortDir) != '' && strtoupper($sortDir) == 'DESC') {
|
if (!is_null($sortDir) && trim($sortDir) != '' && strtoupper($sortDir) == 'DESC') {
|
||||||
|
|||||||
@@ -217,48 +217,6 @@ class User
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* Get criteria for User
|
|
||||||
*
|
|
||||||
* @param string $roleUid Unique id of Role
|
|
||||||
* @param array $arrayUserUidExclude Unique id of Users to exclude
|
|
||||||
*
|
|
||||||
* return object
|
|
||||||
*/
|
|
||||||
public function getUserCriteria($roleUid, array $arrayUserUidExclude = null)
|
|
||||||
{
|
|
||||||
try {
|
|
||||||
$criteria = new \Criteria("rbac");
|
|
||||||
|
|
||||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_UID);
|
|
||||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_USERNAME);
|
|
||||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_FIRSTNAME);
|
|
||||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_LASTNAME);
|
|
||||||
$criteria->addSelectColumn(\RbacUsersPeer::USR_STATUS);
|
|
||||||
|
|
||||||
$criteria->addAlias("USR", \RbacUsersPeer::TABLE_NAME);
|
|
||||||
|
|
||||||
$arrayCondition = array();
|
|
||||||
$arrayCondition[] = array(\RbacUsersPeer::USR_UID, "USR.USR_UID", \Criteria::EQUAL);
|
|
||||||
$criteria->addJoinMC($arrayCondition, \Criteria::LEFT_JOIN);
|
|
||||||
|
|
||||||
if ($roleUid != "") {
|
|
||||||
$criteria->addJoin(\UsersRolesPeer::USR_UID, \RbacUsersPeer::USR_UID, \Criteria::LEFT_JOIN);
|
|
||||||
$criteria->add(\UsersRolesPeer::ROL_UID, $roleUid, \Criteria::EQUAL);
|
|
||||||
}
|
|
||||||
|
|
||||||
$criteria->add("USR.USR_USERNAME", "", \Criteria::NOT_EQUAL);
|
|
||||||
|
|
||||||
if (!is_null($arrayUserUidExclude) && is_array($arrayUserUidExclude)) {
|
|
||||||
$criteria->add(\RbacUsersPeer::USR_UID, $arrayUserUidExclude, \Criteria::NOT_IN);
|
|
||||||
}
|
|
||||||
|
|
||||||
return $criteria;
|
|
||||||
} catch (\Exception $e) {
|
|
||||||
throw $e;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Get data of a User from a record
|
* Get data of a User from a record
|
||||||
*
|
*
|
||||||
@@ -299,7 +257,11 @@ class User
|
|||||||
try {
|
try {
|
||||||
$arrayUser = array();
|
$arrayUser = array();
|
||||||
|
|
||||||
//Verify data
|
$numRecTotal = 0;
|
||||||
|
|
||||||
|
//Verify data and Set variables
|
||||||
|
$flagFilter = !is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData['filter']);
|
||||||
|
|
||||||
$process = new \ProcessMaker\BusinessModel\Process();
|
$process = new \ProcessMaker\BusinessModel\Process();
|
||||||
$role = new \ProcessMaker\BusinessModel\Role();
|
$role = new \ProcessMaker\BusinessModel\Role();
|
||||||
|
|
||||||
@@ -314,56 +276,89 @@ class User
|
|||||||
|
|
||||||
$process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
|
$process->throwExceptionIfDataNotMetPagerVarDefinition(array("start" => $start, "limit" => $limit), $this->arrayFieldNameForException);
|
||||||
|
|
||||||
//Get data
|
//Set variables
|
||||||
if (!is_null($limit) && $limit . "" == "0") {
|
$filterName = 'filter';
|
||||||
return $arrayUser;
|
|
||||||
|
if ($flagFilter) {
|
||||||
|
$arrayAux = [
|
||||||
|
'' => 'filter',
|
||||||
|
'LEFT' => 'lfilter',
|
||||||
|
'RIGHT' => 'rfilter'
|
||||||
|
];
|
||||||
|
|
||||||
|
$filterName = $arrayAux[
|
||||||
|
(isset($arrayFilterData['filterOption']))? $arrayFilterData['filterOption'] : ''
|
||||||
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
//SQL
|
//Get data
|
||||||
|
if (!is_null($limit) && (string)($limit) == '0') {
|
||||||
|
return [
|
||||||
|
'total' => $numRecTotal,
|
||||||
|
'start' => (int)((!is_null($start))? $start : 0),
|
||||||
|
'limit' => (int)((!is_null($limit))? $limit : 0),
|
||||||
|
$filterName => ($flagFilter)? $arrayFilterData['filter'] : '',
|
||||||
|
'data' => $arrayUser
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
//Query
|
||||||
|
$criteria = new \Criteria('rbac');
|
||||||
|
|
||||||
|
$criteria->addSelectColumn(\RbacUsersPeer::USR_UID);
|
||||||
|
$criteria->addSelectColumn(\RbacUsersPeer::USR_USERNAME);
|
||||||
|
$criteria->addSelectColumn(\RbacUsersPeer::USR_FIRSTNAME);
|
||||||
|
$criteria->addSelectColumn(\RbacUsersPeer::USR_LASTNAME);
|
||||||
|
$criteria->addSelectColumn(\RbacUsersPeer::USR_STATUS);
|
||||||
|
|
||||||
|
$criteria->addJoin(\RbacUsersPeer::USR_UID, \UsersRolesPeer::USR_UID, \Criteria::LEFT_JOIN);
|
||||||
|
|
||||||
|
$criteria->add(\RbacUsersPeer::USR_USERNAME, '', \Criteria::NOT_EQUAL);
|
||||||
|
|
||||||
switch ($option) {
|
switch ($option) {
|
||||||
case "USERS":
|
case "USERS":
|
||||||
//Criteria
|
$criteria->add(\UsersRolesPeer::ROL_UID, $roleUid, \Criteria::EQUAL);
|
||||||
$criteria = $this->getUserCriteria($roleUid);
|
|
||||||
break;
|
break;
|
||||||
case "AVAILABLE-USERS":
|
case "AVAILABLE-USERS":
|
||||||
//Get Uids
|
$criteria->add(\UsersRolesPeer::ROL_UID, $roleUid, \Criteria::NOT_EQUAL);
|
||||||
$arrayUid = array();
|
|
||||||
|
|
||||||
$criteria = $this->getUserCriteria($roleUid);
|
|
||||||
|
|
||||||
$rsCriteria = \RbacUsersPeer::doSelectRS($criteria);
|
|
||||||
$rsCriteria->setFetchmode(\ResultSet::FETCHMODE_ASSOC);
|
|
||||||
|
|
||||||
while ($rsCriteria->next()) {
|
|
||||||
$row = $rsCriteria->getRow();
|
|
||||||
|
|
||||||
$arrayUid[] = $row["USR_UID"];
|
|
||||||
}
|
|
||||||
|
|
||||||
//Criteria
|
|
||||||
$criteria = $this->getUserCriteria("", $arrayUid);
|
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_null($arrayFilterData) && is_array($arrayFilterData) && isset($arrayFilterData["filter"]) && trim($arrayFilterData["filter"]) != "") {
|
if ($flagFilter && trim($arrayFilterData['filter']) != '') {
|
||||||
|
$arraySearch = [
|
||||||
|
'' => '%' . $arrayFilterData['filter'] . '%',
|
||||||
|
'LEFT' => $arrayFilterData['filter'] . '%',
|
||||||
|
'RIGHT' => '%' . $arrayFilterData['filter']
|
||||||
|
];
|
||||||
|
|
||||||
|
$search = $arraySearch[
|
||||||
|
(isset($arrayFilterData['filterOption']))? $arrayFilterData['filterOption'] : ''
|
||||||
|
];
|
||||||
|
|
||||||
$criteria->add(
|
$criteria->add(
|
||||||
$criteria->getNewCriterion(\RbacUsersPeer::USR_USERNAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)->addOr(
|
$criteria->getNewCriterion(\RbacUsersPeer::USR_USERNAME, $search, \Criteria::LIKE)->addOr(
|
||||||
$criteria->getNewCriterion(\RbacUsersPeer::USR_FIRSTNAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)->addOr(
|
$criteria->getNewCriterion(\RbacUsersPeer::USR_FIRSTNAME, $search, \Criteria::LIKE)->addOr(
|
||||||
$criteria->getNewCriterion(\RbacUsersPeer::USR_LASTNAME, "%" . $arrayFilterData["filter"] . "%", \Criteria::LIKE)))
|
$criteria->getNewCriterion(\RbacUsersPeer::USR_LASTNAME, $search, \Criteria::LIKE)))
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
//SQL
|
//Number records total
|
||||||
if (!is_null($sortField) && trim($sortField) != "") {
|
$numRecTotal = \RbacUsersPeer::doCount($criteria);
|
||||||
|
|
||||||
|
//Query
|
||||||
|
$conf = new \Configurations();
|
||||||
|
$sortFieldDefault = \RbacUsersPeer::TABLE_NAME . '.' . $conf->userNameFormatGetFirstFieldByUsersTable();
|
||||||
|
|
||||||
|
if (!is_null($sortField) && trim($sortField) != '') {
|
||||||
$sortField = strtoupper($sortField);
|
$sortField = strtoupper($sortField);
|
||||||
|
|
||||||
if (in_array($sortField, array("USR_UID", "USR_USERNAME", "USR_FIRSTNAME", "USR_LASTNAME", "USR_STATUS"))) {
|
if (in_array(\RbacUsersPeer::TABLE_NAME . '.' . $sortField, $criteria->getSelectColumns())) {
|
||||||
$sortField = \RbacUsersPeer::TABLE_NAME . "." . $sortField;
|
$sortField = \RbacUsersPeer::TABLE_NAME . '.' . $sortField;
|
||||||
} else {
|
} else {
|
||||||
$sortField = \RbacUsersPeer::USR_USERNAME;
|
$sortField = $sortFieldDefault;
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
$sortField = \RbacUsersPeer::USR_USERNAME;
|
$sortField = $sortFieldDefault;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
|
if (!is_null($sortDir) && trim($sortDir) != "" && strtoupper($sortDir) == "DESC") {
|
||||||
@@ -390,7 +385,13 @@ class User
|
|||||||
}
|
}
|
||||||
|
|
||||||
//Return
|
//Return
|
||||||
return $arrayUser;
|
return [
|
||||||
|
'total' => $numRecTotal,
|
||||||
|
'start' => (int)((!is_null($start))? $start : 0),
|
||||||
|
'limit' => (int)((!is_null($limit))? $limit : 0),
|
||||||
|
$filterName => ($flagFilter)? $arrayFilterData['filter'] : '',
|
||||||
|
'data' => $arrayUser
|
||||||
|
];
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
throw $e;
|
throw $e;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -38,9 +38,13 @@ class User extends Api
|
|||||||
public function doGetUsers($rol_uid, $filter = null, $start = null, $limit = null)
|
public function doGetUsers($rol_uid, $filter = null, $start = null, $limit = null)
|
||||||
{
|
{
|
||||||
try {
|
try {
|
||||||
$response = $this->roleUser->getUsers($rol_uid, (preg_match("/^.*\/users$/", $this->restler->url))? "USERS" : "AVAILABLE-USERS", array("filter" => $filter), null, null, $start, $limit);
|
$option = (preg_match('/^.*\/users$/', $this->restler->url))? 'USERS' : 'AVAILABLE-USERS';
|
||||||
|
|
||||||
return $response;
|
$response = $this->roleUser->getUsers(
|
||||||
|
$rol_uid, $option, ['filter' => $filter, 'filterOption' => ''], null, null, $start, $limit
|
||||||
|
);
|
||||||
|
|
||||||
|
return $response['data'];
|
||||||
} catch (\Exception $e) {
|
} catch (\Exception $e) {
|
||||||
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
throw new RestException(Api::STAT_APP_EXCEPTION, $e->getMessage());
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -26,8 +26,6 @@ var storeA;
|
|||||||
var cmodelP;
|
var cmodelP;
|
||||||
var smodelA;
|
var smodelA;
|
||||||
var smodelP;
|
var smodelP;
|
||||||
var storeU;
|
|
||||||
var storeX;
|
|
||||||
var cmodelU;
|
var cmodelU;
|
||||||
var smodelU;
|
var smodelU;
|
||||||
var smodelX;
|
var smodelX;
|
||||||
@@ -54,6 +52,9 @@ var removeUAllButton;
|
|||||||
var backButton;
|
var backButton;
|
||||||
var editForm;
|
var editForm;
|
||||||
|
|
||||||
|
var pagingUser;
|
||||||
|
var pagingAvailableUser;
|
||||||
|
|
||||||
var sw_func_permissions;
|
var sw_func_permissions;
|
||||||
var sw_func_users;
|
var sw_func_users;
|
||||||
|
|
||||||
@@ -83,12 +84,12 @@ GridByDefaultP = function(){
|
|||||||
|
|
||||||
//Function DoSearch Available
|
//Function DoSearch Available
|
||||||
DoSearchU = function(){
|
DoSearchU = function(){
|
||||||
availableUGrid.store.load({params: {textFilter: searchTextU.getValue()}});
|
pagingAvailableUser.moveFirst();
|
||||||
};
|
};
|
||||||
|
|
||||||
//Function DoSearch Assigned
|
//Function DoSearch Assigned
|
||||||
DoSearchX = function(){
|
DoSearchX = function(){
|
||||||
assignedUGrid.store.load({params: {textFilter: searchTextX.getValue()}});
|
pagingUser.moveFirst();
|
||||||
};
|
};
|
||||||
|
|
||||||
//Load Grid By Default Available Members
|
//Load Grid By Default Available Members
|
||||||
@@ -149,6 +150,11 @@ CancelEditPermissionsActionU = function(){
|
|||||||
|
|
||||||
|
|
||||||
Ext.onReady(function(){
|
Ext.onReady(function(){
|
||||||
|
var loadMaskUserPermission = new Ext.LoadMask(Ext.getBody(), {msg: _("ID_LOADING_GRID")});
|
||||||
|
|
||||||
|
//Variables
|
||||||
|
var pageSizeU = parseInt(CONFIG.pageSize);
|
||||||
|
var pageSizeA = parseInt(CONFIG.pageSize);
|
||||||
|
|
||||||
sw_func_permissions = false;
|
sw_func_permissions = false;
|
||||||
sw_func_users = false;
|
sw_func_users = false;
|
||||||
@@ -404,34 +410,154 @@ Ext.onReady(function(){
|
|||||||
|
|
||||||
});
|
});
|
||||||
|
|
||||||
storeU = new Ext.data.GroupingStore({
|
//Stores
|
||||||
proxy : new Ext.data.HttpProxy({
|
var storePageSize = new Ext.data.SimpleStore({
|
||||||
url: 'data_rolesUsers?rUID=' + ROLES.ROL_UID + '&type=list'
|
fields: ["size"],
|
||||||
}),
|
data: [["20"], ["30"], ["40"], ["50"], ["100"]],
|
||||||
reader : new Ext.data.JsonReader( {
|
autoLoad: true
|
||||||
root: 'users',
|
|
||||||
fields : [
|
|
||||||
{name : 'USR_UID'},
|
|
||||||
{name : 'USR_USERNAME'},
|
|
||||||
{name : 'USR_FIRSTNAME'},
|
|
||||||
{name : 'USR_LASTNAME'}
|
|
||||||
]
|
|
||||||
})
|
|
||||||
});
|
});
|
||||||
|
|
||||||
storeX = new Ext.data.GroupingStore({
|
var storeUser = new Ext.data.Store({
|
||||||
proxy : new Ext.data.HttpProxy({
|
proxy: new Ext.data.HttpProxy({
|
||||||
url: 'data_rolesUsers?rUID=' + ROLES.ROL_UID + '&type=show'
|
url: "data_rolesUsers",
|
||||||
}),
|
method: "POST"
|
||||||
reader : new Ext.data.JsonReader( {
|
}),
|
||||||
root: 'users',
|
|
||||||
fields : [
|
reader: new Ext.data.JsonReader({
|
||||||
{name : 'USR_UID'},
|
root: "resultRoot",
|
||||||
{name : 'USR_USERNAME'},
|
totalProperty: "resultTotal",
|
||||||
{name : 'USR_FIRSTNAME'},
|
fields: [
|
||||||
{name : 'USR_LASTNAME'}
|
{name: 'USR_UID'},
|
||||||
]
|
{name: 'USR_USERNAME'},
|
||||||
})
|
{name: 'USR_FIRSTNAME'},
|
||||||
|
{name: 'USR_LASTNAME'}
|
||||||
|
]
|
||||||
|
}),
|
||||||
|
|
||||||
|
remoteSort: true,
|
||||||
|
|
||||||
|
listeners: {
|
||||||
|
beforeload: function (store)
|
||||||
|
{
|
||||||
|
loadMaskUserPermission.show();
|
||||||
|
|
||||||
|
this.baseParams = {
|
||||||
|
"option": "USERS",
|
||||||
|
"roleUid": ROLES.ROL_UID,
|
||||||
|
"pageSize": pageSizeU,
|
||||||
|
"filter": searchTextX.getValue()
|
||||||
|
};
|
||||||
|
},
|
||||||
|
load: function (store, record, opt)
|
||||||
|
{
|
||||||
|
loadMaskUserPermission.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
var storeAvailableUser = new Ext.data.Store({
|
||||||
|
proxy: new Ext.data.HttpProxy({
|
||||||
|
url: "data_rolesUsers",
|
||||||
|
method: "POST"
|
||||||
|
}),
|
||||||
|
|
||||||
|
reader: new Ext.data.JsonReader({
|
||||||
|
root: "resultRoot",
|
||||||
|
totalProperty: "resultTotal",
|
||||||
|
fields: [
|
||||||
|
{name: 'USR_UID'},
|
||||||
|
{name: 'USR_USERNAME'},
|
||||||
|
{name: 'USR_FIRSTNAME'},
|
||||||
|
{name: 'USR_LASTNAME'}
|
||||||
|
]
|
||||||
|
}),
|
||||||
|
|
||||||
|
remoteSort: true,
|
||||||
|
|
||||||
|
listeners: {
|
||||||
|
beforeload: function (store)
|
||||||
|
{
|
||||||
|
loadMaskUserPermission.show();
|
||||||
|
|
||||||
|
this.baseParams = {
|
||||||
|
"option": "AVAILABLE-USERS",
|
||||||
|
"roleUid": ROLES.ROL_UID,
|
||||||
|
"pageSize": pageSizeA,
|
||||||
|
"filter": searchTextU.getValue()
|
||||||
|
};
|
||||||
|
},
|
||||||
|
load: function (store, record, opt)
|
||||||
|
{
|
||||||
|
loadMaskUserPermission.hide();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
//Components
|
||||||
|
var cboPageSizeUser = new Ext.form.ComboBox({
|
||||||
|
id: "cboPageSizeUser",
|
||||||
|
|
||||||
|
mode: "local",
|
||||||
|
triggerAction: "all",
|
||||||
|
store: storePageSize,
|
||||||
|
valueField: "size",
|
||||||
|
displayField: "size",
|
||||||
|
width: 50,
|
||||||
|
editable: false,
|
||||||
|
|
||||||
|
listeners: {
|
||||||
|
select: function (combo, record, index)
|
||||||
|
{
|
||||||
|
pageSizeU = parseInt(record.data["size"]);
|
||||||
|
|
||||||
|
pagingUser.pageSize = pageSizeU;
|
||||||
|
pagingUser.moveFirst();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
pagingUser = new Ext.PagingToolbar({
|
||||||
|
id: "pagingUser",
|
||||||
|
|
||||||
|
pageSize: pageSizeU,
|
||||||
|
store: storeUser,
|
||||||
|
displayInfo: true,
|
||||||
|
displayMsg: _("ID_GRID_PAGE_DISPLAYING_ITEMS"),
|
||||||
|
emptyMsg: _("ID_NO_RECORDS_FOUND"),
|
||||||
|
items: ["-", _("ID_PAGE_SIZE") + " ", cboPageSizeUser]
|
||||||
|
});
|
||||||
|
|
||||||
|
var cboPageSizeAvailableUser = new Ext.form.ComboBox({
|
||||||
|
id: "cboPageSizeAvailableUser",
|
||||||
|
|
||||||
|
mode: "local",
|
||||||
|
triggerAction: "all",
|
||||||
|
store: storePageSize,
|
||||||
|
valueField: "size",
|
||||||
|
displayField: "size",
|
||||||
|
width: 50,
|
||||||
|
editable: false,
|
||||||
|
|
||||||
|
listeners: {
|
||||||
|
select: function (combo, record, index)
|
||||||
|
{
|
||||||
|
pageSizeA = parseInt(record.data["size"]);
|
||||||
|
|
||||||
|
pagingAvailableUser.pageSize = pageSizeA;
|
||||||
|
pagingAvailableUser.moveFirst();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
pagingAvailableUser = new Ext.PagingToolbar({
|
||||||
|
id: "pagingAvailableUser",
|
||||||
|
|
||||||
|
pageSize: pageSizeA,
|
||||||
|
store: storeAvailableUser,
|
||||||
|
displayInfo: true,
|
||||||
|
displayMsg: _("ID_GRID_PAGE_DISPLAYING_ITEMS"),
|
||||||
|
emptyMsg: _("ID_NO_RECORDS_FOUND"),
|
||||||
|
items: ["-", _("ID_PAGE_SIZE") + " ", cboPageSizeAvailableUser]
|
||||||
});
|
});
|
||||||
|
|
||||||
cmodelU = new Ext.grid.ColumnModel({
|
cmodelU = new Ext.grid.ColumnModel({
|
||||||
@@ -510,7 +636,7 @@ Ext.onReady(function(){
|
|||||||
title : _('ID_AVAILABLE_USERS'),
|
title : _('ID_AVAILABLE_USERS'),
|
||||||
region : 'center',
|
region : 'center',
|
||||||
ddGroup : 'assignedUGridDDGroup',
|
ddGroup : 'assignedUGridDDGroup',
|
||||||
store : storeX,
|
store: storeAvailableUser,
|
||||||
cm : cmodelU,
|
cm : cmodelU,
|
||||||
sm : smodelX,
|
sm : smodelX,
|
||||||
enableDragDrop : true,
|
enableDragDrop : true,
|
||||||
@@ -528,7 +654,7 @@ Ext.onReady(function(){
|
|||||||
columnLines : false,
|
columnLines : false,
|
||||||
viewConfig : {forceFit:true},
|
viewConfig : {forceFit:true},
|
||||||
tbar: [cancelEditPermissionsUButton,{xtype: 'tbfill'},'-',searchTextU, clearTextButtonU],
|
tbar: [cancelEditPermissionsUButton,{xtype: 'tbfill'},'-',searchTextU, clearTextButtonU],
|
||||||
//bbar: [{xtype: 'tbfill'}, assignUAllButton],
|
bbar: pagingAvailableUser,
|
||||||
listeners: {rowdblclick: AssignUserAction},
|
listeners: {rowdblclick: AssignUserAction},
|
||||||
hidden : true
|
hidden : true
|
||||||
});
|
});
|
||||||
@@ -537,7 +663,7 @@ Ext.onReady(function(){
|
|||||||
layout : 'fit',
|
layout : 'fit',
|
||||||
title : _('ID_ASSIGNED_USERS'),
|
title : _('ID_ASSIGNED_USERS'),
|
||||||
ddGroup : 'availableUGridDDGroup',
|
ddGroup : 'availableUGridDDGroup',
|
||||||
store : storeU,
|
store: storeUser,
|
||||||
cm : cmodelU,
|
cm : cmodelU,
|
||||||
sm : smodelU,
|
sm : smodelU,
|
||||||
enableDragDrop : false,
|
enableDragDrop : false,
|
||||||
@@ -554,7 +680,8 @@ Ext.onReady(function(){
|
|||||||
frame : false,
|
frame : false,
|
||||||
columnLines : false,
|
columnLines : false,
|
||||||
viewConfig : {forceFit:true},
|
viewConfig : {forceFit:true},
|
||||||
tbar : [editPermissionsUButton,{xtype: 'tbfill'},'-',searchTextX, clearTextButtonX]
|
tbar: [editPermissionsUButton, {xtype: "tbfill"}, "-", searchTextX, clearTextButtonX],
|
||||||
|
bbar: pagingUser
|
||||||
});
|
});
|
||||||
|
|
||||||
buttonsUPanel = new Ext.Panel({
|
buttonsUPanel = new Ext.Panel({
|
||||||
@@ -613,6 +740,9 @@ Ext.onReady(function(){
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
|
cboPageSizeUser.setValue(pageSizeU);
|
||||||
|
cboPageSizeAvailableUser.setValue(pageSizeA);
|
||||||
|
|
||||||
//LOAD ALL PANELS
|
//LOAD ALL PANELS
|
||||||
viewport = new Ext.Viewport({
|
viewport = new Ext.Viewport({
|
||||||
layout: 'border',
|
layout: 'border',
|
||||||
|
|||||||
Reference in New Issue
Block a user