api = $api; $this->event_factory = $event_factory; $this->pixel_id = $pixel_id; $this->log_events = $log_events; } /** * Send all events enqueued in one request * * @param Pixel_Event[] $events List of events must be sent. * * @return void */ public function send_events( $events ) { /** * Facebook SDK instances of the events to sent * * @var Event[] $events */ $events = array_map( array( $this->event_factory, 'create_event' ), $events ); $request = ( new EventRequest( $this->pixel_id ) ) ->setEvents( $events ); // @phpstan-ignore-line if ( $this->log_events ) { foreach ( $events as $event ) { $logger = new \AEPC_Admin_Logger(); $logger->log( sprintf( 'Server Side Event success: %s', $event->getEventName() ), array( 'exception' => 'ServerSideEventSent', 'event' => $event->normalize(), ) ); } } try { $response = $request->execute(); } catch ( FacebookException $e ) { $logger = new \AEPC_Admin_Logger(); $logger->log( sprintf( 'Server Side Event error: %s', $e->getMessage() ), array( 'code' => $e->getCode(), 'exception' => get_class( $e ), 'events' => array_map( function( Event $event ) { return wp_json_encode( $event->normalize() ); }, $events ), ) ); } } }