View source
<?php
namespace Drupal\official_facebook_pixel;
class PixelScriptBuilder {
const ADDPAYMENTINFO = 'AddPaymentInfo';
const ADDTOCART = 'AddToCart';
const ADDTOWISHLIST = 'AddToWishlist';
const COMPLETEREGISTRATION = 'CompleteRegistration';
const CONTACT = 'Contact';
const CUSTOMIZEPRODUCT = 'CustomizeProduct';
const DONATE = 'Donate';
const FINDLOCATION = 'FindLocation';
const INITIATECHECKOUT = 'InitiateCheckout';
const LEAD = 'Lead';
const PAGEVIEW = 'PageView';
const PURCHASE = 'Purchase';
const SCHEDULE = 'Schedule';
const SEARCH = 'Search';
const STARTTRIAL = 'StartTrial';
const SUBMITAPPLICATION = 'SubmitApplication';
const SUBSCRIBE = 'Subscribe';
const VIEWCONTENT = 'ViewContent';
const FB_INTEGRATION_TRACKING_KEY = 'fb_integration_tracking';
private static $pixelId = '';
private static $pixelBaseCode = "\n<!-- Facebook Pixel Code -->\n<script type='text/javascript'>\n!function(f,b,e,v,n,t,s){if(f.fbq)return;n=f.fbq=function(){n.callMethod?\nn.callMethod.apply(n,arguments):n.queue.push(arguments)};if(!f._fbq)f._fbq=n;\nn.push=n;n.loaded=!0;n.version='2.0';n.queue=[];t=b.createElement(e);t.async=!0;\nt.src=v;s=b.getElementsByTagName(e)[0];s.parentNode.insertBefore(t,s)}(window,\ndocument,'script','https://connect.facebook.net/en_US/fbevents.js');\n</script>\n<!-- End Facebook Pixel Code -->\n";
private static $pixelFbqCodeWithoutScript = "\n fbq('%s', '%s'%s%s);\n";
private static $pixelNoscriptCode = "\n<!-- Facebook Pixel Code -->\n<noscript>\n<img height=\"1\" width=\"1\" style=\"display:none\" alt=\"fbpx\"\nsrc=\"https://www.facebook.com/tr?id=%s&ev=%s%s&noscript=1\" />\n</noscript>\n<!-- End Facebook Pixel Code -->\n";
public static function initialize($pixel_id = '') {
self::$pixelId = $pixel_id;
}
public static function getPixelId() {
return self::$pixelId;
}
public static function setPixelId($pixel_id) {
self::$pixelId = $pixel_id;
}
public static function getPixelBaseCode() {
return self::$pixelBaseCode;
}
public static function getPixelInitCode($agent_string, $param = array(), $with_script_tag = true) {
if (empty(self::$pixelId)) {
return;
}
$code = $with_script_tag ? "<script type='text/javascript'>" . self::$pixelFbqCodeWithoutScript . "</script>" : self::$pixelFbqCodeWithoutScript;
$param_str = $param;
if (is_array($param)) {
$param_str = json_encode($param, JSON_PRETTY_PRINT);
}
$agent_param = array(
'agent' => $agent_string,
);
return sprintf($code, 'init', self::$pixelId, ', ' . $param_str, ', ' . json_encode($agent_param, JSON_PRETTY_PRINT));
}
public static function getPixelTrackCode($event, $param = array(), $tracking_name = '', $with_script_tag = true) {
if (empty(self::$pixelId)) {
return;
}
$code = $with_script_tag ? "<script type='text/javascript'>" . self::$pixelFbqCodeWithoutScript . "</script>" : self::$pixelFbqCodeWithoutScript;
$param_str = $param;
if (is_array($param)) {
if (!empty($tracking_name)) {
$param[self::FB_INTEGRATION_TRACKING_KEY] = $tracking_name;
}
$param_str = json_encode($param, JSON_PRETTY_PRINT);
}
$class = new \ReflectionClass(__CLASS__);
return sprintf($code, $class
->getConstant(strtoupper($event)) !== false ? 'track' : 'trackCustom', $event, ', ' . $param_str, '');
}
public static function getPixelNoscriptCode($event = 'PageView', $cd = array(), $tracking_name = '') {
if (empty(self::$pixelId)) {
return;
}
$data = '';
foreach ($cd as $k => $v) {
$data .= '&cd[' . $k . ']=' . $v;
}
if (!empty($tracking_name)) {
$data .= '&cd[' . self::FB_INTEGRATION_TRACKING_KEY . ']=' . $tracking_name;
}
return sprintf(self::$pixelNoscriptCode, self::$pixelId, $event, $data);
}
public static function getPixelAddToCartCode($param = array(), $tracking_name = '', $with_script_tag = true) {
return self::getPixelTrackCode(self::ADDTOCART, $param, $tracking_name, $with_script_tag);
}
public static function getPixelInitiateCheckoutCode($param = array(), $tracking_name = '', $with_script_tag = true) {
return self::getPixelTrackCode(self::INITIATECHECKOUT, $param, $tracking_name, $with_script_tag);
}
public static function getPixelLeadCode($param = array(), $tracking_name = '', $with_script_tag = true) {
return self::getPixelTrackCode(self::LEAD, $param, $tracking_name, $with_script_tag);
}
public static function getPixelPageViewCode($param = array(), $tracking_name = '', $with_script_tag = true) {
return self::getPixelTrackCode(self::PAGEVIEW, $param, $tracking_name, $with_script_tag);
}
public static function getPixelPurchaseCode($param = array(), $tracking_name = '', $with_script_tag = true) {
return self::getPixelTrackCode(self::PURCHASE, $param, $tracking_name, $with_script_tag);
}
public static function getPixelViewContentCode($param = array(), $tracking_name = '', $with_script_tag = true) {
return self::getPixelTrackCode(self::VIEWCONTENT, $param, $tracking_name, $with_script_tag);
}
}