- Модуль: crm
- Путь к файлу: ~/bitrix/modules/crm/lib/security/role/rolepermission.php
- Класс: Bitrix\Crm\Security\Role\RolePermission
- Вызов: RolePermission::getPermissionsByRoles
static function getPermissionsByRoles(array $roleIds): array
{
if (empty($roleIds))
{
return [];
}
$rolePermissions = \Bitrix\Crm\Security\Role\Model\RolePermissionTable::getList([
'filter' => [
'@ROLE_ID' => $roleIds,
],
'select' => [
'ENTITY',
'FIELD',
'FIELD_VALUE',
'ATTR',
'PERM_TYPE',
],
'cache' => [
'ttl' => 84600,
]
]);
$result = [];
while ($permission = $rolePermissions->fetch())
{
$attribute = trim((string)$permission['ATTR']);
$field = (string)$permission['FIELD'];
$fieldValue = (string)$permission['FIELD_VALUE'];
$entity = (string)$permission['ENTITY'];
$permissionType = (string)$permission['PERM_TYPE'];
if ($field == '-')
{
if (!isset($result[$entity][$permissionType][$field])
|| $attribute > $result[$entity][$permissionType][$field])
{
$result[$entity][$permissionType][$field] = $attribute;
}
}
else
if (!isset($result[$entity][$permissionType][$field][$fieldValue])
|| $attribute > $result[$entity][$permissionType][$field][$fieldValue])
{
$result[$entity][$permissionType][$field][$fieldValue] = $attribute;
}
}
return $result;
}