- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/lib/Configuration/Manager.php
- Класс: BitrixImConfigurationManager
- Вызов: Manager::setUserSetting
static function setUserSetting(int $userId, string $type, array $settings): Result
{
$result = new Result();
if (!in_array($type, [self::NOTIFY, self::GENERAL], true))
{
$result->addError(new Error('Incorrect data when receiving chat settings', 400));
return $result;
}
$userPresetId =
BitrixImModelOptionGroupTable::query()
->addSelect('ID')
->where('USER_ID', $userId)
->fetch()
;
$userPresetId = $userPresetId['ID'] ?? null;
if ($type === self::NOTIFY)
{
if (!$userPresetId)
{
$preset['notify'] = $settings;
$preset['general'] = [];
Configuration::createUserPreset($userId, $preset);
return $result;
}
Notification::updateGroupSettings($userPresetId, $settings);
}
if ($type === self::GENERAL)
{
self::updateUserStatus($userId, $settings);
self::sendSettingsChangeEvent($userId, $settings);
self::disableUserSearch($userId, $settings);
if (!$userPresetId)
{
$preset['general'] = array_replace_recursive(General::getDefaultSettings(), $settings);
$preset['notify'] = [];
Configuration::createUserPreset($userId, $preset);
return $result;
}
General::updateGroupSettings($userPresetId, $settings);
self::enableUserSearch($userId, $settings);
}
CacheManager::getPresetCache($userPresetId)->clearCache();
CacheManager::getUserCache($userId)->clearCache();
return $result;
}