PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.35
OttoKit: All-in-One Automation Platform v1.1.35
1.1.37 1.1.36 1.1.35 1.1.34 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 / order-status-changed.php
suretriggers / src / Integrations / woocommerce / triggers Last commit date
add-product-to-cart.php 3 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 11 months ago order-note-added.php 2 years ago order-paid.php 10 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 3 years ago subscription-var-purchase.php 1 year ago view-product.php 2 years ago
order-status-changed.php
170 lines
1 <?php
2 /**
3 * OrderStatusChanged.
4 * php version 5.6
5 *
6 * @category OrderStatusChanged
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 * OrderStatusChanged
23 *
24 * @category OrderStatusChanged
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 OrderStatusChanged {
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_order_status_changed';
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 'event_name' => 'woocommerce_order_status_changed',
67 'label' => __( 'Order Status Changes', 'suretriggers' ),
68 'action' => $this->trigger,
69 'common_action' => 'woocommerce_order_status_changed',
70 'function' => [ $this, 'trigger_listener' ],
71 'priority' => 10,
72 'accepted_args' => 4,
73 ];
74
75 return $triggers;
76 }
77
78 /**
79 * Trigger listener
80 *
81 * @param int $order_id order ID.
82 * @param string $from_status order old status.
83 * @param string $to_status order new status.
84 * @param array $order order.
85 * @since 1.0.0
86 *
87 * @return void
88 */
89 public function trigger_listener( $order_id, $from_status, $to_status, $order ) {
90 if ( ! $order_id ) {
91 return;
92 }
93 $order = wc_get_order( $order_id );
94
95 if ( ! $order ) {
96 return;
97 }
98
99 if ( is_object( $order ) && method_exists( $order, 'get_items' ) ) {
100 $items = $order->get_items();
101 $product_ids = [];
102 foreach ( $items as $item ) {
103 $product_ids[] = $item['product_id'];
104 }
105 $product_data = [];
106 foreach ( $product_ids as $key => $product_id ) {
107 /**
108 *
109 * Ignore line
110 *
111 * @phpstan-ignore-next-line
112 */
113 $product_data[ 'product' . $key ] = WooCommerce::get_product_context( $product_id );
114 /**
115 *
116 * Ignore line
117 *
118 * @phpstan-ignore-next-line
119 */
120 $terms = get_the_terms( $product_id, 'product_cat' );
121 if ( ! empty( $terms ) && is_array( $terms ) && isset( $terms[0] ) ) {
122 $cat_name = [];
123 foreach ( $terms as $cat ) {
124 $cat_name[] = $cat->name;
125 }
126 $product_data[ 'product' . $key ]['category'] = implode( ', ', $cat_name );
127 }
128 /**
129 *
130 * Ignore line
131 *
132 * @phpstan-ignore-next-line
133 */
134 $terms_tags = get_the_terms( $product_id, 'product_tag' );
135 if ( ! empty( $terms_tags ) && is_array( $terms_tags ) && isset( $terms_tags[0] ) ) {
136 $tag_name = [];
137 foreach ( $terms_tags as $tag ) {
138 $tag_name[] = $tag->name;
139 }
140 $product_data[ 'product' . $key ]['tag'] = implode( ', ', $tag_name );
141 }
142 }
143 $order_detail = WooCommerce::get_order_context( $order_id );
144 if ( is_array( $order_detail ) ) {
145 $context = array_merge(
146 $order_detail,
147 $product_data
148 );
149 }
150
151 if ( is_object( $order ) && method_exists( $order, 'get_customer_id' ) ) {
152 $user_id = $order->get_customer_id();
153 $context['user'] = WordPress::get_user_context( $user_id );
154 }
155
156 $context['to_status'] = 'wc-' . $to_status;
157 $context['from_status'] = 'wc-' . $from_status;
158
159 AutomationController::sure_trigger_handle_trigger(
160 [
161 'trigger' => $this->trigger,
162 'context' => $context,
163 ]
164 );
165 }
166 }
167 }
168
169 OrderStatusChanged::get_instance();
170