• Модуль: im
  • Путь к файлу: ~/bitrix/modules/im/lib/recent.php
  • Класс: BitrixImRecent
  • Вызов: Recent::getElement
static function getElement($itemType, $itemId, $userId = null, $options = [])
{
	$userId = BitrixImCommon::getUserId($userId);
	if (!$userId)
	{
		return false;
	}

	$generalChatId = CIMChat::GetGeneralChatId();

	$ormParams = self::getOrmParams([
		'USER_ID' => $userId,
		'SHOW_OPENLINES' => $itemType === IM_MESSAGE_OPEN_LINE,
		'WITHOUT_COMMON_USERS' => true,
	]);

	$ormParams['filter']['=ITEM_TYPE'] = $itemType;
	$ormParams['filter']['=ITEM_ID'] = $itemId;

	$orm = BitrixImModelRecentTable::getList([
		'select' => $ormParams['select'],
		'filter' => $ormParams['filter'],
		'runtime' => $ormParams['runtime'],
	]);

	$result = null;
	$rows = $orm->fetchAll();
	$rows = self::prepareRows($rows, $userId);
	foreach ($rows as $row)
	{
		$isUser = $row['ITEM_TYPE'] == IM_MESSAGE_PRIVATE;
		if ($isUser)
		{
			if ($result && !$row['ITEM_MID'])
			{
				continue;
			}
		}
		else if ($result)
		{
			continue;
		}

		$item = self::formatRow($row, [
			'GENERAL_CHAT_ID' => $generalChatId,
		]);
		if (!$item)
		{
			continue;
		}

		$result = $item;
	}
	$result = self::prepareRows([$result], $userId)[0];

	if ($options['JSON'])
	{
		$result = self::jsonRow($result);
	}

	return $result;
}