- Модуль: 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;
}