• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/Configuration/Manager.php
  • Класс: BitrixImConfigurationManager
  • Вызов: Manager::setUserSettings
static function setUserSettings(int $userId, array $settings): Result
{
	$result = new Result();
	if (
		!array_key_exists(self::NOTIFY, $settings)
		|| !array_key_exists(self::GENERAL, $settings)
	)
	{
		$result->addError(new Error('Incorrect data when receiving chat settings', 400));
		return $result;
	}

	self::updateUserStatus($userId, $settings['general']);

	self::sendSettingsChangeEvent($userId, $settings['general']);

	self::disableUserSearch($userId, $settings['general']);

	if (isset($settings['general']['notifyScheme']) && $settings['general']['notifyScheme'] === 'simple')
	{
		$settings['notify'] = Notification::getSimpleNotifySettings($settings['general']);
	}

	$userPresetId =
		BitrixImModelOptionGroupTable::query()
			->addSelect('ID')
			->where('USER_ID', $userId)
			->fetch()
	;

	if (!$userPresetId)
	{
		Configuration::createUserPreset($userId, $settings);

		CacheManager::getUserCache($userId)->clearCache();
		self::enableUserSearch($userId, $settings['general']);

		return $result;
	}

	$userPresetId = $userPresetId['ID'];
	Configuration::updatePresetSettings($userPresetId, $userId, $settings);
	Configuration::chooseExistingPreset($userPresetId, $userId);

	CacheManager::getPresetCache($userPresetId)->clearCache();

	self::enableUserSearch($userId, $settings['general']);

	return $result;
}