Server IP : 63.250.38.98 / Your IP : 216.73.216.235 Web Server : LiteSpeed System : Linux premium291.web-hosting.com 4.18.0-553.45.1.lve.el8.x86_64 #1 SMP Wed Mar 26 12:08:09 UTC 2025 x86_64 User : samejjip ( 1289) PHP Version : 8.1.32 Disable Function : NONE MySQL : OFF | cURL : ON | WGET : ON | Perl : ON | Python : ON | Sudo : OFF | Pkexec : OFF Directory : /home/samejjip/www/wp-content/plugins/official-facebook-pixel/core/ |
Upload File : |
<?php /** * Facebook Pixel Plugin PixelRenderer class. * * This file contains the main logic for PixelRenderer. * * @package FacebookPixelPlugin */ /** * Define PixelRenderer class. * * @return void */ /* * Copyright (C) 2017-present, Meta, Inc. * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; version 2 of the License. * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. */ namespace FacebookPixelPlugin\Core; use ReflectionClass; use FacebookAds\Object\ServerSide\CustomData; defined( 'ABSPATH' ) || die( 'Direct access not allowed' ); /** * Class PixelRenderer */ class PixelRenderer { const EVENT_ID = 'eventID'; const TRACK = 'track'; const TRACK_CUSTOM = 'trackCustom'; const FB_INTEGRATION_TRACKING = 'fb_integration_tracking'; const SCRIPT_TAG = "<script type='text/javascript'>%s</script>"; const FBQ_EVENT_CODE = "fbq('%s', '%s', %s, %s);"; const FBQ_AGENT_CODE = "fbq('set', 'agent', '%s', '%s');"; /** * Render the pixel events * * @param array $events The array of events, each event is an * array with the following keys: * - event_name: the name of the event * - event_id: the id of the event (optional) * - custom_data: the custom data * for the event (optional). * @param bool $fb_integration_tracking Whether to track the * event as a Facebook integration. * @param bool $script_tag Whether to wrap the * generated code with a script tag. * * @return string The rendered pixel events */ public static function render( $events, $fb_integration_tracking, $script_tag = true ) { if ( empty( $events ) ) { return ''; } $code = sprintf( self::FBQ_AGENT_CODE, FacebookWordpressOptions::get_agent_string(), FacebookWordpressOptions::get_pixel_id() ); foreach ( $events as $event ) { $code .= self::get_pixel_track_code( $event, $fb_integration_tracking ); } return $script_tag ? sprintf( self::SCRIPT_TAG, $code ) : $code; } /** * Generate the Facebook Pixel track code for an event * * @param \FacebookPixelPlugin\Core\Event $event The event to * generate the track code for. * @param bool $fb_integration_tracking Whether * to track the event as a Facebook integration. * * @return string The generated track code */ private static function get_pixel_track_code( $event, $fb_integration_tracking ) { $event_data[ self::EVENT_ID ] = $event->getEventId(); $custom_data = $event->getCustomData() !== null ? $event->getCustomData() : new CustomData(); $normalized_custom_data = $custom_data->normalize(); if ( ! is_null( $fb_integration_tracking ) ) { $normalized_custom_data[ self::FB_INTEGRATION_TRACKING ] = $fb_integration_tracking; } $class = new ReflectionClass( 'FacebookPixelPlugin\Core\FacebookPixel' ); return sprintf( self::FBQ_EVENT_CODE, $class->getConstant( strtoupper( $event->getEventName() ) ) !== false ? self::TRACK : self::TRACK_CUSTOM, $event->getEventName(), wp_json_encode( $normalized_custom_data, JSON_PRETTY_PRINT ), wp_json_encode( $event_data, JSON_PRETTY_PRINT ) ); } }