- Модуль: sender
- Путь к файлу: ~/bitrix/modules/sender/lib/access/service/rolepermissionservice.php
- Класс: Bitrix\Sender\Access\Service\RolePermissionService
- Вызов: RolePermissionService::saveRolePermissions
public function saveRolePermissions(array &$permissionSettings, int $dealCategoryId = -1): void
{
$query = [];
$roles = [];
foreach ($permissionSettings as &$setting)
{
$roleId = (int) $setting['id'];
$roleTitle = (string) $setting['title'];
$roleId = $this->saveRole($roleTitle, $dealCategoryId, $roleId);
$setting['id'] = $roleId;
$roles[] = $roleId;
if(!isset($setting['accessRights']))
{
continue;
}
foreach ($setting['accessRights'] as $permission)
{
if((int)$permission['id'] < 1)
{
continue;
}
$query[] = sprintf(
'(%d, %d, %d)',
$roleId,
(int)$permission['id'],
$permission['value']
);
}
}
if($query)
{
if (!PermissionTable::deleteList(["=ROLE_ID" =>$roles]))
{
throw new SqlQueryException(Loc::getMessage(self::DB_ERROR_KEY));
}
try
{
RoleUtil::insertPermissions($query);
if (\Bitrix\Main\Loader::includeModule("intranet"))
{
\CIntranetUtils::clearMenuCache();
}
} catch (\Exception $e)
{
throw new SqlQueryException(self::DB_ERROR_KEY);
}
}
}