PluginProbe ʕ •ᴥ•ʔ
OttoKit: All-in-One Automation Platform / 1.1.36
OttoKit: All-in-One Automation Platform v1.1.36
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-shipstation / triggers / order-shipped.php
suretriggers / src / Integrations / woocommerce-shipstation / triggers Last commit date
order-shipped.php 2 years ago specific-amount-order-shipped.php 2 years ago specific-product-order-shipped.php 2 years ago
order-shipped.php
149 lines
1 <?php
2 /**
3 * OrderShipped.
4 * php version 5.6
5 *
6 * @category OrderShipped
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\WoocommerceShipstation\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18 use SureTriggers\Integrations\WordPress\WordPress;
19 use SureTriggers\Integrations\WooCommerce\WooCommerce;
20
21 if ( ! class_exists( 'OrderShipped' ) ) :
22
23 /**
24 * OrderShipped
25 *
26 * @category OrderShipped
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 * @psalm-suppress UndefinedTrait
34 */
35 class OrderShipped {
36
37 /**
38 * Integration type.
39 *
40 * @var string
41 */
42 public $integration = 'WoocommerceShipstation';
43
44 /**
45 * Trigger name.
46 *
47 * @var string
48 */
49 public $trigger = 'wc_order_shipped';
50
51 use SingletonLoader;
52
53 /**
54 * Constructor
55 *
56 * @since 1.0.0
57 */
58 public function __construct() {
59 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
60 }
61
62 /**
63 * Register action.
64 *
65 * @param array $triggers trigger data.
66 * @return array
67 */
68 public function register( $triggers ) {
69 $triggers[ $this->integration ][ $this->trigger ] = [
70 'label' => __( 'Order Is Shipped', 'suretriggers' ),
71 'action' => $this->trigger,
72 'common_action' => 'woocommerce_shipstation_shipnotify',
73 'function' => [ $this, 'trigger_listener' ],
74 'priority' => 99,
75 'accepted_args' => 2,
76 ];
77
78 return $triggers;
79 }
80
81 /**
82 * Trigger listener
83 *
84 * @param object $order Order.
85 * @param array $argu Arg.
86 *
87 * @return void
88 */
89 public function trigger_listener( $order, $argu ) {
90
91 if ( ! $order ) {
92 return;
93 }
94
95 if ( method_exists( $order, 'get_user_id' ) ) {
96 $user_id = $order->get_user_id();
97 if ( 0 === $user_id ) {
98 return;
99 }
100 $product_ids = [];
101 if ( method_exists( $order, 'get_id' ) ) {
102 $order_id = $order->get_id();
103 if ( method_exists( $order, 'get_items' ) ) {
104 $items = $order->get_items();
105 foreach ( $items as $item ) {
106 $product_ids[] = $item->get_product_id();
107 }
108 }
109
110 $order_detail = WooCommerce::get_order_context( $order_id );
111 if ( is_array( $order_detail ) ) {
112 $context = array_merge(
113 $order_detail,
114 WordPress::get_user_context( $user_id )
115 );
116
117 $context['shipping_tracking_number'] = $argu['tracking_number'];
118 $context['shipping_carrier'] = $argu['carrier'];
119 $timestamp = strtotime( (string) $argu['ship_date'] );
120 /**
121 *
122 * Ignore line
123 *
124 * @phpstan-ignore-next-line
125 */
126 $date = date_i18n( get_option( 'date_format' ), $timestamp );
127 $context['ship_date'] = $date;
128
129 AutomationController::sure_trigger_handle_trigger(
130 [
131 'trigger' => $this->trigger,
132 'context' => $context,
133 ]
134 );
135 }
136 }
137 }
138 }
139 }
140
141 /**
142 * Ignore false positive
143 *
144 * @psalm-suppress UndefinedMethod
145 */
146 OrderShipped::get_instance();
147
148 endif;
149