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