File "wp-google-analytics.php"
Full Path: /home/warrior1/public_html/plugins/jetpack/modules/google-analytics/wp-google-analytics.php
File size: 4.32 KB
MIME-type: text/x-php
Charset: utf-8
<?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
/*
Copyright 2006 Aaron D. Campbell (email : wp_plugins@xavisys.com)
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; either version 2 of the License, or
(at your option) any later version.
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.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
if ( ! defined( 'ABSPATH' ) ) {
exit;
}
require_once plugin_basename( 'classes/wp-google-analytics-utils.php' );
require_once plugin_basename( 'classes/wp-google-analytics-options.php' );
require_once plugin_basename( 'classes/wp-google-analytics-legacy.php' );
require_once plugin_basename( 'classes/wp-google-analytics-universal.php' );
require_once plugin_basename( 'classes/class-jetpack-google-amp-analytics.php' );
/**
* Jetpack_Google_Analytics is the class that handles ALL of the plugin functionality.
* It helps us avoid name collisions
* https://codex.wordpress.org/Writing_a_Plugin#Avoiding_Function_Name_Collisions
*/
class Jetpack_Google_Analytics {
/**
* Jetpack_Google_Analytics singleton instance.
*
* @var Jetpack_Google_Analytics
*/
public static $instance = false;
/**
* Property to hold concrete analytics implementation that does the work (universal or legacy).
*
* @var Static
*/
public static $analytics = false;
/**
* This is our constructor, which is private to force the use of get_instance()
*
* @return void
*/
private function __construct() {
// At this time, we only leverage universal analytics when enhanced ecommerce is selected and WooCommerce is active.
// Otherwise, don't bother emitting the tracking ID or fetching analytics.js
if ( class_exists( 'WooCommerce' ) && Jetpack_Google_Analytics_Options::enhanced_ecommerce_tracking_is_enabled() ) {
self::$analytics = new Jetpack_Google_Analytics_Universal();
new Jetpack_Google_AMP_Analytics();
} else {
self::$analytics = new Jetpack_Google_Analytics_Legacy();
}
}
/**
* Function to instantiate our class and make it a singleton
*/
public static function get_instance() {
if ( ! self::$instance ) {
self::$instance = new self();
}
return self::$instance;
}
/**
* Add amp-analytics tags.
*
* @param array $analytics_entries An associative array of the analytics entries.
*
* @return array
*/
public static function amp_analytics_entries( $analytics_entries ) {
if ( ! is_array( $analytics_entries ) ) {
$analytics_entries = array();
}
$amp_tracking_codes = static::get_amp_tracking_codes( $analytics_entries );
$jetpack_account = Jetpack_Google_Analytics_Options::get_tracking_code();
// Bypass tracking codes already set on AMP plugin.
if ( in_array( $jetpack_account, $amp_tracking_codes, true ) ) {
return $analytics_entries;
}
$config_data = wp_json_encode(
array(
'vars' => array(
'account' => Jetpack_Google_Analytics_Options::get_tracking_code(),
),
'triggers' => array(
'trackPageview' => array(
'on' => 'visible',
'request' => 'pageview',
),
),
)
);
// Generate a hash string to uniquely identify this entry.
$entry_id = substr( md5( 'googleanalytics' . $config_data ), 0, 12 );
$analytics_entries[ $entry_id ] = array(
'type' => 'googleanalytics',
'config' => $config_data,
);
return $analytics_entries;
}
/**
* Get AMP tracking codes.
*
* @param array $analytics_entries The codes available for AMP.
*
* @return array
*/
protected static function get_amp_tracking_codes( $analytics_entries ) {
$entries = array_column( $analytics_entries, 'config' );
$accounts = array();
foreach ( $entries as $entry ) {
$entry = json_decode( $entry );
if ( ! empty( $entry->vars->account ) ) {
$accounts[] = $entry->vars->account;
}
}
return $accounts;
}
}
global $jetpack_google_analytics;
$jetpack_google_analytics = Jetpack_Google_Analytics::get_instance();