• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/notify.php
  • Класс: BitrixImNotify
  • Вызов: Notify::getCounters
static function getCounters($chatId, $isReal = false)
{
	$result = Array();
	$chatList = Array();
	if (is_array($chatId))
	{
		foreach($chatId as $id)
		{
			$id = intval($id);
			if ($id)
			{
				$result[$id] = 0;
				$chatList[$id] = $id;
			}
		}
		$chatList = array_values($chatList);
		$isMulti = count($chatList) > 1;
	}
	else
	{
		$id = intval($chatId);
		if ($id)
		{
			$result[$id] = 0;
			$chatList[] = $id;
		}
		$isMulti = false;
	}

	if (!$chatList)
	{
		return false;
	}

	/*if ($isReal)
	{
		$query = "
			SELECT CHAT_ID, COUNT(1) COUNTER
			FROM b_im_message
			WHERE CHAT_ID ".($isMulti? ' IN ('.implode(',', $chatList).')': ' = '.$chatList[0])."
				  AND NOTIFY_READ = 'N'
			GROUP BY CHAT_ID
		";
	}
	else
	{
		$query = "
			SELECT CHAT_ID, COUNTER
			FROM b_im_relation
			WHERE CHAT_ID ".($isMulti? ' IN ('.implode(',', $chatList).')': ' = '.$chatList[0])."
		";
	}*/

	/*$orm = BitrixMainApplication::getInstance()->getConnection()->query($query);
	while($row = $orm->fetch())
	{
		$result[$row['CHAT_ID']] = (int)$row['COUNTER'];
	}*/

	if ($isMulti)
	{
		$result = (new CounterService(Common::getUserId()))->getForNotifyChats($chatList);
	}
	else
	{
		$counter = (new CounterService(Common::getUserId()))->getByChat($chatList[0]);
		$result[$chatList[0]] = $counter;
	}

	return $result;
}