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 / subscription-var-purchase.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
subscription-var-purchase.php
131 lines
1 <?php
2 /**
3 * SubscriptionVarPurchase.
4 * php version 5.6
5 *
6 * @category SubscriptionVarPurchase
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 use WC_Subscription;
21 use WC_Subscriptions_Product;
22
23 /**
24 * SubscriptionVarPurchase
25 *
26 * @category SubscriptionVarPurchase
27 * @package SureTriggers
28 * @author BSF <username@example.com>
29 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
30 * @link https://www.brainstormforce.com/
31 * @since 1.0.0
32 */
33 class SubscriptionVarPurchase {
34
35 /**
36 * Integration type.
37 *
38 * @var string
39 */
40 public $integration = 'WooCommerce';
41
42 /**
43 * Trigger name.
44 *
45 * @var string
46 */
47 public $trigger = 'wc_purchase_sub_variation';
48
49 use SingletonLoader;
50
51 /**
52 * Constructor
53 *
54 * @since 1.0.0
55 */
56 public function __construct() {
57 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
58 }
59
60 /**
61 * Register action.
62 *
63 * @param array $triggers trigger data.
64 * @return array
65 */
66 public function register( $triggers ) {
67 $triggers[ $this->integration ][ $this->trigger ] = [
68 'label' => __( 'User purchases a variable subscription', 'suretriggers' ),
69 'action' => $this->trigger,
70 'common_action' => 'woocommerce_subscription_payment_complete',
71 'function' => [ $this, 'trigger_listener' ],
72 'priority' => 10,
73 'accepted_args' => 1,
74 ];
75
76 return $triggers;
77 }
78
79 /**
80 * Trigger listener
81 *
82 * @param object $subscription WC_Subscription object.
83 *
84 * @return void
85 */
86 public function trigger_listener( $subscription ) {
87 if ( ! class_exists( 'WC_Subscription' ) ) {
88 return;
89 }
90 if ( ! $subscription instanceof WC_Subscription ) {
91 return;
92 }
93
94 $last_order_id = $subscription->get_last_order();
95
96 if ( ! empty( $last_order_id ) && $last_order_id !== $subscription->get_parent_id() ) {
97 return;
98 }
99
100 $last_order_data = wc_get_order( $last_order_id );
101 if ( ! $last_order_data instanceof \WC_Order ) {
102 return;
103 }
104 $user_id = $last_order_data->get_customer_id();
105 $id = $subscription->get_id();
106
107 $items = $subscription->get_items();
108 $product_ids = [];
109 $context = [];
110 foreach ( $items as $item ) {
111 $product = $item->get_product();
112 if ( class_exists( '\WC_Subscriptions_Product' ) && WC_Subscriptions_Product::is_subscription( $product ) ) {
113 if ( $product->is_type( [ 'subscription', 'subscription_variation', 'variable-subscription' ] ) ) {
114 $context = array_merge(
115 WooCommerce::get_variable_subscription_product_context( $item, $last_order_id ),
116 WordPress::get_user_context( $user_id )
117 );
118 }
119 }
120 }
121 AutomationController::sure_trigger_handle_trigger(
122 [
123 'trigger' => $this->trigger,
124 'context' => $context,
125 ]
126 );
127 }
128 }
129
130 SubscriptionVarPurchase::get_instance();
131