• Модуль: socialnetwork
  • Путь к файлу: ~/bitrix/modules/socialnetwork/lib/internals/eventservice/push/workgroupsender.php
  • Класс: BitrixSocialnetworkInternalsEventServicePushWorkgroupSender
  • Вызов: WorkgroupSender::sendForUserAddedAndRemoved
public function sendForUserAddedAndRemoved(Event $event, array $notVisibleGroupsUsers): void
{
	$eventData = $event->getData();
	$groupId = $event->getGroupId();

	$pushParams = [
		'module_id' => 'socialnetwork',
		'command' => $event->getType(),
		'params' => [ 'GROUP_ID' => $groupId ],
	];

	if (($eventData['ROLE'] ?? null) === UserToGroupTable::ROLE_REQUEST)
	{
		PushService::addEvent([ $eventData['USER_ID'] ], $pushParams);
	}
	else
	{
		$subscribedUsers = $this->getSubscribedUsers();

		if (!array_key_exists('USER_ID', $eventData))
		{
			$eventData['USER_ID'] = [];
		}

		if (!is_array($eventData['USER_ID']))
		{
			$eventData['USER_ID'] = [ $eventData['USER_ID'] ];
		}

		$recipients = (
			isset($notVisibleGroupsUsers[$groupId])
				? array_intersect($subscribedUsers, array_merge($eventData['USER_ID'], $notVisibleGroupsUsers[$groupId]))
				: $subscribedUsers
		);

		PushService::addEvent($recipients, $pushParams);
	}
}