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