PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.33
OttoKit: All-in-One Automation Platform v1.1.33
1.1.33 1.1.32 1.1.31 1.1.30 1.1.29 1.1.28 1.1.27 1.1.9 trunk 1.0.10 1.0.11 1.0.12 1.0.13 1.0.14 1.0.15 1.0.16 1.0.17 1.0.18 1.0.19 1.0.20 1.0.21 1.0.22 1.0.23 1.0.24 1.0.25 1.0.26 1.0.27 1.0.28 1.0.29 1.0.30 1.0.31 1.0.32 1.0.33 1.0.34 1.0.35 1.0.36 1.0.37 1.0.38 1.0.39 1.0.40 1.0.41 1.0.42 1.0.43 1.0.44 1.0.45 1.0.46 1.0.47 1.0.48 1.0.49 1.0.50 1.0.51 1.0.52 1.0.53 1.0.54 1.0.55 1.0.56 1.0.57 1.0.58 1.0.59 1.0.60 1.0.61 1.0.62 1.0.63 1.0.64 1.0.65 1.0.66 1.0.67 1.0.68 1.0.69 1.0.7 1.0.70 1.0.71 1.0.72 1.0.73 1.0.74 1.0.75 1.0.76 1.0.77 1.0.78 1.0.79 1.0.8 1.0.80 1.0.81 1.0.82 1.0.83 1.0.84 1.0.85 1.0.86 1.0.87 1.0.88 1.0.89 1.0.9 1.0.90 1.1.0 1.1.1 1.1.10 1.1.11 1.1.12 1.1.13 1.1.14 1.1.15 1.1.16 1.1.17 1.1.18 1.1.19 1.1.2 1.1.20 1.1.21 1.1.22 1.1.23 1.1.24 1.1.25 1.1.26 1.1.3 1.1.4 1.1.5 1.1.6 1.1.7 1.1.8
suretriggers / src / Integrations / woocommerce / triggers / purchase-variable-product.php
suretriggers / src / Integrations / woocommerce / triggers Last commit date
add-product-to-cart.php 2 years ago customer-created.php 2 years ago customer-order-count-reach-specific-count.php 2 years ago customer-total-spend-reach-specific-amount.php 2 years ago order-created.php 10 months ago order-note-added.php 2 years ago order-paid.php 9 months ago order-status-changed.php 2 years ago purchase-product-category.php 1 year ago purchase-product.php 1 year ago purchase-variable-product.php 1 year ago review-product.php 2 years ago subscription-var-purchase.php 1 year ago view-product.php 2 years ago
purchase-variable-product.php
130 lines
1 <?php
2 /**
3 * PurchaseVariableProduct.
4 * php version 5.6
5 *
6 * @category PurchaseVariableProduct
7 * @package SureTriggers
8 * @author BSF <username@example.com>
9 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
10 * @link https://www.brainstormforce.com/
11 * @since 1.0.0
12 */
13
14 namespace SureTriggers\Integrations\Woocommerce\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Integrations\WooCommerce\WooCommerce;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use SureTriggers\Traits\SingletonLoader;
20
21 /**
22 * PurchaseVariableProduct
23 *
24 * @category PurchaseVariableProduct
25 * @package SureTriggers
26 * @author BSF <username@example.com>
27 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
28 * @link https://www.brainstormforce.com/
29 * @since 1.0.0
30 */
31 class PurchaseVariableProduct {
32
33 /**
34 * Integration type.
35 *
36 * @var string
37 */
38 public $integration = 'WooCommerce';
39
40 /**
41 * Trigger name.
42 *
43 * @var string
44 */
45 public $trigger = 'wc_purchase_variable_product';
46
47 use SingletonLoader;
48
49 /**
50 * Constructor
51 *
52 * @since 1.0.0
53 */
54 public function __construct() {
55 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
56 }
57
58 /**
59 * Register action.
60 *
61 * @param array $triggers trigger data.
62 * @return array
63 */
64 public function register( $triggers ) {
65 $triggers[ $this->integration ][ $this->trigger ] = [
66 'label' => __( 'User purchases a variable product with a variation selected', 'suretriggers' ),
67 'action' => $this->trigger,
68 'common_action' => [ 'woocommerce_checkout_order_processed', 'woocommerce_store_api_checkout_order_processed' ],
69 'function' => [ $this, 'trigger_listener' ],
70 'priority' => 10,
71 'accepted_args' => 1,
72 ];
73
74 return $triggers;
75 }
76
77 /**
78 * Trigger listener
79 *
80 * @param int $order_id order ID.
81 *
82 * @return void
83 */
84 public function trigger_listener( $order_id ) {
85 if ( ! $order_id ) {
86 return;
87 }
88
89 $order = wc_get_order( $order_id );
90
91 if ( ! $order || ! $order instanceof \WC_Order ) {
92 return;
93 }
94
95 $user_id = $order->get_customer_id();
96
97 $items = $order->get_items();
98 $product_variations = [];
99
100 foreach ( $items as $item ) {
101 if ( $item instanceof \WC_Order_Item_Product ) {
102 $product_variations[] = $item->get_variation_id();
103 }
104 }
105 foreach ( $product_variations as $product_variation_id ) {
106 $product_id = wp_get_post_parent_id( $product_variation_id );
107 if ( $product_id ) {
108 $order_context = WooCommerce::get_order_context( $order_id );
109 $context = array_merge(
110 WooCommerce::get_product_context( $product_id ),
111 isset( $order_context ) ? $order_context : [],
112 WordPress::get_user_context( $user_id )
113 );
114 $context['product_variation_id'] = $product_variation_id;
115 $context['product_variation'] = get_the_excerpt( $product_variation_id );
116 $context['total_items_in_order'] = count( $items );
117
118 AutomationController::sure_trigger_handle_trigger(
119 [
120 'trigger' => $this->trigger,
121 'context' => $context,
122 ]
123 );
124 }
125 }
126 }
127 }
128
129 PurchaseVariableProduct::get_instance();
130