PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 14.9.2
Jetpack – WP Security, Backup, Speed, & Growth v14.9.2
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 / woocommerce-analytics / class-jetpack-woocommerce-analytics.php
jetpack / modules / woocommerce-analytics Last commit date
classes 1 year ago class-jetpack-woocommerce-analytics.php 1 year ago
class-jetpack-woocommerce-analytics.php
149 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 $url = sprintf(
116 'https://stats.wp.com/s-%d.js',
117 gmdate( 'YW' )
118 );
119
120 wp_enqueue_script(
121 'woocommerce-analytics',
122 $url,
123 array(),
124 null, // phpcs:ignore WordPress.WP.EnqueuedResourceParameters.MissingVersion -- The version is set in the URL.
125 array(
126 'in_footer' => false,
127 'strategy' => 'defer',
128 )
129 );
130 }
131
132 /**
133 * Function to instantiate our class and make it a singleton
134 */
135 public static function get_instance() {
136 if ( ! self::should_track_store() ) {
137 return;
138 }
139 if ( ! self::$instance ) {
140 self::$instance = new self();
141 }
142
143 return self::$instance;
144 }
145 }
146
147 global $jetpack_woocommerce_analytics;
148 $jetpack_woocommerce_analytics = Jetpack_WooCommerce_Analytics::get_instance();
149