• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/update/chatconfigconverter.php
  • Класс: BitrixImUpdateChatConfigConverter
  • Вызов: ChatConfigConverter::createPersonalPreset
private function createPersonalPreset($userId, $notifySettings, $generalSettings, $defaultGroupId): void
{
	$userGroupId =
		OptionGroupTable::add([
			'USER_ID' => $userId,
			'SORT' => Configuration::USER_PRESET_SORT,
			'CREATE_BY_ID' => 0
		])
			->getId()
	;

	$isSettingsChanged = false;

	try
	{
		if (!empty($generalSettings))
		{
			$generalSettings = $this->convertGeneralSettings($generalSettings);
			$row =
				StatusTable::query()
					->addSelect('STATUS')
					->where('USER_ID', $userId)
					->fetch()
			;
			if ($row)
			{
				$generalSettings['status'] = $row['STATUS'];
			}

			General::setSettings($userGroupId, $generalSettings);

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

			Notification::setSettings($userGroupId, $notifySettings);
			$isSettingsChanged = true;
		}
	}
	catch (Exception $exception) {}

	OptionUserTable::add([
		'USER_ID' => $userId,
		'NOTIFY_GROUP_ID' => $isSettingsChanged ? $userGroupId : $defaultGroupId,
		'GENERAL_GROUP_ID' => $isSettingsChanged ? $userGroupId : $defaultGroupId
	]);

	OptionAccessTable::add([
		'GROUP_ID' => $userGroupId,
		'ACCESS_CODE' => 'U' . $userId
	]);
}