- Модуль: socialnetwork
- Путь к файлу: ~/bitrix/modules/socialnetwork/lib/internals/counter/event/workgroupeventprocessor.php
- Класс: BitrixSocialnetworkInternalsCounterEventWorkgroupEventProcessor
- Вызов: WorkgroupEventProcessor::process
public function process(): void
{
$events = (EventCollection::getInstance())->list();
$requestInPushList = [];
$requestOutPushList = [];
foreach ($events as $event)
{
/* @var $event Event */
$eventType = $event->getType();
$groupId = $event->getGroupId();
$requestWorkgroupEventsList = [
EventDictionary::EVENT_WORKGROUP_USER_ADD,
EventDictionary::EVENT_WORKGROUP_USER_UPDATE,
EventDictionary::EVENT_WORKGROUP_USER_DELETE,
];
if (in_array($eventType, $requestWorkgroupEventsList, true))
{
$usedRolesList = $event->getUsedRoles();
if (!in_array(UserToGroupTable::ROLE_REQUEST, $usedRolesList, true))
{
continue;
}
$initiatedByType = $event->getInitiatedByType();
switch ($initiatedByType)
{
case UserToGroupTable::INITIATED_BY_USER:
$requestInPushList[] = [
'EVENT' => $eventType,
'GROUP_ID' => $groupId,
];
break;
case UserToGroupTable::INITIATED_BY_GROUP:
$requestOutPushList[] = [
'EVENT' => $eventType,
'GROUP_ID' => $groupId,
];
break;
}
}
}
if (!empty($requestInPushList))
{
(new WorkgroupRequestsInSender())->send($requestInPushList);
}
if (!empty($requestOutPushList))
{
(new WorkgroupRequestsOutSender())->send($requestOutPushList);
}
}