Files
2026-04-28 15:13:50 +02:00

56 lines
2.1 KiB
PHP

<?php
namespace PixelYourSite;
defined('ABSPATH') or die('Direct access not allowed');
class FacebookAsyncTask extends \WP_Async_Task {
protected $action = 'pys_send_server_event';
protected function prepare_data($data) {
try {
if (!empty($data)) {
if (empty($this->_body_data)) {
return array('data' => base64_encode(serialize($data)));
} else {
$oldData = unserialize(base64_decode($this->_body_data['data']), ['allowed_classes' => [
'PYS_PRO_GLOBAL\FacebookAds\Object\ServerSide\Event',
'PYS_PRO_GLOBAL\FacebookAds\Object\ServerSide\UserData',
'PYS_PRO_GLOBAL\FacebookAds\Object\ServerSide\CustomData',
'PYS_PRO_GLOBAL\FacebookAds\Object\ServerSide\Content'
]]);
// Check if $oldData[0] and $data[0] are arrays before merging
if (is_array($oldData[0]) && is_array($data[0])) {
$data = [ array_merge( $oldData[ 0 ], $data[ 0 ] ) ];
}
return array( 'data' => base64_encode( serialize( $data ) ) );
}
}
} catch (\Exception $ex) {
error_log($ex);
}
return array();
}
protected function run_action() {
try {
$data = unserialize(base64_decode($_POST['data']), ['allowed_classes' => [
'PYS_PRO_GLOBAL\FacebookAds\Object\ServerSide\Event',
'PYS_PRO_GLOBAL\FacebookAds\Object\ServerSide\UserData',
'PYS_PRO_GLOBAL\FacebookAds\Object\ServerSide\CustomData',
'PYS_PRO_GLOBAL\FacebookAds\Object\ServerSide\Content'
]]);
$events = is_array($data[0]) ? $data[0] : $data ;
if (empty($events)) {
return;
}
foreach ($events as $event) {
FacebookServer()->sendEvent($event["pixelIds"],$event["event"]);
}
}
catch (\Exception $ex) {
error_log($ex);
}
}
}