• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/V2/Message/CounterServiceLegacy.php
  • Класс: BitrixImV2MessageCounterServiceLegacy
  • Вызов: CounterServiceLegacy::countUnreadMessages
protected function countUnreadMessages(?array $chatIds = null): void
{
	$counters = $this->getCountersForEachChat($chatIds);

	$privateChatIds = [];
	foreach ($counters as $counter)
	{
		if ($counter['CHAT_TYPE'] === IM_MESSAGE_PRIVATE)
		{
			$privateChatIds[] = $counter['CHAT_ID'];
		}
	}

	$chatIdToDialogId = $this->getMapChatToDialog($privateChatIds);

	foreach ($counters as $counter)
	{
		$chatId = (int)$counter['CHAT_ID'];
		$count = (int)$counter['COUNT'];
		if ($counter['IS_MUTED'] === 'Y')
		{
			$this->setFromMutedChat($chatId, $count);
		}
		else if ($counter['CHAT_TYPE'] === IM_MESSAGE_SYSTEM)
		{
			$this->setFromNotify($count);
		}
		else if ($counter['CHAT_TYPE'] === IM_MESSAGE_OPEN_LINE)
		{
			$this->setFromLine($chatId, $count);
		}
		else if ($counter['CHAT_TYPE'] === IM_MESSAGE_PRIVATE && isset($chatIdToDialogId[$chatId]))
		{
			$this->setFromDialog($chatIdToDialogId[$chatId], $count);
		}
		else
		{
			$this->setFromChat($chatId, $count);
		}
		$this->countersByChatIds[$chatId] = $count;
	}
}