- Модуль: im
- Путь к файлу: ~/bitrix/modules/im/classes/general/im_event.php
- Класс: CIMEvent
- Вызов: CIMEvent::OnAfterUserUpdate
static function OnAfterUserUpdate($arParams)
{
IMV2MessageCounterService::onAfterUserUpdate($arParams);
IMV2ChatUserOwnerService::onAfterUserUpdate($arParams);
$commonChatId = CIMChat::GetGeneralChatId();
if ($commonChatId > 0 && (isset($arParams['ACTIVE']) || isset($arParams['UF_DEPARTMENT'])))
{
if ($arParams['ACTIVE'] == 'N')
{
//CIMMessage::SetReadMessageAll($arParams['ID']);
if ($commonChatId && CIMChat::GetRelationById($commonChatId, $arParams["ID"], true, false))
{
$CIMChat = new CIMChat($arParams["ID"]);
$CIMChat->DeleteUser($commonChatId, $arParams["ID"]);
}
}
else
{
$commonChatId = CIMChat::GetGeneralChatId();
if ($commonChatId)
{
if (BitrixImUser::getInstance($arParams["ID"])->isBot())
{
return true;
}
if ($arParams['ACTIVE'] != 'Y' && !BitrixImUser::getInstance($arParams["ID"])->isActive())
{
return true;
}
$userInChat = CIMChat::GetRelationById($commonChatId, $arParams["ID"], true, false);
$userCanJoin = CIMChat::CanJoinGeneralChatId($arParams["ID"]);
if ($userInChat && !$userCanJoin)
{
$CIMChat = new CIMChat($arParams["ID"]);
$CIMChat->DeleteUser($commonChatId, $arParams["ID"]);
}
else if (!$userInChat && $userCanJoin)
{
$CIMChat = new CIMChat(0);
$CIMChat->AddUser($commonChatId, [$arParams["ID"]], null, true, true);
}
}
}
}
if (isset($arParams['ACTIVE']))
{
self::updateChatUserCounter($arParams["ID"]);
}
}