• Модуль: pull
  • Путь к файлу: ~/bitrix/modules/pull/lib/event.php
  • Класс: BitrixPullEvent
  • Вызов: Event::addEvent
static function addEvent($recipient, $parameters, $channelType = CPullChannel::TYPE_PRIVATE)
{
	if (!is_array($recipient))
	{
		$recipient = [$recipient];
	}

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

		return false;
	}

	$parameters = self::prepareParameters($parameters);
	if (!$parameters)
	{
		return false;
	}
	$parameters['channel_type'] = $channelType;

	if (empty($entities['users']) && empty($entities['channels']))
	{
		return true;
	}

	if (isset($parameters['push']))
	{
		$pushParameters = $parameters['push'];
		unset($parameters['push']);
	}
	else
	{
		$pushParameters = null;
	}

	if (isset($parameters['pushParamsCallback']))
	{
		$pushParametersCallback = $parameters['pushParamsCallback'];
		unset($parameters['pushParamsCallback']);
	}
	else
	{
		$pushParametersCallback = null;
	}

	if (isset($parameters['hasCallback']) && $parameters['hasCallback'])
	{
		self::addMessage(self::$deferredMessages, $entities['channels'], $entities['users'], $parameters);
	}
	else
	{
		self::addMessage(self::$messages, $entities['channels'], $entities['users'], $parameters);
	}

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

	if ($pushParameters || $pushParametersCallback)
	{
		if ($pushParameters)
		{
			$parameters['push'] = $pushParameters;
		}
		if ($pushParametersCallback)
		{
			$parameters['pushParamsCallback'] = $pushParametersCallback;
		}
		unset($parameters['channel_type']);
		self::addPush($entities['users'], $parameters);
	}

	return true;
}