Edit file File name : GA.php Content :<?php /** * Google Analytics helpers * * @package PopupMaker * @copyright Copyright (c) 2024, Code Atlantic LLC */ if ( ! defined( 'ABSPATH' ) ) { exit; } /** * Class PUM_GA * * @package Ahoy */ class PUM_GA { /** * Get PUM_GA uuid. * * @return mixed|string */ public static function get_uuid() { static $uuid; if ( ! isset( $uuid ) ) { $cookie = self::parse_cookie(); if ( is_array( $cookie ) && ! empty( $cookie['cid'] ) ) { $uuid = $cookie['cid']; } else { $uuid = self::generate_uuid(); } } return $uuid; } /** * Handle the parsing of the _ga cookie or setting it to a unique identifier */ public static function parse_cookie() { static $cookie = false; if ( ! $cookie && isset( $_COOKIE['_ga'] ) ) { list( $version, $domain_depth, $cid1, $cid2 ) = preg_split( '[\.]', sanitize_text_field( wp_unslash( $_COOKIE['_ga'] ) ), 4 ); $cookie = [ 'version' => $version, 'domainDepth' => $domain_depth, 'cid' => $cid1 . '.' . $cid2, ]; } return $cookie; } /** * Generate UUID v4 function - needed to generate a CID when one isn't available */ public static function generate_uuid() { return sprintf( '%04x%04x-%04x-%04x-%04x-%04x%04x%04x', // 32 bits for "time_low" wp_rand( 0, 0xffff ), wp_rand( 0, 0xffff ), // 16 bits for "time_mid" wp_rand( 0, 0xffff ), // 16 bits for "time_hi_and_version", // four most significant bits holds version number 4 wp_rand( 0, 0x0fff ) | 0x4000, // 16 bits, 8 bits for "clk_seq_hi_res", // 8 bits for "clk_seq_low", // two most significant bits holds zero and one for variant DCE1.1 wp_rand( 0, 0x3fff ) | 0x8000, // 48 bits for "node" wp_rand( 0, 0xffff ), wp_rand( 0, 0xffff ), wp_rand( 0, 0xffff ) ); } /** * Fire a hit to the google analytis collection api. * * See https://developers.google.com/analytics/devguides/collection/protocol/v1/devguide * * @param null $data * * @return array|bool|WP_Error */ public static function fire_hit( $data = null ) { if ( $data ) { $get_string = 'https://ssl.google-analytics.com/collect'; $get_string .= '?payload_data&'; $get_string .= http_build_query( $data ); $result = wp_remote_get( $get_string ); return $result; } return false; } } Save