- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/internals/eventservice/event/workgroupuserevent.php
- Класс: BitrixSocialnetworkInternalsEventServiceEventWorkgroupUserEvent
- Вызов: WorkgroupUserEvent::process
public function process(): void
{
$this->collectNewData();
$events = (EventCollection::getInstance())->list();
$workgroupsPushList = [];
$workgroupUserEventsList = [
EventDictionary::EVENT_WORKGROUP_USER_ADD,
EventDictionary::EVENT_WORKGROUP_USER_UPDATE,
EventDictionary::EVENT_WORKGROUP_USER_DELETE,
];
$added = [];
$changed = [];
$deleted = [];
foreach ($events as $event)
{
/* @var $event Event */
$eventType = $event->getType();
$relationKey = $event->getRelationKey();
if (in_array($eventType, $workgroupUserEventsList, true))
{
if ($eventType === EventDictionary::EVENT_WORKGROUP_USER_ADD)
{
$added[] = $relationKey;
}
elseif ($eventType === EventDictionary::EVENT_WORKGROUP_USER_UPDATE)
{
$changed[] = $relationKey;
}
elseif ($eventType === EventDictionary::EVENT_WORKGROUP_USER_DELETE)
{
$deleted[] = $relationKey;
}
}
}
$added = array_diff($added, $deleted);
$changed = array_diff($changed, $added, $deleted);
$changed = $this->clearNotRealChanges($changed);
$newFields = $this->getNewFields();
foreach ($events as $event)
{
/* @var $event Event */
$eventType = $event->getType();
$groupId = $event->getGroupId();
$userId = $event->getGroupId();
$relationKey = $event->getRelationKey();
$role = ($newFields[$relationKey] ?? null);
if (
!$role
|| (
$eventType === EventDictionary::EVENT_WORKGROUP_USER_ADD
&& !in_array($relationKey, $added, true)
)
|| (
$eventType === EventDictionary::EVENT_WORKGROUP_USER_UPDATE
&& !in_array($relationKey, $changed, true)
)
)
{
continue;
}
$workgroupUserPushList[] = [
'EVENT' => $eventType,
'GROUP_ID' => $groupId,
'USER_ID' => $userId,
'ROLE' => $role,
];
}
if (!empty($workgroupUserPushList))
{
$notVisibleGroupsUsers = $this->getNotVisibleGroupsUsers([
$added,
$changed,
$deleted,
]);
(new WorkgroupUserSender())->send($workgroupsPushList, $notVisibleGroupsUsers);
}
}