• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/update/chatconfigconverter.php
  • Класс: BitrixImUpdateChatConfigConverter
  • Вызов: ChatConfigConverter::bindExistingGroupToUser
private function bindExistingGroupToUser($userId, $groupId, $defaultGroupId): void
{
	$notifyCount = OptionStateTable::getCount([
		'=GROUP_ID' => $groupId,
		'%=NAME' => 'no%'
	]);

	$generalCount = OptionStateTable::getCount([
		'=GROUP_ID' => $groupId,
		'%=NAME' => 'se%'
	]);

	$notifyGroupId = $notifyCount > 0 ? $groupId : $defaultGroupId;
	$generalGroupId = $generalCount > 0 ? $groupId : $defaultGroupId;

	if ($notifyGroupId === $groupId && $generalGroupId === $groupId)
	{
		$insertFields = [
			'USER_ID' => $userId,
			'GENERAL_GROUP_ID' => $generalGroupId,
			'NOTIFY_GROUP_ID' => $notifyGroupId
		];
		$updateFields = [
			'GENERAL_GROUP_ID' => $generalGroupId,
			'NOTIFY_GROUP_ID' => $notifyGroupId
		];

		OptionUserTable::merge($insertFields, $updateFields);

		return;
	}

	$generalSettings = CUserOptions::GetOption('im', 'settings', [], $userId);

	if ($generalGroupId === $defaultGroupId && !empty($generalSettings))
	{
		$generalGroupId = $groupId;
		$generalSettings = $this->convertGeneralSettings($generalSettings);

		General::setSettings($generalGroupId, $generalSettings);
	}

	if ($notifyGroupId === $defaultGroupId)
	{
		$notifySettings = CUserOptions::GetOption('im', 'notify', [], $userId);

		if ($generalSettings['notifyScheme'] === 'simple')
		{
			$generalSettings = $this->convertGeneralSettings($generalSettings);
			$notifySettings = Notification::getSimpleNotifySettings($generalSettings);
		}

		if (!empty($notifySettings))
		{
			$notifyGroupId = $groupId;
			$notifySettings = $this->convertNotifySettings($notifySettings);
			Notification::setSettings($notifyGroupId, $notifySettings);
		}
	}

	$insertFields = [
		'USER_ID' => $userId,
		'GENERAL_GROUP_ID' => $generalGroupId,
		'NOTIFY_GROUP_ID' => $notifyGroupId
	];
	$updateFields = [
		'GENERAL_GROUP_ID' => $generalGroupId,
		'NOTIFY_GROUP_ID' => $notifyGroupId
	];

	OptionUserTable::merge($insertFields, $updateFields);
}