PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 10.5
Jetpack – WP Security, Backup, Speed, & Growth v10.5
16.2-beta 12.0.3 12.1.3 12.2.3 12.3.2 12.4.2 12.5.2 12.6.4 12.7.3 12.8.3 12.9.5 13.0.2 13.1.5 13.2.4 13.3.3 13.4.5 13.5.2 13.6.2 13.7.2 13.8.3 13.9.2 14.0.1 14.1.1 14.2.2 14.3.1 All 501 releases
jetpack / modules / google-analytics / wp-google-analytics.php

wp-google-analytics.php in Jetpack – WP Security, Backup, Speed, & Growth 10.5, at modules/google-analytics/wp-google-analytics.php

145 lines 4.3 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /*
3 Copyright 2006 Aaron D. Campbell (email : wp_plugins@xavisys.com)
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19
20 /**
21 * Jetpack_Google_Analytics is the class that handles ALL of the plugin functionality.
22 * It helps us avoid name collisions
23 * https://codex.wordpress.org/Writing_a_Plugin#Avoiding_Function_Name_Collisions
24 */
25
26 if ( ! defined( 'ABSPATH' ) ) {
27 exit;
28 }
29
30 require_once( plugin_basename( 'classes/wp-google-analytics-utils.php' ) );
31 require_once( plugin_basename( 'classes/wp-google-analytics-options.php' ) );
32 require_once( plugin_basename( 'classes/wp-google-analytics-legacy.php' ) );
33 require_once( plugin_basename( 'classes/wp-google-analytics-universal.php' ) );
34 require_once plugin_basename( 'classes/class-jetpack-google-amp-analytics.php' );
35
36 class Jetpack_Google_Analytics {
37
38 /**
39 * @var Jetpack_Google_Analytics - Static property to hold our singleton instance
40 */
41 static $instance = false;
42
43 /**
44 * @var Static property to hold concrete analytics impl that does the work (universal or legacy)
45 */
46 static $analytics = false;
47
48 /**
49 * This is our constructor, which is private to force the use of get_instance()
50 *
51 * @return void
52 */
53 private function __construct() {
54 // At this time, we only leverage universal analytics when enhanced ecommerce is selected and WooCommerce is active.
55 // Otherwise, don't bother emitting the tracking ID or fetching analytics.js
56 if ( class_exists( 'WooCommerce' ) && Jetpack_Google_Analytics_Options::enhanced_ecommerce_tracking_is_enabled() ) {
57 self::$analytics = new Jetpack_Google_Analytics_Universal();
58 new Jetpack_Google_AMP_Analytics();
59 } else {
60 self::$analytics = new Jetpack_Google_Analytics_Legacy();
61 }
62 }
63
64 /**
65 * Function to instantiate our class and make it a singleton
66 */
67 public static function get_instance() {
68 if ( ! self::$instance ) {
69 self::$instance = new self;
70 }
71
72 return self::$instance;
73 }
74
75 /**
76 * Add amp-analytics tags.
77 *
78 * @param array $analytics_entries An associative array of the analytics entries.
79 *
80 * @return array
81 */
82 public static function amp_analytics_entries( $analytics_entries ) {
83 if ( ! is_array( $analytics_entries ) ) {
84 $analytics_entries = array();
85 }
86
87 $amp_tracking_codes = static::get_amp_tracking_codes( $analytics_entries );
88 $jetpack_account = Jetpack_Google_Analytics_Options::get_tracking_code();
89
90 // Bypass tracking codes already set on AMP plugin.
91 if ( in_array( $jetpack_account, $amp_tracking_codes, true ) ) {
92 return $analytics_entries;
93 }
94
95 $config_data = wp_json_encode(
96 array(
97 'vars' => array(
98 'account' => Jetpack_Google_Analytics_Options::get_tracking_code(),
99 ),
100 'triggers' => array(
101 'trackPageview' => array(
102 'on' => 'visible',
103 'request' => 'pageview',
104 ),
105 ),
106 )
107 );
108
109 // Generate a hash string to uniquely identify this entry.
110 $entry_id = substr( md5( 'googleanalytics' . $config_data ), 0, 12 );
111
112 $analytics_entries[ $entry_id ] = array(
113 'type' => 'googleanalytics',
114 'config' => $config_data,
115 );
116
117 return $analytics_entries;
118 }
119
120 /**
121 * Get AMP tracking codes.
122 *
123 * @param array $analytics_entries The codes available for AMP.
124 *
125 * @return array
126 */
127 protected static function get_amp_tracking_codes( $analytics_entries ) {
128 $entries = array_column( $analytics_entries, 'config' );
129 $accounts = array();
130
131 foreach ( $entries as $entry ) {
132 $entry = json_decode( $entry );
133
134 if ( ! empty( $entry->vars->account ) ) {
135 $accounts[] = $entry->vars->account;
136 }
137 }
138
139 return $accounts;
140 }
141 }
142
143 global $jetpack_google_analytics;
144 $jetpack_google_analytics = Jetpack_Google_Analytics::get_instance();
145