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