• Модуль: rest
  • Путь к файлу: ~/bitrix/modules/rest/lib/eventoffline.php
  • Класс: BitrixRestEventOfflineTable
  • Вызов: EventOfflineTable::callEvent
static function callEvent($fields)
{
	if(!isset($fields['CONNECTOR_ID']))
	{
		$fields['CONNECTOR_ID'] = '';
	}

	$addFields = array(
		'TIMESTAMP_X' => new MainTypeDateTime(),
		'MESSAGE_ID' => static::getMessageId($fields),
		'APP_ID' => $fields['APP_ID'],
		'EVENT_NAME' => $fields['EVENT_NAME'],
		'EVENT_DATA' => serialize($fields['EVENT_DATA']),
		'EVENT_ADDITIONAL' => serialize($fields['EVENT_ADDITIONAL']),
		'CONNECTOR_ID' => $fields['CONNECTOR_ID'],
	);

	$updateFields = array(
		'TIMESTAMP_X' => new MainTypeDateTime(),
		'EVENT_DATA' => serialize($fields['EVENT_DATA']),
		'EVENT_ADDITIONAL' => serialize($fields['EVENT_ADDITIONAL']),
	);

	if(array_key_exists('ERROR', $fields))
	{
		$addFields['ERROR'] = intval($fields['ERROR']) > 0 ? 1 : 0;
		$updateFields['ERROR'] = intval($fields['ERROR']) > 0 ? 1 : 0;
	}

	$connection = MainApplication::getConnection();
	$queries = $connection->getSqlHelper()->prepareMerge(
		static::getTableName(),
		array('MESSAGE_ID', 'APP_ID', 'CONNECTOR_ID', 'PROCESS_ID'),
		$addFields,
		$updateFields
	);

	foreach($queries as $query)
	{
		$connection->queryExecute($query);
	}
}