public static function getDepartmentLimitation() { $currentUser = erLhcoreClassUser::instance(); $LimitationDepartament = ''; $userData = $currentUser->getUserData(true); if ($userData->all_departments == 0) { $userDepartaments = erLhcoreClassUserDep::getUserDepartaments($currentUser->getUserID()); if (count($userDepartaments) == 0) { return false; } $LimitationDepartament = '(lh_transfer.dep_id IN (' . implode(',', $userDepartaments) . '))'; return $LimitationDepartament; } return true; }
public static function getOnlineOperators($currentUser, $canListOnlineUsersAll = false) { $LimitationDepartament = ''; $userData = $currentUser->getUserData(true); $filter = array(); if ($userData->all_departments == 0 && $canListOnlineUsersAll == false) { $userDepartaments = erLhcoreClassUserDep::getUserDepartaments($currentUser->getUserID()); if (count($userDepartaments) == 0) { return array(); } $index = array_search(-1, $userDepartaments); if ($index !== false) { unset($userDepartaments[$index]); } $filter['customfilter'][] = '(dep_id IN (' . implode(',', $userDepartaments) . ') OR user_id = ' . $currentUser->getUserID() . ')'; } $filter['filtergt']['last_activity'] = time() - 120; $filter['limit'] = 10; $filter['sort'] = 'last_activity DESC'; $filter['groupby'] = 'user_id'; return self::getList($filter); }
if ($showDepartmentsStats == true) { /** * Departments stats * */ $limitList = is_numeric($Params['user_parameters_unordered']['limitd']) ? (int) $Params['user_parameters_unordered']['limitd'] : 10; $filter = array('ignore_fields' => erLhcoreClassChat::$chatListIgnoreField); $filter['limit'] = $limitList; if (is_array($Params['user_parameters_unordered']['departmentd']) && !empty($Params['user_parameters_unordered']['departmentd'])) { erLhcoreClassChat::validateFilterIn($Params['user_parameters_unordered']['departmentd']); $filter['filterin']['id'] = $Params['user_parameters_unordered']['departmentd']; } // Add permission check if operator does not have permission to see all departments stats if ($showDepartmentsStatsAll === false) { $userData = $currentUser->getUserData(true); if ($userData->all_departments == 0) { $userDepartaments = erLhcoreClassUserDep::getUserDepartaments($currentUser->getUserID()); if (!empty($userDepartaments)) { if (isset($filter['filterin']['id'])) { $validDepartments = array_intersect($userDepartaments, $filter['filterin']['id']); if (!empty($validDepartments)) { $filter['filterin']['id'] = $validDepartments; } else { $filter['filterin']['id'] = array(-1); } } else { $filter['filterin']['id'] = $userDepartaments; } } else { $filter['filterin']['id'] = array(-1); // No departments }
public static function hasAccessToRead($chat) { $currentUser = erLhcoreClassUser::instance(); $userData = $currentUser->getUserData(true); if ($userData->all_departments == 0) { /* * --From now permission is strictly by assigned department, not by chat owner * * Finally decided to keep this check, it allows more advance permissions configuration * */ if ($chat->user_id == $currentUser->getUserID()) { return true; } $userDepartaments = erLhcoreClassUserDep::getUserDepartaments($currentUser->getUserID()); if (count($userDepartaments) == 0) { return false; } if (in_array($chat->dep_id, $userDepartaments)) { if ($currentUser->hasAccessTo('lhchat', 'allowopenremotechat') == true) { return true; } elseif ($chat->user_id == 0 || $chat->user_id == $currentUser->getUserID()) { return true; } return false; } return false; } return true; }
?> </h5> <?php if (isset($account_updated_departaments) && $account_updated_departaments == 'done') { $msg = erTranslationClassLhTranslation::getInstance()->getTranslation('user/account', 'Account updated'); ?> <?php include erLhcoreClassDesign::designtpl('lhkernel/alert_success.tpl.php'); ?> <?php } ?> <?php $userDepartaments = erLhcoreClassUserDep::getUserDepartaments($user->id); ?> <form action="<?php echo erLhcoreClassDesign::baseurl('user/edit'); ?> /<?php echo $user->id; ?> #departments" method="post"> <?php include erLhcoreClassDesign::designtpl('lhkernel/csfr_token.tpl.php'); ?> <label><input type="checkbox" value="on" name="all_departments" <?php
/** * * @param erLhcoreClassModelChat $chat * * @return boolean */ public static function hasAccessToRead(erLhcoreClassModelChat $chat) { if (self::$apiKey->user->all_departments == 0) { if ($chat->user_id == self::$apiKey->user->id) { return true; } $userDepartaments = erLhcoreClassUserDep::getUserDepartaments(self::$apiKey->user->id); if (count($userDepartaments) == 0) { return false; } if (in_array($chat->dep_id, $userDepartaments)) { if (self::hasAccessTo('lhchat', 'allowopenremotechat') == true || $chat->status == erLhcoreClassModelChat::STATUS_OPERATORS_CHAT) { return true; } elseif ($chat->user_id == 0 || $chat->user_id == self::$apiKey->user->id) { return true; } return false; } return false; } return true; }