diff --git a/languages/en_us/Settings/Roles.php b/languages/en_us/Settings/Roles.php index dd9d11ab16bc3a0855ef8f70174ba7bf6c5c680d..77ab8b62e0f05352827b2e69ec855df35f88c0ac 100644 --- a/languages/en_us/Settings/Roles.php +++ b/languages/en_us/Settings/Roles.php @@ -35,6 +35,7 @@ $languageStrings = array( 'LBL_ALL_USERS' => 'All Users', 'LBL_USERS_WITH_LOWER_LEVEL' => 'Users having Subordinate Role', 'LBL_USERS_WITH_SAME_OR_LOWER_LEVEL' => 'Users having Same Role or Subordinate Role', + 'LBL_USERS_WITH_SAME_LEVEL_AND_SUBORDINATES' => 'Users having Same Level or Subordinate Role', /*Vtiger7 String*/ 'LBL_EDIT_ROLE' => 'Edit Role', diff --git a/layouts/v7/modules/Settings/Roles/EditView.tpl b/layouts/v7/modules/Settings/Roles/EditView.tpl index 917115bcb08a73015d162f03ef9dbb845792bee7..a73e5bd04410bf781aa24966c04614e58f842eb2 100644 --- a/layouts/v7/modules/Settings/Roles/EditView.tpl +++ b/layouts/v7/modules/Settings/Roles/EditView.tpl @@ -68,6 +68,11 @@ <div class="radio"> <label> <input type="radio" value="2" {if $RECORD_MODEL->get('allowassignedrecordsto') eq '2'} checked="" {/if} name="allowassignedrecordsto" data-handler="new" class="alignTop"/> + {vtranslate('LBL_USERS_WITH_SAME_LEVEL_AND_SUBORDINATES',$QUALIFIED_MODULE)}</label> + </div> + <div class="radio"> + <label> + <input type="radio" value="4" {if $RECORD_MODEL->get('allowassignedrecordsto') eq '4'} checked="" {/if} name="allowassignedrecordsto" data-handler="new" class="alignTop"/> {vtranslate('LBL_USERS_WITH_SAME_OR_LOWER_LEVEL',$QUALIFIED_MODULE)}</label> </div> <div class="radio"> diff --git a/modules/Users/models/Record.php b/modules/Users/models/Record.php index 0308b1739a918d5a593258f7bbb8d6d00286177f..c6933e9c25f1a6226191a659f76e152622fee179 100644 --- a/modules/Users/models/Record.php +++ b/modules/Users/models/Record.php @@ -426,6 +426,8 @@ class Users_Record_Model extends Vtiger_Record_Model { if(empty($accessibleUser)) { if($currentUserRoleModel->get('allowassignedrecordsto') === '1' || $private == 'Public') { $accessibleUser = get_user_array(false, "ACTIVE", "", $private,$module); + } else if($currentUserRoleModel->get('allowassignedrecordsto') === '4'){ + $accessibleUser = $this->getSameRolelUsersWithSubordinates(); } else if($currentUserRoleModel->get('allowassignedrecordsto') === '2'){ $accessibleUser = $this->getSameLevelUsersWithSubordinates(); } else if($currentUserRoleModel->get('allowassignedrecordsto') === '3') { @@ -436,6 +438,24 @@ class Users_Record_Model extends Vtiger_Record_Model { return $accessibleUser; } + /** + * Function to get same ROLE and subordinates Users + * @return <array> Users + */ + public function getSameRolelUsersWithSubordinates(){ + $currentUserRoleModel = Settings_Roles_Record_Model::getInstanceById($this->getRole()); + $roleID = $currentUserRoleModel->getId(); + //$sameLevelRoles = $currentUserRoleModel->getSameLevelRoles(); + //$sameLevelUsers = $this->getAllUsersOnRoles($sameLevelRoles); + $thisRole = array($roleID =>$currentUserRoleModel ); + $sameLevelUsers = $this->getAllUsersOnRoles($thisRole); + $subordinateUsers = $this->getRoleBasedSubordinateUsers(); + foreach ($subordinateUsers as $userId => $userName) { + $sameLevelUsers[$userId] = $userName; + } + return $sameLevelUsers; + } + /** * Function to get same level and subordinates Users * @return <array> Users