1C-Bitrix 25.700.0
Загрузка...
Поиск...
Не найдено
MembershipProcessor.php
См. документацию.
1<?php
2
3namespace Bitrix\Socialnetwork\Space\List\RecentActivity\Event\Processor;
4
5use Bitrix\Socialnetwork\Internals\EventService\EventDictionary;
6use Bitrix\Socialnetwork\Space\List\RecentActivity\Dictionary;
7use Bitrix\Socialnetwork\UserToGroupTable;
8
10{
11
12 public function isAvailable(): bool
13 {
14 return true;
15 }
16
17 protected function getTypeId(): string
18 {
19 return Dictionary::ENTITY_TYPE['membership'];
20 }
21
22 public function process(): void
23 {
24 $eventType = $this->event->getType();
25 switch ($eventType)
26 {
27 case EventDictionary::EVENT_WORKGROUP_USER_ADD:
28 $this->onUserAdd();
29 break;
30 case EventDictionary::EVENT_WORKGROUP_USER_UPDATE:
31 $this->onUserUpdate();
32 break;
33 case EventDictionary::EVENT_WORKGROUP_USER_DELETE:
34 $this->onUserDelete();
35 break;
36 default:
37 break;
38 }
39 }
40
41 private function onUserAdd(): void
42 {
43 $eventData = $this->event->getData();
44 $groupId = $eventData['GROUP_ID'] ?? null;
45 $userId = $eventData['USER_ID'] ?? null;
46 $role = $eventData['ROLE'] ?? null;
47 $initiatedByType = $eventData['INITIATED_BY_TYPE'] ?? null;
48
49 if ($role === UserToGroupTable::ROLE_REQUEST && $initiatedByType === UserToGroupTable::INITIATED_BY_USER)
50 {
51 $this->saveRecentActivityData($groupId, $userId);
52 }
53 }
54
55 private function onUserUpdate(): void
56 {
57 $eventData = $this->event->getData();
58 $groupId = $eventData['GROUP_ID'] ?? null;
59 $userId = $eventData['USER_ID'] ?? null;
60 $oldRole = $eventData['OLD_ROLE'] ?? null;
61 $oldInitiatedByType = $eventData['OLD_INITIATED_BY_TYPE'] ?? null;
62 $newRole = $eventData['NEW_ROLE'] ?? null;
63
64 $wasRequest = $oldRole === UserToGroupTable::ROLE_REQUEST;
65 $wasUserRequest = $oldInitiatedByType === UserToGroupTable::INITIATED_BY_USER;
66 $isMember = in_array($newRole, UserToGroupTable::getRolesMember(), true);
67 if ($wasRequest && $wasUserRequest && $isMember)
68 {
69 $this->setStubActivity($groupId, $userId);
70 }
71 }
72
73 private function onUserDelete(): void
74 {
75 $eventData = $this->event->getData();
76 $groupId = $eventData['GROUP_ID'] ?? null;
77 $userId = $eventData['USER_ID'] ?? null;
78 $initiatedByType = $eventData['INITIATED_BY_TYPE'] ?? null;
79 $role = $eventData['ROLE'] ?? null;
80
81 $wasRequest = $role === UserToGroupTable::ROLE_REQUEST;
82 $wasUserRequest = $initiatedByType === UserToGroupTable::INITIATED_BY_USER;
83 if ($wasRequest && $wasUserRequest)
84 {
85 $this->setStubActivity($groupId, $userId);
86 }
87 }
88
89 private function setStubActivity(int $spaceId, int $entityId): void
90 {
91 $recentActivityData = $this->activityService->get($this->recipient->getId(), $spaceId);
92
93 if (
94 $recentActivityData->getTypeId() !== $this->getTypeId()
95 || $recentActivityData->getEntityId() !== $entityId
96 )
97 {
98 return;
99 }
100
101 $recentActivityData->setTypeId('stub');
102 $recentActivityData->setEntityId(0);
103
104 $this->activityService->save($recentActivityData);
105 $this->sendUpdatePush($recentActivityData);
106 }
107}
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
Определения check_mail.php:18
saveRecentActivityData(int $spaceId, int $entityId, ?int $secondaryEntityId=null)
Определения AbstractProcessor.php:31
$entityId
Определения payment.php:4