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