<?php /** * Copyright (c) Facebook, Inc. and its affiliates. All Rights Reserved * * This source code is licensed under the license found in the * LICENSE file in the root directory of this source tree. * * @package FacebookCommerce */ namespace WooCommerce\Facebook\API\Pixel\Events; defined( 'ABSPATH' ) || exit; use WooCommerce\Facebook\API; use WooCommerce\Facebook\Events\Event; /** * Base S2S API request object. * * @since 2.0.0 */ class Request extends API\Request { /** @var Event[] events to send */ private $events; /** * Request constructor. * * @param string $pixel_id * @param Event[] $events events to send */ public function __construct( $pixel_id, array $events ) { $this->events = $events; parent::__construct( "/{$pixel_id}/events", 'POST' ); } /** * Gets the request data. * * @since 2.0.0 * * @return array */ public function get_data() { $data = array( 'data' => array(), 'partner_agent' => Event::get_platform_identifier(), ); foreach ( $this->events as $event ) { if ( ! $event instanceof Event ) { continue; } $event_data = $event->get_data(); if ( isset( $event_data['user_data']['click_id'] ) ) { $event_data['user_data']['fbc'] = $event_data['user_data']['click_id']; unset( $event_data['user_data']['click_id'] ); } if ( isset( $event_data['user_data']['browser_id'] ) ) { $event_data['user_data']['fbp'] = $event_data['user_data']['browser_id']; unset( $event_data['user_data']['browser_id'] ); } $data['data'][] = array_filter( $event_data ); } /** * Filters the Pixel event API request data. * * @since 2.0.0 * * @param array $data request data * @param Request $request request object */ return apply_filters( 'wc_facebook_api_pixel_event_request_data', $data, $this ); } }