• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/access/role/roleutil.php
  • Класс: BitrixMainAccessRoleRoleUtil
  • Вызов: RoleUtil::updatePermissions
public function updatePermissions(array $permissions)
{
	$this->loadRole();

	if (!$this->validatePermissions($permissions))
	{
		throw new RoleNotFoundException();
	}

	$permissionClass = static::getPermissionTableClass();
	$permissionClass::deleteList([
		'=ROLE_ID' => $this->roleId
	]);

	$connection = Application::getConnection();
	$helper = $connection->getSqlHelper();

	$query = [];
	foreach ($permissions as $id => $value)
	{
		$query[] = '('. $this->roleId .', "'. $helper->forSql(trim($id)) .'", '. (int) $value .')';
	}

	if (empty($query))
	{
		return;
	}

	$query = '
		INSERT INTO '. $helper->quote($permissionClass::getTableName()) .'
			(ROLE_ID, PERMISSION_ID, ' . $helper->quote('VALUE') . ')
			VALUES
			'. implode(',', $query) .'
	';

	try
	{
		$connection->query($query);
	}
	catch (Exception $e)
	{
		throw new PermissionSaveException();
	}
}