1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
RecentActivity.php
См. документацию.
1<?php
2
3namespace Bitrix\Socialnetwork\Space\List\RecentActivity;
4
5use Bitrix\Main\ORM\Query\Filter\ConditionTree;
6use Bitrix\Main\ORM\Query\Query;
7use Bitrix\Main\Type\Collection;
8use Bitrix\Socialnetwork\Internals\Space\RecentActivity\SpaceUserRecentActivityTable;
9use Bitrix\Socialnetwork\Space\List\RecentActivity\Item\RecentActivityData;
10
11final class RecentActivity
12{
13 public function save(RecentActivityData $recentActivityData): ?int
14 {
15 $insertFields = [
16 'USER_ID' => $recentActivityData->getUserId(),
17 'SPACE_ID' => $recentActivityData->getSpaceId(),
18 'TYPE_ID' => $recentActivityData->getTypeId(),
19 'ENTITY_ID' => $recentActivityData->getEntityId(),
20 'SECONDARY_ENTITY_ID' => $recentActivityData->getSecondaryEntityId(),
21 'DATETIME' => $recentActivityData->getDateTime(),
22 ];
23
24 $updateFields = [
25 'DATETIME' => $recentActivityData->getDateTime(),
26 ];
27
28 SpaceUserRecentActivityTable::merge($insertFields, $updateFields, SpaceUserRecentActivityTable::getUniqueFields());
29
30 $id = SpaceUserRecentActivityTable::query()
31 ->setSelect(['ID'])
32 ->where('SPACE_ID', $recentActivityData->getSpaceId())
33 ->where('TYPE_ID', $recentActivityData->getTypeId())
34 ->where('ENTITY_ID', $recentActivityData->getEntityId())
35 ->where('USER_ID', $recentActivityData->getUserId())
36 ->fetch()
37 ;
38
39 $id = (int)($id['ID'] ?? null);
40
41 return $id > 0 ? $id : null;
42 }
43
44 public function deleteMulti(array $idsToDelete): void
45 {
46 $idChunks = array_chunk($idsToDelete, 500);
47
48 foreach ($idChunks as $idChunk)
49 {
50 SpaceUserRecentActivityTable::deleteByFilter(['ID' => $idChunk]);
51 }
52 }
53
54 public function getIdsToDeleteByUserId(int $userId, string $typeId, int $entityId): array
55 {
56 $query = SpaceUserRecentActivityTable::query()
57 ->setSelect(['ID'])
58 ->where('USER_ID', $userId)
59 ;
60
61 $this->prepareToDeleteQuery($query, $typeId, $entityId);
62
63 $result = $query->fetchAll();
64
65 $result = array_map(fn($item) => $item['ID'], $result);
66 Collection::normalizeArrayValuesByInt($result);
67
68 return $result;
69 }
70
71 private function prepareToDeleteQuery(Query $query, string $typeId, int $entityId): void
72 {
73 if (array_key_exists($typeId, Dictionary::COMMON_TO_COMMENT_ENTITY_TYPE))
74 {
75 $commonCondition = Query::filter()
76 ->where('TYPE_ID', $typeId)
77 ->where('ENTITY_ID', $entityId)
78 ;
79 $secondaryCondition = Query::filter()
80 ->where('TYPE_ID', Dictionary::COMMON_TO_COMMENT_ENTITY_TYPE[$typeId])
81 ->where('SECONDARY_ENTITY_ID', $entityId)
82 ;
83
84 $query
85 ->where(
86 Query::filter()
87 ->logic(ConditionTree::LOGIC_OR)
88 ->where($commonCondition)
89 ->where($secondaryCondition)
90 )
91 ;
92 }
93 else
94 {
95 $query
96 ->where('TYPE_ID', $typeId)
97 ->where('ENTITY_ID', $entityId)
98 ;
99 }
100 }
101
102 public function getIdsToDeleteBySpaceId(int $spaceId, string $typeId, int $entityId): array
103 {
104 $query = SpaceUserRecentActivityTable::query()
105 ->setSelect(['ID'])
106 ->where('SPACE_ID', $spaceId)
107 ;
108
109 $this->prepareToDeleteQuery($query, $typeId, $entityId);
110
111 $result = $query->fetchAll();
112
113 $result = array_map(fn($item) => $item['ID'], $result);
114 Collection::normalizeArrayValuesByInt($result);
115
116 return $result;
117 }
118
119 public function getNewestActivity(int $userId, int $spaceId): ?RecentActivityData
120 {
121 $queryResult = SpaceUserRecentActivityTable::query()
122 ->setSelect(['*'])
123 ->where('SPACE_ID', $spaceId)
124 ->where('USER_ID', $userId)
125 ->addOrder('DATETIME', 'DESC')
126 ->setLimit(1)
127 ->fetch()
128 ;
129
130 $recentActivityData =
131 (new RecentActivityData())
132 ->setSpaceId($spaceId)
134 ;
135
136 if (empty($queryResult))
137 {
138 return null;
139 }
140
141 $recentActivityData
142 ->setId($queryResult['ID'] ?? null)
143 ->setTypeId($queryResult['TYPE_ID'] ?? null)
144 ->setEntityId($queryResult['ENTITY_ID'] ?? null)
145 ->setDateTime($queryResult['DATETIME'] ?? null)
146 ->setSecondaryEntityId($queryResult['SECONDARY_ENTITY_ID'] ?? null)
147 ;
148
149 return $recentActivityData;
150 }
151}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
getIdsToDeleteBySpaceId(int $spaceId, string $typeId, int $entityId)
Определения RecentActivity.php:102
save(RecentActivityData $recentActivityData)
Определения RecentActivity.php:13
getIdsToDeleteByUserId(int $userId, string $typeId, int $entityId)
Определения RecentActivity.php:54
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)
Определения file_new.php:804
$result
Определения get_property_values.php:14
$query
Определения get_search.php:11
Определения chain.php:3
$entityId
Определения payment.php:4