PluginProbe
Jetpack – WP Security, Backup, Speed, & Growth / 16.3-a.5
Jetpack – WP Security, Backup, Speed, & Growth v16.3-a.5
16.3-a.5 16.3-a.7 16.3-a.3 16.3-a.1 16.2 16.2-beta 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 All 506 releases
jetpack / modules / woocommerce-analytics / classes / class-jetpack-woocommerce-analytics-checkout-flow.php

class-jetpack-woocommerce-analytics-checkout-flow.php in Jetpack – WP Security, Backup, Speed, & Growth 16.3-a.5, at modules/woocommerce-analytics/classes/class-jetpack-woocommerce-analytics-checkout-flow.php

203 lines 5.8 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
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