PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 15.9-a.1
Jetpack – WP Security, Backup, Speed, & Growth v15.9-a.1
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 / woocommerce-analytics / class-jetpack-woocommerce-analytics.php
jetpack / modules / woocommerce-analytics Last commit date
classes 5 months ago class-jetpack-woocommerce-analytics.php 1 month ago
class-jetpack-woocommerce-analytics.php
154 lines
1 <?php
2 /**
3 * Jetpack_WooCommerce_Analytics is ported from the Jetpack_Google_Analytics code.
4 *
5 * @package automattic/jetpack
6 */
7
8 if ( ! defined( 'ABSPATH' ) ) {
9 exit( 0 );
10 }
11
12 require __DIR__ . '/classes/class-jetpack-woocommerce-analytics-trait.php';
13 require_once __DIR__ . '/classes/class-jetpack-woocommerce-analytics-universal.php';
14 require_once __DIR__ . '/classes/class-jetpack-woocommerce-analytics-my-account.php';
15 require_once __DIR__ . '/classes/class-jetpack-woocommerce-analytics-checkout-flow.php';
16
17 /**
18 * Class Jetpack_WooCommerce_Analytics
19 * Instantiate WooCommerce Analytics
20 */
21 class Jetpack_WooCommerce_Analytics {
22
23 /**
24 * Instance of this class
25 *
26 * @var Jetpack_WooCommerce_Analytics - Static property to hold our singleton instance
27 */
28 private static $instance = false;
29
30 /**
31 * Instance of the Universal functions
32 *
33 * @var Static property to hold concrete analytics implementation that does the work (universal or legacy)
34 */
35 private static $analytics = false;
36
37 /**
38 * Instance of the My account functions
39 *
40 * @var Static property to hold concrete analytics implementation that does the work.
41 */
42 private static $myaccount = false;
43
44 /**
45 * Instance of the Checkout Flow functions
46 *
47 * @var Static property to hold concrete analytics implementation that does the work.
48 */
49 private static $views = false;
50
51 /**
52 * WooCommerce Analytics is only available to Jetpack connected WooCommerce stores with both plugins set to active
53 * and WooCommerce version 3.0 or higher
54 *
55 * @return bool
56 */
57 public static function should_track_store() {
58 /**
59 * Make sure WooCommerce is installed and active
60 *
61 * This action is documented in https://docs.woocommerce.com/document/create-a-plugin
62 */
63 if ( ! in_array( 'woocommerce/woocommerce.php', apply_filters( 'active_plugins', Jetpack::get_active_plugins() ), true ) ) {
64 return false;
65 }
66 // Tracking only Site pages.
67 if ( is_admin() ) {
68 return false;
69 }
70 // Make sure Jetpack is installed and connected.
71 if ( ! Jetpack::is_connection_ready() ) {
72 return false;
73 }
74 // Ensure the WooCommerce class exists and is a valid version.
75 $minimum_woocommerce_active = class_exists( 'WooCommerce' ) && version_compare( WC_VERSION, '3.0', '>=' );
76 if ( ! $minimum_woocommerce_active ) {
77 return false;
78 }
79 return true;
80 }
81
82 /**
83 * This is our constructor, which is private to force the use of get_instance()
84 *
85 * @return void
86 */
87 private function __construct() {
88 // loading _wca.
89 add_action( 'wp_head', array( $this, 'wp_head_top' ), 1 );
90
91 // loading s.js.
92 add_action( 'wp_enqueue_scripts', array( $this, 'enqueue_tracking_script' ) );
93
94 self::$analytics = new Jetpack_WooCommerce_Analytics_Universal();
95 self::$myaccount = new Jetpack_WooCommerce_Analytics_My_Account();
96 if ( class_exists( 'Automattic\WooCommerce\Blocks\Package' ) && version_compare( Automattic\WooCommerce\Blocks\Package::get_version(), '11.6.2', '>=' ) ) {
97 self::$views = new Jetpack_WooCommerce_Analytics_Checkout_Flow();
98 }
99 }
100
101 /**
102 * Make _wca available to queue events
103 */
104 public function wp_head_top() {
105 if ( is_cart() || is_checkout() || is_checkout_pay_page() || is_order_received_page() || is_add_payment_method_page() ) {
106 echo '<script>window._wca_prevent_referrer = true;</script>' . "\r\n";
107 }
108 echo '<script>window._wca = window._wca || [];</script>' . "\r\n";
109 }
110
111 /**
112 * Place script to call s.js, Store Analytics.
113 */
114 public function enqueue_tracking_script() {
115 // No store activity to track on 404 pages.
116 if ( is_404() ) {
117 return;
118 }
119
120 $url = sprintf(
121 'https://stats.wp.com/s-%d.js',
122 gmdate( 'YW' )
123 );
124
125 wp_enqueue_script(
126 'woocommerce-analytics',
127 $url,
128 array(),
129 null, // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion -- The version is set in the URL.
130 array(
131 'in_footer' => false,
132 'strategy' => 'defer',
133 )
134 );
135 }
136
137 /**
138 * Function to instantiate our class and make it a singleton
139 */
140 public static function get_instance() {
141 if ( ! self::should_track_store() ) {
142 return;
143 }
144 if ( ! self::$instance ) {
145 self::$instance = new self();
146 }
147
148 return self::$instance;
149 }
150 }
151
152 global $jetpack_woocommerce_analytics;
153 $jetpack_woocommerce_analytics = Jetpack_WooCommerce_Analytics::get_instance();
154