PluginProbe ʕ •ᴥ•ʔ
Jetpack – WP Security, Backup, Speed, & Growth / 13.5.2
Jetpack – WP Security, Backup, Speed, & Growth v13.5.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 / classes / class-jetpack-woocommerce-analytics-checkout-flow.php
jetpack / modules / woocommerce-analytics / classes Last commit date
class-jetpack-woocommerce-analytics-checkout-flow.php 2 years ago class-jetpack-woocommerce-analytics-my-account.php 2 years ago class-jetpack-woocommerce-analytics-trait.php 2 years ago class-jetpack-woocommerce-analytics-universal.php 2 years ago
class-jetpack-woocommerce-analytics-checkout-flow.php
205 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;
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 $checkout_page_contains_checkout_shortcode = '0';
93 } elseif ( 'checkout' === $order_source ) {
94 $checkout_page_contains_checkout_block = '0';
95 $checkout_page_contains_checkout_shortcode = '1';
96 }
97
98 $coupons = $order->get_coupons();
99 $coupon_used = 0;
100 if ( is_countable( $coupons ) ) {
101 $coupon_used = count( $coupons ) ? 1 : 0;
102 }
103
104 if ( is_object( WC()->session ) ) {
105 $create_account = true === WC()->session->get( 'wc_checkout_createaccount_used' ) ? 'Yes' : 'No';
106 $checkout_page_used = true === WC()->session->get( 'checkout_page_used' ) ? 'Yes' : 'No';
107 } else {
108 $create_account = 'No';
109 $checkout_page_used = 'No';
110 }
111
112 $this->record_event(
113 'woocommerceanalytics_order_confirmation_view',
114 array(
115 'coupon_used' => $coupon_used,
116 'create_account' => $create_account,
117 'express_checkout' => 'null', // TODO: not solved yet.
118 'guest_checkout' => $order->get_customer_id() ? 'No' : 'Yes',
119 'oi' => $order->get_id(),
120 'order_value' => $order->get_total(),
121 'payment_option' => $order->get_payment_method(),
122 'products_count' => $order->get_item_count(),
123 'products' => $this->format_items_to_json( $order->get_items() ),
124 'order_note' => $order->get_customer_note(),
125 'shipping_option' => $order->get_shipping_method(),
126 'from_checkout' => $checkout_page_used,
127 'checkout_page_contains_checkout_block' => $checkout_page_contains_checkout_block,
128 'checkout_page_contains_checkout_shortcode' => $checkout_page_contains_checkout_shortcode,
129 )
130 );
131 }
132
133 /**
134 * Track the cart page view
135 *
136 * @deprecated 13.3
137 */
138 public function capture_cart_view() {
139 if ( ! is_cart() ) {
140 return;
141 }
142
143 $this->record_event(
144 'woocommerceanalytics_cart_view',
145 array_merge(
146 $this->get_cart_checkout_shared_data(),
147 array()
148 )
149 );
150 }
151
152 /**
153 * Track the checkout page view
154 *
155 * @deprecated 13.3
156 */
157 public function capture_checkout_view() {
158 global $post;
159 $checkout_page_id = wc_get_page_id( 'checkout' );
160
161 $is_checkout = $checkout_page_id && is_page( $checkout_page_id )
162 || wc_post_content_has_shortcode( 'woocommerce_checkout' )
163 || has_block( 'woocommerce/checkout', $post )
164 || has_block( 'woocommerce/classic-shortcode', $post )
165 || apply_filters( 'woocommerce_is_checkout', false )
166 || \Automattic\Jetpack\Constants::is_defined( 'WOOCOMMERCE_CHECKOUT' );
167
168 if ( ! $is_checkout ) {
169 return;
170 }
171
172 $is_in_checkout_page = $checkout_page_id === $post->ID ? 'Yes' : 'No';
173 $checkout_page_contains_checkout_block = '0';
174 $checkout_page_contains_checkout_shortcode = '1';
175
176 $session = WC()->session;
177 if ( is_object( $session ) ) {
178 $session->set( 'checkout_page_used', true );
179 $session->save_data();
180 $draft_order_id = $session->get( 'store_api_draft_order', 0 );
181 if ( $draft_order_id ) {
182 $checkout_page_contains_checkout_block = '1';
183 $checkout_page_contains_checkout_shortcode = '0';
184 }
185 }
186
187 // Order received page is also a checkout page, so we need to bail out if we are on that page.
188 if ( is_order_received_page() ) {
189 return;
190 }
191
192 $this->record_event(
193 'woocommerceanalytics_checkout_view',
194 array_merge(
195 $this->get_cart_checkout_shared_data(),
196 array(
197 'from_checkout' => $is_in_checkout_page,
198 'checkout_page_contains_checkout_block' => $checkout_page_contains_checkout_block,
199 'checkout_page_contains_checkout_shortcode' => $checkout_page_contains_checkout_shortcode,
200 )
201 )
202 );
203 }
204 }
205