PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 16.0.1
Jetpack – WP Security, Backup, Speed, & Growth v16.0.1
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 / classes / class-jetpack-woocommerce-analytics-checkout-flow.php
jetpack / modules / woocommerce-analytics / classes Last commit date
class-jetpack-woocommerce-analytics-checkout-flow.php 7 months ago class-jetpack-woocommerce-analytics-my-account.php 7 months ago class-jetpack-woocommerce-analytics-trait.php 7 months ago class-jetpack-woocommerce-analytics-universal.php 7 months ago
class-jetpack-woocommerce-analytics-checkout-flow.php
203 lines
1 <?php
2 /**
3 * Jetpack_WooCommerce_Analytics_Checkout_Flow
4 *
5 * @deprecated 13.3
6 *
7 * @package automattic/jetpack
8 * @author Automattic
9 */
10
11 /**
12 * Bail if accessed directly
13 */
14 if ( ! defined( 'ABSPATH' ) ) {
15 exit( 0 );
16 }
17
18 /**
19 * Class Jetpack_WooCommerce_Analytics_Checkout_Flow
20 * Class that handles all page view events for the checkout flow (from product view to order confirmation view)
21 *
22 * @deprecated 13.3
23 */
24 class Jetpack_WooCommerce_Analytics_Checkout_Flow {
25
26 use Jetpack_WooCommerce_Analytics_Trait;
27
28 /**
29 * Jetpack_WooCommerce_Analytics_Checkout_Flow constructor.
30 *
31 * @deprecated 13.3
32 */
33 public function __construct() {
34 $this->find_cart_checkout_content_sources();
35 $this->additional_blocks_on_cart_page = $this->get_additional_blocks_on_page( 'cart' );
36 $this->additional_blocks_on_checkout_page = $this->get_additional_blocks_on_page( 'checkout' );
37
38 // single product page view.
39 add_action( 'woocommerce_after_single_product', array( $this, 'capture_product_view' ) );
40
41 // order confirmed page view
42 add_action( 'woocommerce_thankyou', array( $this, 'capture_order_confirmation_view' ), 10, 1 );
43
44 // cart page view
45 add_action( 'wp_footer', array( $this, 'capture_cart_view' ) );
46
47 // checkout page view
48 add_action( 'wp_footer', array( $this, 'capture_checkout_view' ) );
49 }
50
51 /**
52 * Track a product page view
53 *
54 * @deprecated 13.3
55 */
56 public function capture_product_view() {
57 global $product;
58 if ( ! $product instanceof WC_Product ) {
59 return;
60 }
61
62 $this->record_event(
63 'woocommerceanalytics_product_view',
64 array(),
65 $product->get_id()
66 );
67 }
68
69 /**
70 * Track the order confirmation page view
71 *
72 * @deprecated 13.3
73 */
74 public function capture_order_confirmation_view() {
75 $order_id = absint( get_query_var( 'order-received' ) );
76 if ( ! $order_id ) {
77 return;
78 }
79
80 if ( ! is_order_received_page() ) {
81 return;
82 }
83
84 $order = wc_get_order( $order_id );
85
86 $order_source = $order->get_created_via();
87 $checkout_page_contains_checkout_block = '0';
88 $checkout_page_contains_checkout_shortcode = '0';
89
90 if ( 'store-api' === $order_source ) {
91 $checkout_page_contains_checkout_block = '1';
92 } elseif ( 'checkout' === $order_source ) {
93 $checkout_page_contains_checkout_shortcode = '1';
94 }
95
96 $coupons = $order->get_coupons();
97 $coupon_used = 0;
98 if ( is_countable( $coupons ) ) {
99 $coupon_used = count( $coupons ) ? 1 : 0;
100 }
101
102 if ( is_object( WC()->session ) ) {
103 $create_account = true === WC()->session->get( 'wc_checkout_createaccount_used' ) ? 'Yes' : 'No';
104 $checkout_page_used = true === WC()->session->get( 'checkout_page_used' ) ? 'Yes' : 'No';
105 } else {
106 $create_account = 'No';
107 $checkout_page_used = 'No';
108 }
109
110 $this->record_event(
111 'woocommerceanalytics_order_confirmation_view',
112 array(
113 'coupon_used' => $coupon_used,
114 'create_account' => $create_account,
115 'express_checkout' => 'null', // TODO: not solved yet.
116 'guest_checkout' => $order->get_customer_id() ? 'No' : 'Yes',
117 'oi' => $order->get_id(),
118 'order_value' => $order->get_total(),
119 'payment_option' => $order->get_payment_method(),
120 'products_count' => $order->get_item_count(),
121 'products' => $this->format_items_to_json( $order->get_items() ),
122 'order_note' => $order->get_customer_note(),
123 'shipping_option' => $order->get_shipping_method(),
124 'from_checkout' => $checkout_page_used,
125 'checkout_page_contains_checkout_block' => $checkout_page_contains_checkout_block,
126 'checkout_page_contains_checkout_shortcode' => $checkout_page_contains_checkout_shortcode,
127 )
128 );
129 }
130
131 /**
132 * Track the cart page view
133 *
134 * @deprecated 13.3
135 */
136 public function capture_cart_view() {
137 if ( ! is_cart() ) {
138 return;
139 }
140
141 $this->record_event(
142 'woocommerceanalytics_cart_view',
143 array_merge(
144 $this->get_cart_checkout_shared_data(),
145 array()
146 )
147 );
148 }
149
150 /**
151 * Track the checkout page view
152 *
153 * @deprecated 13.3
154 */
155 public function capture_checkout_view() {
156 global $post;
157 $checkout_page_id = wc_get_page_id( 'checkout' );
158
159 $is_checkout = $checkout_page_id && is_page( $checkout_page_id )
160 || wc_post_content_has_shortcode( 'woocommerce_checkout' )
161 || has_block( 'woocommerce/checkout', $post )
162 || has_block( 'woocommerce/classic-shortcode', $post )
163 || apply_filters( 'woocommerce_is_checkout', false )
164 || \Automattic\Jetpack\Constants::is_defined( 'WOOCOMMERCE_CHECKOUT' );
165
166 if ( ! $is_checkout ) {
167 return;
168 }
169
170 $is_in_checkout_page = $checkout_page_id === $post->ID ? 'Yes' : 'No';
171 $checkout_page_contains_checkout_block = '0';
172 $checkout_page_contains_checkout_shortcode = '1';
173
174 $session = WC()->session;
175 if ( is_object( $session ) ) {
176 $session->set( 'checkout_page_used', true );
177 $session->save_data();
178 $draft_order_id = $session->get( 'store_api_draft_order', 0 );
179 if ( $draft_order_id ) {
180 $checkout_page_contains_checkout_block = '1';
181 $checkout_page_contains_checkout_shortcode = '0';
182 }
183 }
184
185 // Order received page is also a checkout page, so we need to bail out if we are on that page.
186 if ( is_order_received_page() ) {
187 return;
188 }
189
190 $this->record_event(
191 'woocommerceanalytics_checkout_view',
192 array_merge(
193 $this->get_cart_checkout_shared_data(),
194 array(
195 'from_checkout' => $is_in_checkout_page,
196 'checkout_page_contains_checkout_block' => $checkout_page_contains_checkout_block,
197 'checkout_page_contains_checkout_shortcode' => $checkout_page_contains_checkout_shortcode,
198 )
199 )
200 );
201 }
202 }
203