BUG-14596 User with "PM_REASSIGNCASE" permission can not reassign cases to himself.

This is  new feature, now the user with the "PM_REASSIGNCASE" permission is showd in the list of users to reassign the case.
This commit is contained in:
jennylee
2014-05-14 17:11:05 -04:00
parent 59e30b6166
commit 3dd51aab8d
2 changed files with 57 additions and 6 deletions

View File

@@ -92,6 +92,28 @@ class RolesPermissions extends BaseRolesPermissions
return $this->permission_name;
}
/**
* @return string
*/
public function getPermissionsByRolUid($rolUid = '')
{
try {
$oCriteria = new Criteria('rbac');
$oCriteria->add(RolesPermissionsPeer::ROL_UID, $rolUid);
$oDataset = RolesPermissionsPeer::doSelectRS($oCriteria);
$oDataset->setFetchmode(ResultSet::FETCHMODE_ASSOC);
$res = array();
while ($oDataset->next()) {
$res[] = $aRow = $oDataset->getRow();
}
return $res;
}
catch (Exception $oError) {
throw($oError);
}
}
/**
*
* @param string $name

View File

@@ -6415,16 +6415,25 @@ class Cases
{
G::LoadClass('groups');
G::LoadClass('tasks');
$r = new Roles();
$rolPerm = new RolesPermissions();
$perm = false;
$oTasks = new Tasks();
$aAux = $oTasks->getGroupsOfTask($TAS_UID, 1);
$row = array();
$groups = new Groups();
foreach ($aAux as $aGroup) {
$aUsers = $groups->getUsersOfGroup($aGroup['GRP_UID']);
foreach ($aUsers as $aUser) {
if ($aUser['USR_UID'] != $USR_UID) {
$rol_perm = $r->loadByCode($aUser['USR_ROLE']);
$permissions = $rolPerm->getPermissionsByRolUid( $rol_perm['ROL_UID'] );
foreach ($permissions as $permission){
if ($permission['PER_UID'] == "00000000000000000000000000000007"){
$perm = true;
}
}
if ($aUser['USR_UID'] != $USR_UID || $perm == true) {
$row[] = $aUser['USR_UID'];
}
}
@@ -6432,7 +6441,14 @@ class Cases
$aAux = $oTasks->getUsersOfTask($TAS_UID, 1);
foreach ($aAux as $aUser) {
if ($aUser['USR_UID'] != $USR_UID) {
$rol_perm = $r->loadByCode($aUser['USR_ROLE']);
$permissions = $rolPerm->getPermissionsByRolUid( $rol_perm['ROL_UID'] );
foreach ($permissions as $permission){
if ($permission['PER_UID'] == "00000000000000000000000000000007"){
$perm = true;
}
}
if ($aUser['USR_UID'] != $USR_UID || $perm == true) {
$row[] = $aUser['USR_UID'];
}
}
@@ -6444,7 +6460,14 @@ class Cases
foreach ($aAux as $aGroup) {
$aUsers = $groups->getUsersOfGroup($aGroup['GRP_UID']);
foreach ($aUsers as $aUser) {
if ($aUser['USR_UID'] != $USR_UID) {
$rol_perm = $r->loadByCode($aUser['USR_ROLE']);
$permissions = $rolPerm->getPermissionsByRolUid( $rol_perm['ROL_UID'] );
foreach ($permissions as $permission){
if ($permission['PER_UID'] == "00000000000000000000000000000007"){
$perm = true;
}
}
if ($aUser['USR_UID'] != $USR_UID || $perm == true) {
$row[] = $aUser['USR_UID'];
}
}
@@ -6453,7 +6476,14 @@ class Cases
// User Ad Hoc
$aAux = $oTasks->getUsersOfTask($TAS_UID, 2);
foreach ($aAux as $aUser) {
if ($aUser['USR_UID'] != $USR_UID) {
$rol_perm = $r->loadByCode($aUser['USR_ROLE']);
$permissions = $rolPerm->getPermissionsByRolUid( $rol_perm['ROL_UID'] );
foreach ($permissions as $permission){
if ($permission['PER_UID'] == "00000000000000000000000000000007"){
$perm = true;
}
}
if ($aUser['USR_UID'] != $USR_UID || $perm == true) {
$row[] = $aUser['USR_UID'];
}
}
@@ -6527,7 +6557,6 @@ class Cases
}
}
}
return $rows;
}