10namespace Bitrix\Socialnetwork\Internals\EventService\Push;
12use Bitrix\Main\Loader;
13use Bitrix\Main\ModuleManager;
14use Bitrix\Socialnetwork\Integration\Pull\PushService;
15use Bitrix\Socialnetwork\Internals\EventService\Event;
16use Bitrix\Socialnetwork\UserToGroupTable;
17use Bitrix\Socialnetwork\Internals\EventService\Event\WorkgroupEvent;
21 private ?
array $subscribedUsers =
null;
41 $subscribedUsers = $this->getSubscribedUsers();
43 foreach ($pushList as $push)
46 $groupId = (int)$push[
'GROUP_ID'];
47 $userId = (int)($push[
'USER_ID'] ??
null);
49 if (empty($pushCommand))
55 'module_id' =>
'socialnetwork',
56 'command' => $pushCommand,
57 'params' => [
'GROUP_ID' => $groupId,
'USER_ID' =>
$userId ],
61 isset($notVisibleGroupsUsers[$groupId])
62 ? array_intersect($subscribedUsers, $notVisibleGroupsUsers[$groupId])
72 $eventData =
$event->getData();
73 $groupId =
$event->getGroupId();
77 'module_id' =>
'socialnetwork',
78 'command' =>
$event->getType(),
79 'params' => [
'GROUP_ID' => $groupId,
'USER_ID' =>
$userId, ],
84 PushService::addEvent([ $eventData[
'USER_ID'] ], $pushParams);
88 $subscribedUsers = $this->getSubscribedUsers();
90 if (!array_key_exists(
'USER_ID', $eventData))
92 $eventData[
'USER_ID'] = [];
95 if (!is_array($eventData[
'USER_ID']))
97 $eventData[
'USER_ID'] = [ $eventData[
'USER_ID'] ];
101 isset($notVisibleGroupsUsers[$groupId])
102 ? array_intersect($subscribedUsers, array_merge($eventData[
'USER_ID'], $notVisibleGroupsUsers[$groupId]))
106 PushService::addEvent($recipients, $pushParams);
110 private function getSubscribedUsers():
array
112 if ($this->subscribedUsers ===
null)
115 $query->addSelect(
'USER_ID');
117 $this->subscribedUsers = array_column(
$query->fetchAll(),
'USER_ID');
120 return $this->subscribedUsers;
if(!is_object($USER)||! $USER->IsAuthorized()) $userId
static includeModule($moduleName)
static isModuleInstalled($moduleName)
const PULL_WORKGROUPS_TAG
static getPushEventType(string $eventType)
static sendPersonalEvent(array $userIds, string $command='', array $eventData=[])
send(array $pushList, array $notVisibleGroupsUsers)
sendForUserAddedAndRemoved(Event $event, array $notVisibleGroupsUsers)
</td ></tr ></table ></td ></tr >< tr >< td class="bx-popup-label bx-width30"><?=GetMessage("PAGE_NEW_TAGS")?> array( $site)