• Модуль: tasks
  • Путь к файлу: ~/bitrix/modules/tasks/lib/internals/counter/push/groupsender.php
  • Класс: BitrixTasksInternalsCounterPushGroupSender
  • Вызов: GroupSender::sendPersonalPush
private function sendPersonalPush(array $pushList): void
{
	if (!Loader::includeModule('socialnetwork'))
	{
		return;
	}

	$groupIds = [];

	$owners = [];

	foreach ($pushList as $push)
	{
		if (!in_array($push['EVENT'], [
			EventDictionary::EVENT_PROJECT_DELETE,
			EventDictionary::EVENT_PROJECT_PERM_UPDATE,
			EventDictionary::EVENT_AFTER_TASK_ADD,
			EventDictionary::EVENT_AFTER_TASK_RESTORE,
			EventDictionary::EVENT_AFTER_TASK_UPDATE,
			EventDictionary::EVENT_TASK_EXPIRED,
			EventDictionary::EVENT_AFTER_TASK_MUTE
		]))
		{
			continue;
		}

		if (
			$push['EVENT'] === EventDictionary::EVENT_AFTER_PROJECT_READ_ALL
			|| $push['EVENT'] === EventDictionary::EVENT_AFTER_SCRUM_READ_ALL
		)
		{
			$owners[] = $push['USER_ID'];
		}

		if (!$push['GROUP_ID'])
		{
			continue;
		}

		$groupIds[] = $push['GROUP_ID'];
	}

	$groupIds = array_unique($groupIds);
	if (empty($groupIds))
	{
		return;
	}

	$owners = array_unique(array_merge($owners, $this->getProjectsOwners($groupIds)));
	foreach ($owners as $userId)
	{
		CounterState::reload($userId);
	}
	(new PushSender())->sendUserCounters($owners);
}