1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
RecentCollab.php
См. документацию.
1<?php
2
3namespace Bitrix\Im\V2\Recent;
4
5use Bitrix\Im\Model\EO_Recent_Collection;
6use Bitrix\Im\Model\RecentTable;
7use Bitrix\Im\V2\Chat;
8use Bitrix\Im\V2\Message\CounterService;
9use Bitrix\Main\Type\DateTime;
10
11class RecentCollab extends Recent
12{
13 public static function getCollabs(int $limit, ?DateTime $lastMessageDate = null): self
14 {
15 $recent = new static();
16 $userId = $recent->getContext()->getUserId();
17 $recentEntities = static::getOrmEntities($limit, $userId, $lastMessageDate);
18
19 $chatIds = $recentEntities->getItemCidList();
20 $counters = (new CounterService($userId))->getForEachChat($chatIds);
21
22 foreach ($recentEntities as $entity)
23 {
24 $recentItem = new RecentItem();
25 $recentItem
26 ->setMessageId($entity->getItemMid())
27 ->setChatId($entity->getItemCid())
28 ->setDialogId('chat' . $entity->getItemCid())
29 ->setCounter($counters[$entity->getItemCid()] ?? 0)
30 ->setUnread($entity->getUnread())
31 ->setPinned($entity->getPinned())
32 ->setLastReadMessageId($entity->getRelation()->getLastId())
33 ->setDateUpdate($entity->getDateUpdate())
34 ->setDateLastActivity($entity->getDateLastActivity())
35 ;
36 $recent[] = $recentItem;
37 }
38
39 return $recent;
40 }
41
42 protected static function getOrmEntities(int $limit, int $userId, ?DateTime $lastMessageDate = null): EO_Recent_Collection
43 {
44 $query = RecentTable::query()
45 ->setSelect([
46 'ITEM_CID',
47 'ITEM_MID',
48 'UNREAD',
49 'PINNED',
50 'DATE_LAST_ACTIVITY',
51 'DATE_UPDATE',
52 'RELATION.LAST_ID',
53 ])
54 ->where('USER_ID', $userId)
55 ->where('ITEM_TYPE', Chat::IM_TYPE_COLLAB)
56 ->setLimit($limit)
57 ->setOrder(self::getOrder($userId))
58 ;
59
60 if (isset($lastMessageDate))
61 {
62 $query->where('DATE_LAST_ACTIVITY', '<=', $lastMessageDate);
63 }
64
65 return $query->fetchCollection();
66 }
67}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
static getOrmEntities(int $limit, int $userId, ?DateTime $lastMessageDate=null)
Определения RecentCollab.php:42
static getCollabs(int $limit, ?DateTime $lastMessageDate=null)
Определения RecentCollab.php:13
$query
Определения get_search.php:11
$entity
$counters
Определения options.php:100