3namespace Bitrix\Im\V2\Recent;
5use Bitrix\Im\Model\EO_Recent_Collection;
6use Bitrix\Im\Model\RecentTable;
8use Bitrix\Im\V2\Message\CounterService;
9use Bitrix\Main\Type\DateTime;
15 $recent =
new static();
16 $userId = $recent->getContext()->getUserId();
17 $recentEntities = static::getOrmEntities($limit,
$userId, $lastMessageDate);
19 $chatIds = $recentEntities->getItemCidList();
22 foreach ($recentEntities as
$entity)
26 ->setMessageId(
$entity->getItemMid())
27 ->setChatId(
$entity->getItemCid())
28 ->setDialogId(
'chat' .
$entity->getItemCid())
30 ->setUnread(
$entity->getUnread())
31 ->setPinned(
$entity->getPinned())
32 ->setLastReadMessageId(
$entity->getRelation()->getLastId())
33 ->setDateUpdate(
$entity->getDateUpdate())
34 ->setDateLastActivity(
$entity->getDateLastActivity())
36 $recent[] = $recentItem;
44 $query = RecentTable::query()
55 ->where(
'ITEM_TYPE', Chat::IM_TYPE_COLLAB)
57 ->setOrder(self::getOrder(
$userId))
60 if (isset($lastMessageDate))
62 $query->where(
'DATE_LAST_ACTIVITY',
'<=', $lastMessageDate);
65 return $query->fetchCollection();
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static getOrmEntities(int $limit, int $userId, ?DateTime $lastMessageDate=null)
static getCollabs(int $limit, ?DateTime $lastMessageDate=null)