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