• Модуль: pull
  • Путь к файлу: ~/bitrix/modules/pull/lib/event.php
  • Класс: BitrixPullEvent
  • Вызов: Event::addPush
static function addPush($users, $parameters)
{
	if (!CPullOptions::GetPushStatus())
	{
		self::$error = new Error(__METHOD__, 'PUSH_DISABLED', Loc::getMessage('PULL_EVENT_PUSH_DISABLED_ERROR'), [
			'recipient' => $users,
			'eventParameters' => $parameters,
		]);

		return false;
	}
	if (!is_array($users))
	{
		$users = [$users];
	}

	foreach ($users as $id => $entity)
	{
		$entity = intval($entity);
		if ($entity <= 0)
		{
			unset($users[$id]);
		}
	}

	if (empty($users))
	{
		self::$error = new Error(__METHOD__, 'RECIPIENT_FORMAT', Loc::getMessage('PULL_EVENT_RECIPIENT_FORMAT_ERROR'), [
			'recipient' => $users,
			'eventParameters' => $parameters,
		]);

		return false;
	}

	if (isset($parameters['skip_users']))
	{
		if (!isset($parameters['push']['skip_users']))
		{
			$parameters['push']['skip_users'] = [];
		}
		$parameters['push']['skip_users'] = array_merge($parameters['skip_users'], $parameters['push']['skip_users']);
	}

	if (!empty($parameters['push']['type']))
	{
		foreach ($users as $userId)
		{
			if (!BitrixPullPush::getConfigTypeStatus($parameters['module_id'], $parameters['push']['type'], $userId))
			{
				$parameters['push']['skip_users'][] = $userId;
			}
		}
	}

	$parameters = self::preparePushParameters($parameters);
	if (!$parameters)
	{
		return false;
	}

	$pushCode = self::getParamsCode($parameters['push']);
	if (self::$push[$pushCode])
	{
		self::$push[$pushCode]['users'] = array_unique(array_merge(self::$push[$pushCode]['users'], array_values($users)));
	}
	else
	{
		$hasPushCallback = $parameters['hasPushCallback'];
		unset($parameters['hasPushCallback']);

		self::$push[$pushCode]['push'] = $parameters['push'];
		self::$push[$pushCode]['extra'] = $parameters['extra'];
		self::$push[$pushCode]['hasPushCallback'] = $hasPushCallback;
		self::$push[$pushCode]['users'] = array_unique(array_values($users));
	}

	if (
		self::$backgroundContext
		|| defined('BX_CHECK_AGENT_START') && !defined('BX_WITH_ON_AFTER_EPILOG')
	)
	{
		self::send();
	}

	return true;
}