• Модуль: crm
  • Путь к файлу: ~/bitrix/modules/crm/lib/integration/sign/access/service/rolerelationservice.php
  • Класс: Bitrix\Crm\Integration\Sign\Access\Service\RoleRelationService
  • Вызов: RoleRelationService::saveRoleRelation
public function saveRoleRelation(array $settings): void
{
	$currentRelations = (new \CCrmRole())->GetRelation();
	$relation = [];
	$roles = [];
	foreach ($settings as $setting)
	{
		$roleId = $setting['id'];
		$accessCodes = $setting['accessCodes'] ?? [];
		
		if ($roleId === false || !$this->validateRoleId($roleId))
		{
			continue;
		}
		foreach ($accessCodes as $code => $value)
		{
			$relation[$code][] = $roleId;
		}
		$roles[] = $roleId;
	}
	
	while ($currentRelation = $currentRelations->Fetch())
	{
		if (!in_array($currentRelation['ROLE_ID'],  $roles))
		{
			$relation[$currentRelation['RELATION']][] = $currentRelation['ROLE_ID'];
		}
	}
	
	(new \CCrmRole())->SetRelation($relation, false);
}