• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/update/chatinvalidcounter.php
  • Класс: BitrixImUpdateChatInvalidCounter
  • Вызов: ChatInvalidCounter::getChatsWithInvalidCounterByUserId
private function getChatsWithInvalidCounterByUserId(int $userId): array
{
	$query = "
	SELECT x1.CHAT_ID FROM (
		SELECT bimu.CHAT_ID
		FROM b_im_message_unread bimu
		WHERE USER_ID = {$userId} GROUP BY CHAT_ID
	) x1
	
	LEFT JOIN (
	
		SELECT bir.CHAT_ID
		FROM b_im_relation bir
		WHERE
			bir.USER_ID = {$userId} AND
			bir.CHAT_ID IN (
				SELECT bimu.CHAT_ID
				FROM b_im_message_unread bimu
				WHERE USER_ID = {$userId} GROUP BY CHAT_ID
			)
	) x2 ON x1.CHAT_ID = x2.CHAT_ID
	
	WHERE x2.CHAT_ID is null
	";
	$result = Application::getConnection()->query($query);
	$chatIds = [];

	while ($row = $result->fetch())
	{
		$chatIds[] = (int)$row['CHAT_ID'];
	}

	return $chatIds;
}