• Модуль: 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);
	}

}