- Модуль: 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;
}