PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 12.8.3
Jetpack – WP Security, Backup, Speed, & Growth v12.8.3
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 14.4.2 14.5.1 14.6.1 14.7.1 14.8.1 14.9.2 15.0.3 15.1.2 15.2.1 15.3.2 15.4.1 15.5.1 15.6.1 15.7.2 15.8.1 15.9.2 16.0.2 16.1.3 16.2-a.5 16.2-a.3 16.1.2 16.2-a.1 16.1.1 16.1 16.1-beta 16.1-beta.2 16.1-beta.3 16.1-a.5 16.1-a.3 16.0.1 16.1-a.1 16.0 16.0-beta 16.0-a.7 16.0-a.5 15.9.1 16.0-a.3 16.0-a.1 15.9 15.9-beta 15.9-a.7 15.9-a.5 15.9-a.3 15.9-a.1 15.8 15.8-beta 15.8-a.7 15.8-a.5 5.2.5 5.3.4 5.4.4 5.5.5 5.6.5 5.7.5 5.8.4 5.9.4 6.0.4 6.1 6.1.1 6.1.2 6.1.3 6.1.4 6.1.5 6.2 6.2.1 6.2.2 6.2.3 6.2.4 6.2.5 6.3 6.3.1 6.3.2 6.3.3 6.3.4 6.3.5 6.3.6 6.3.7 6.4 6.4.1 6.4.2 6.4.3 6.4.4 6.4.5 6.4.6 6.5 6.5.1 6.5.2 6.5.3 6.5.4 6.6 6.6.1 6.6.2 6.6.3 6.6.4 6.6.5 6.7 6.7.1 6.7.2 6.7.3 6.7.4 6.8 6.8.1 6.8.2 6.8.3 6.8.4 6.8.5 6.9 6.9.1 6.9.2 6.9.3 6.9.4 7.0 7.0.1 7.0.2 7.0.3 7.0.4 7.0.5 7.1 7.1.1 7.1.2 7.1.3 7.1.4 7.1.5 7.2 7.2.1 7.2.1.1 7.2.2 7.2.3 7.2.4 7.2.5 7.3 7.3.0.1 7.3.1 7.3.1.1 7.3.2 7.3.3 7.3.4 7.3.5 7.4 7.4.1 7.4.2 7.4.3 7.4.4 7.4.5 7.5 7.5.0.1 7.5.1 7.5.2 7.5.3 7.5.4 7.5.5 7.5.6 7.5.7 7.6 7.6.1 7.6.2 7.6.3 7.6.4 7.7 7.7.1 7.7.2 7.7.3 7.7.4 7.7.5 7.7.6 7.8 7.8.1 7.8.2 7.8.3 7.8.4 7.9 7.9.1 7.9.2 7.9.3 7.9.4 8.0 8.0.1 8.0.2 8.0.3 8.1 8.1.1 8.1.2 8.1.3 8.1.4 8.2 8.2.0.1 8.2.1 8.2.2 8.2.3 8.2.4 8.2.5 8.2.6 8.3 8.3.1 8.3.2 8.3.3 8.4 8.4.1 8.4.2 8.4.3 8.4.4 8.4.5 8.5 8.5.1 8.5.2 8.5.3 8.6 8.6.1 8.6.2 8.6.3 8.6.4 8.7 8.7.0.1 8.7.1 8.7.2 8.7.3 8.7.4 8.8 8.8.1 8.8.2 8.8.3 8.8.4 8.8.5 8.9 8.9.1 8.9.2 8.9.3 8.9.4 9.0 9.0.1 9.0.2 9.0.3 9.0.4 9.0.5 9.1 9.1.1 9.1.2 9.1.3 9.2 9.2.1 9.2.2 9.2.3 9.2.4 9.3 9.3.1 9.3.2 9.3.3 9.3.4 9.3.5 9.4 9.4.1 9.4.2 9.4.3 9.4.4 9.5 9.5.1 9.5.2 9.5.3 9.5.4 9.5.5 9.6 9.6.1 9.6.2 9.6.3 9.6.4 9.7 9.7.1 9.7.2 15.7-beta.2 9.7.3 15.7.1 9.8 15.8-a.1 9.8.1 15.8-a.3 9.8.2 2.0.9 9.8.3 2.1.7 9.9 2.2.10 9.9.1 2.3.10 9.9.2 2.4.7 9.9.3 2.5.5 2.6.6 2.7.5 2.8.5 2.9.6 3.0.6 3.1.5 3.2.5 3.3.6 3.4.6 3.5.6 3.6.4 3.7.5 3.8.5 3.9.10 4.0.7 4.1.4 4.2.5 4.3.5 4.4.5 4.5.3 4.6.3 4.7.4 4.8.5 4.9.3 5.0.3 5.1.4 trunk 10.0 10.0.1 10.0.2 10.1 10.1.1 10.1.2 10.2 10.2.1 10.2.2 10.2.3 10.3 10.3.1 10.3.2 10.4 10.4.1 10.4.2 10.5 10.5.1 10.5.2 10.5.3 10.6 10.6.1 10.6.2 10.7 10.7.1 10.7.2 10.8 10.8.1 10.8.2 10.9 10.9.1 10.9.2 10.9.3 11.0 11.0.1 11.0.2 11.1 11.1.1 11.1.2 11.1.3 11.1.4 11.2 11.2.1 11.2.2 11.3 11.3.1 11.3.2 11.3.3 11.3.4 11.4 11.4.1 11.4.2 11.5 11.5.1 11.5.2 11.5.3 11.6 11.6.1 11.6.2 11.7 11.7.1 11.7.2 11.7.3 11.8 11.8.3 11.8.4 11.8.5 11.8.6 11.9 11.9.1 11.9.2 11.9.3 12.0 12.0.1 12.0.2 12.1 12.1.1 12.1.2 12.2 12.2.1 12.2.2 12.3 12.3.1 12.4 12.4.1 12.5 12.5.1 12.6 12.6.1 12.6.2 12.6.3 12.7 12.7.1 12.7.2 12.8 12.8.1 12.8.2 12.9 12.9.1 12.9.2 12.9.3 12.9.4 13.0 13.0.1 13.1 13.1.1 13.1.2 13.1.3 13.1.4 13.2 13.2.1 13.2.2 13.2.3 13.3 13.3.1 13.3.2 13.4 13.4.1 13.4.2 13.4.3 13.4.4 13.5 13.5.1 13.6 13.6.1 13.7 13.7.1 13.8 13.8.1 13.8.2 13.9 13.9.1 14.0 14.1 14.2 14.2.1 14.3 14.4 14.4.1 14.5 14.6 14.7 14.8 14.9 14.9.1 15.0 15.0.1 15.0.2 15.1 15.1.1 15.2 15.3 15.3.1 15.4 15.5 15.6 15.7 15.7-a.1 15.7-a.3 15.7-a.5 15.7-a.7 15.7-beta
jetpack / modules / google-analytics / wp-google-analytics.php
jetpack / modules / google-analytics Last commit date
classes 3 years ago wp-google-analytics.php 3 years ago
wp-google-analytics.php
149 lines
1 <?php // phpcs:ignore WordPress.Files.FileName.InvalidClassFileName
2
3 /*
4 Copyright 2006 Aaron D. Campbell (email : wp_plugins@xavisys.com)
5
6 This program is free software; you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation; either version 2 of the License, or
9 (at your option) any later version.
10
11 This program is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with this program; if not, write to the Free Software
18 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
19 */
20
21 if ( ! defined( 'ABSPATH' ) ) {
22 exit;
23 }
24
25 require_once __DIR__ . '/classes/wp-google-analytics-utils.php';
26 require_once __DIR__ . '/classes/wp-google-analytics-options.php';
27 require_once __DIR__ . '/classes/wp-google-analytics-legacy.php';
28 require_once __DIR__ . '/classes/wp-google-analytics-universal.php';
29 require_once __DIR__ . '/classes/class-jetpack-google-amp-analytics.php';
30
31 /**
32 * Jetpack_Google_Analytics is the class that handles ALL of the plugin functionality.
33 * It helps us avoid name collisions
34 * https://codex.wordpress.org/Writing_a_Plugin#Avoiding_Function_Name_Collisions
35 */
36 class Jetpack_Google_Analytics {
37
38 /**
39 * Jetpack_Google_Analytics singleton instance.
40 *
41 * @var Jetpack_Google_Analytics
42 */
43 public static $instance = false;
44
45 /**
46 * Property to hold concrete analytics implementation that does the work (universal or legacy).
47 *
48 * @var Static
49 */
50 public static $analytics = false;
51
52 /**
53 * This is our constructor, which is private to force the use of get_instance()
54 *
55 * @return void
56 */
57 private function __construct() {
58 // At this time, we only leverage universal analytics when enhanced ecommerce is selected and WooCommerce is active.
59 // Otherwise, don't bother emitting the tracking ID or fetching analytics.js
60 if ( class_exists( 'WooCommerce' ) && Jetpack_Google_Analytics_Options::enhanced_ecommerce_tracking_is_enabled() ) {
61 self::$analytics = new Jetpack_Google_Analytics_Universal();
62 new Jetpack_Google_AMP_Analytics();
63 } else {
64 self::$analytics = new Jetpack_Google_Analytics_Legacy();
65 }
66 }
67
68 /**
69 * Function to instantiate our class and make it a singleton
70 */
71 public static function get_instance() {
72 if ( ! self::$instance ) {
73 self::$instance = new self();
74 }
75
76 return self::$instance;
77 }
78
79 /**
80 * Add amp-analytics tags.
81 *
82 * @param array $analytics_entries An associative array of the analytics entries.
83 *
84 * @return array
85 */
86 public static function amp_analytics_entries( $analytics_entries ) {
87 if ( ! is_array( $analytics_entries ) ) {
88 $analytics_entries = array();
89 }
90
91 $amp_tracking_codes = static::get_amp_tracking_codes( $analytics_entries );
92 $jetpack_account = Jetpack_Google_Analytics_Options::get_tracking_code();
93
94 // Bypass tracking codes already set on AMP plugin.
95 if ( in_array( $jetpack_account, $amp_tracking_codes, true ) ) {
96 return $analytics_entries;
97 }
98
99 $config_data = wp_json_encode(
100 array(
101 'vars' => array(
102 'account' => Jetpack_Google_Analytics_Options::get_tracking_code(),
103 ),
104 'triggers' => array(
105 'trackPageview' => array(
106 'on' => 'visible',
107 'request' => 'pageview',
108 ),
109 ),
110 )
111 );
112
113 // Generate a hash string to uniquely identify this entry.
114 $entry_id = substr( md5( 'googleanalytics' . $config_data ), 0, 12 );
115
116 $analytics_entries[ $entry_id ] = array(
117 'type' => 'googleanalytics',
118 'config' => $config_data,
119 );
120
121 return $analytics_entries;
122 }
123
124 /**
125 * Get AMP tracking codes.
126 *
127 * @param array $analytics_entries The codes available for AMP.
128 *
129 * @return array
130 */
131 protected static function get_amp_tracking_codes( $analytics_entries ) {
132 $entries = array_column( $analytics_entries, 'config' );
133 $accounts = array();
134
135 foreach ( $entries as $entry ) {
136 $entry = json_decode( $entry );
137
138 if ( ! empty( $entry->vars->account ) ) {
139 $accounts[] = $entry->vars->account;
140 }
141 }
142
143 return $accounts;
144 }
145 }
146
147 global $jetpack_google_analytics;
148 $jetpack_google_analytics = Jetpack_Google_Analytics::get_instance();
149