- Модуль: pull
- Путь к файлу: ~/bitrix/modules/pull/lib/event.php
- Класс: BitrixPullEvent
- Вызов: Event::executePushEvent
static function executePushEvent($parameters)
{
if (!self::$backgroundContext && $parameters['hasPushCallback'])
{
return null;
}
$data = [];
if ($parameters['hasPushCallback'])
{
$callback = $parameters['push']['pushParamsCallback'];
MainLoader::includeModule($callback['module_id']);
if (method_exists($callback['class'], $callback['method']))
{
$data = call_user_func_array(
[
$callback['class'],
$callback['method'],
],
[
$callback['params'],
]
);
}
}
else
{
$data = $parameters['push'];
}
$data['message'] = str_replace("n", " ", trim($data['message']));
$data['params'] = $data['params'] ?? [];
$data['advanced_params'] = $data['advanced_params'] ?? [];
$data['advanced_params']['extra'] = $parameters['extra'] ?? [];
$data['badge'] = isset($data['badge']) ? (int)$data['badge'] : '';
$data['sound'] = $data['sound'] ?? '';
$data['tag'] = $data['tag'] ?? '';
$data['sub_tag'] = $data['sub_tag'] ?? '';
$data['app_id'] = $data['app_id'] ?? '';
$data['send_immediately'] = $data['send_immediately'] == 'Y' ? 'Y' : 'N';
$data['important'] = $data['important'] == 'Y' ? 'Y' : 'N';
$users = [];
foreach ($parameters['users'] as $userId)
{
$users[] = $userId;
}
if (empty($users))
{
return true;
}
$manager = new CPushManager();
$manager->AddQueue([
'USER_ID' => $users,
'SKIP_USERS' => is_array($data['skip_users']) ? $data['skip_users'] : [],
'MESSAGE' => $data['message'],
'EXPIRY' => $data['expiry'],
'PARAMS' => $data['params'],
'ADVANCED_PARAMS' => $data['advanced_params'],
'BADGE' => $data['badge'],
'SOUND' => $data['sound'],
'TAG' => $data['tag'],
'SUB_TAG' => $data['sub_tag'],
'APP_ID' => $data['app_id'],
'SEND_IMMEDIATELY' => $data['send_immediately'],
'IMPORTANT' => $data['important'],
]);
return true;
}