• Модуль: main
  • Путь к файлу: ~/bitrix/modules/main/lib/access/role/roleutil.php
  • Класс: BitrixMainAccessRoleRoleUtil
  • Вызов: RoleUtil::updateRoleRelations
public function updateRoleRelations(array $roleRelations)
{
	$connection = Application::getConnection();
	$helper = $connection->getSqlHelper();

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

	$query = [];
	foreach ($roleRelations as $code => $type)
	{
		if(!AccessCode::isValid($code))
		{
			throw new RoleRelationSaveException();
		}

		$query[] = '('. $this->roleId .', "'. $helper->forSql(trim($code)) .'")';
	}

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

	$query = '
		INSERT INTO `'. $roleRelationsClass::getTableName() .'`
			(ROLE_ID, RELATION)
			VALUES
			'. implode(',', $query) .'
	';

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