Helper/ServerSideHelper.php (47 lines of code) (raw):
<?php
/**
* Copyright (c) Meta Platforms, Inc. and affiliates. All Rights Reserved
*/
namespace Facebook\BusinessExtension\Helper;
use FacebookAds\Api;
use FacebookAds\Object\ServerSide\Event;
use FacebookAds\Object\ServerSide\EventRequestAsync;
use FacebookAds\Exception\Exception;
use GuzzleHttp\Exception\RequestException;
/**
* Helper to fire ServerSide Event.
*/
class ServerSideHelper
{
/**
* @var FBEHelper
*/
protected $fbeHelper;
/**
* @var AAMFieldsExtractorHelper
*/
protected $aamFieldsExtractorHelper;
/**
* @var array
*/
protected $trackedEvents = [];
/**
* Constructor
*
* @param FBEHelper $fbeHelper
* @param AAMFieldsExtractorHelper $aamFieldsExtractorHelper
*/
public function __construct(
FBEHelper $fbeHelper,
AAMFieldsExtractorHelper $aamFieldsExtractorHelper
) {
$this->fbeHelper = $fbeHelper;
$this->aamFieldsExtractorHelper = $aamFieldsExtractorHelper;
}
/**
* @param $event
* @param null $userDataArray
*/
public function sendEvent($event, $userDataArray = null)
{
try {
$api = Api::init(null, null, $this->fbeHelper->getAccessToken());
$event = $this->aamFieldsExtractorHelper->setUserData($event, $userDataArray);
$this->trackedEvents[] = $event;
$events = [];
array_push($events, $event);
$request = (new EventRequestAsync($this->fbeHelper->getPixelID()))
->setEvents($events)
->setPartnerAgent($this->fbeHelper->getPartnerAgent(true));
$this->fbeHelper->log('Sending event ' . $event->getEventId());
$request->execute()
->then(
null,
function (RequestException $e) {
$this->fbeHelper->log("RequestException: " . $e->getMessage());
}
);
} catch (\Exception $e) {
$this->fbeHelper->log(json_encode($e));
}
}
/**
* @return array
*/
public function getTrackedEvents()
{
return $this->trackedEvents;
}
}