PluginProbe
ShopBuilder – WooCommerce Builder For Elementor / 3.2.6
ShopBuilder – WooCommerce Builder For Elementor v3.2.6
3.4.2 3.4.1 3.4.0 2.0.1 2.0.2 2.0.3 2.1.0 2.1.1 2.1.10 2.1.11 2.1.12 2.1.13 2.1.14 2.1.15 2.1.2 2.1.3 2.1.4 2.1.5 2.1.6 2.1.7 2.1.8 2.1.9 2.2.0 2.2.1 2.2.2 All 63 releases
shopbuilder / app / Modules / AbandonedCartRecovery / CartRecoveryInit.php

CartRecoveryInit.php in ShopBuilder – WooCommerce Builder For Elementor 3.2.6, at app/Modules/AbandonedCartRecovery/CartRecoveryInit.php

98 lines 2.9 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Sticky Abandoned Cart Recovery Module Class.
4 *
5 * @package RadiusTheme\SB
6 */
7
8 namespace RadiusTheme\SB\Modules\AbandonedCartRecovery;
9
10 use RadiusTheme\SB\Helpers\Fns;
11 use RadiusTheme\SB\Traits\SingletonTrait;
12
13
14 defined( 'ABSPATH' ) || exit();
15
16 /**
17 * Sticky add-to-cart Module Class.
18 */
19 class CartRecoveryInit {
20 /**
21 * Singleton Trait.
22 */
23 use SingletonTrait;
24
25 /**
26 * Constructor.
27 */
28 public function __construct() {
29 $this->init_hooks();
30 $this->api_hooks();
31 $this->cart_activity();
32 $this->assets();
33 $this->cron_hooks();
34 $this->order_activity();
35 $this->admin_related_hooks();
36 }
37
38 /**
39 * Everything already in init hooks.
40 *
41 * @return void
42 */
43 public function init_hooks() {
44 CartRecoveryTable::instance(); // Already In init hook.
45 do_action( 'rtsb/cart/recovery/init' );
46 }
47
48 /**
49 * @return void
50 */
51 public function admin_related_hooks() {
52 // Adding menu to view cart abandonment report.
53 add_action( 'admin_menu', [ CartAbandonedTracking::instance(), 'abandoned_cart_tracking_menu' ], 999 );
54 }
55 /**
56 * @return void
57 */
58 public function assets() {
59 add_action( 'wp_enqueue_scripts', [ CartRecoveryAssets::instance(), 'frontend_assets' ], 99 );
60 }
61 /**
62 * @return void
63 */
64 public function api_hooks() {
65 add_action( 'rest_api_init', [ ApiCartRecovery::instance(), 'register_routes' ] );
66 }
67 /**
68 * @return void
69 */
70 public function cart_activity() {
71 // Quick view AJAX.
72 add_action( 'wp_ajax_rtsb_abandoned_cart_recovery', [ CartActivity::instance(), 'abandoned_cart_update' ] );
73 add_action( 'wp_ajax_nopriv_rtsb_abandoned_cart_recovery', [ CartActivity::instance(), 'abandoned_cart_update' ] );
74 add_action( 'wp', [ CartActivity::instance(), 'restore_cart_from_abandonment' ] );
75 add_action( 'wp', [ CartActivity::instance(), 'unsubscribe_cart_from_abandonment' ] );
76 add_action( 'woocommerce_before_calculate_totals', [ CartActivity::instance(), 'before_calculate_totals' ], 999 );
77 add_action( 'woocommerce_store_api_cart_totals', [ CartActivity::instance(), 'before_calculate_totals' ], 999 ); // Gutenberg.
78 }
79 /**
80 * Cron hooks.
81 */
82 public function cron_hooks() {
83 $cron = CartRecoveryCron::instance();
84 add_filter( 'cron_schedules', [ $cron, 'abandoned_cart_cron' ] ); // phpcs:ignore WordPress.WP.CronInterval.ChangeDetected
85 $cron->run_cron(); // Run cron on init hook.
86 add_action( 'rtsb_abandoned_cart_recovery_action', [ $cron, 'detect_abandoned_cart_recovery' ] );
87 add_action( 'rtsb_send_abandoned_cart_emails', [ $cron, 'process_abandoned_cart_emails' ] );
88 }
89 /**
90 * @return void
91 */
92 public function order_activity() {
93 add_action( 'woocommerce_order_status_changed', [ CartActivity::instance(), 'cart_abandonment_on_status_change' ], 99, 4 );
94 add_action( 'woocommerce_checkout_create_order_line_item', [ CartActivity::instance(), 'checkout_create_order_line_item' ], 10, 3 );
95 add_filter( 'woocommerce_order_item_get_formatted_meta_data', [ CartActivity::instance(), 'get_order_meta' ], 10 );
96 }
97 }
98