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 / specific-product-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
specific-product-order-shipped.php
152 lines
1 <?php
2 /**
3 * SpecificProductOrderShipped.
4 * php version 5.6
5 *
6 * @category SpecificProductOrderShipped
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( 'SpecificProductOrderShipped' ) ) :
22
23 /**
24 * SpecificProductOrderShipped
25 *
26 * @category SpecificProductOrderShipped
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 SpecificProductOrderShipped {
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_specific_product_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 For Specific Product 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 foreach ( $product_ids as $product_id ) {
117 $context['product_id'] = $product_id;
118 }
119
120 $context['shipping_tracking_number'] = $argu['tracking_number'];
121 $context['shipping_carrier'] = $argu['carrier'];
122 $timestamp = strtotime( (string) $argu['ship_date'] );
123 /**
124 *
125 * Ignore line
126 *
127 * @phpstan-ignore-next-line
128 */
129 $date = date_i18n( get_option( 'date_format' ), $timestamp );
130 $context['ship_date'] = $date;
131
132 AutomationController::sure_trigger_handle_trigger(
133 [
134 'trigger' => $this->trigger,
135 'context' => $context,
136 ]
137 );
138 }
139 }
140 }
141 }
142 }
143
144 /**
145 * Ignore false positive
146 *
147 * @psalm-suppress UndefinedMethod
148 */
149 SpecificProductOrderShipped::get_instance();
150
151 endif;
152