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 / voxel / triggers / order-approved-by-vendor.php
suretriggers / src / Integrations / voxel / triggers Last commit date
collection-post-created.php 2 years ago collection-post-updated.php 2 years ago comment-reply-created-timeline.php 2 years ago membership-plan-activated.php 10 months ago membership-plan-canceled.php 10 months ago membership-plan-switched.php 10 months ago membership-plan-updated.php 10 months ago membership-user-registered.php 2 years ago new-comment-timeline.php 2 years ago new-message-post-created.php 1 year ago new-order-placed.php 2 years ago new-profile-created.php 2 years ago new-wall-post-by-user.php 1 year ago order-approved-by-vendor.php 2 years ago order-canceled-by-customer.php 2 years ago order-declined-by-vendor.php 2 years ago orders-claim-listing.php 1 year ago orders-promotion-activated.php 1 year ago orders-promotion-canceled.php 1 year ago post-approved.php 2 years ago post-rejected.php 2 years ago post-review-approved.php 1 year ago post-reviewed.php 2 years ago post-submitted.php 2 years ago post-updated.php 2 years ago profile-approved.php 2 years ago profile-rejected.php 2 years ago profile-reviewed.php 1 year ago profile-updated.php 2 years ago profile-wall-new-post.php 1 year ago taxonomy-updated.php 10 months ago timeline-post-approved.php 1 year ago user-receives-message.php 2 years ago users-timeline-approved.php 1 year ago users-timeline-created.php 1 year ago voxel-comment-liked.php 1 year ago voxel-post-followed.php 1 year ago voxel-post-liked.php 1 year ago voxel-post-quoted.php 1 year ago voxel-post-reposted.php 1 year ago voxel-post-unfollowed.php 1 year ago voxel-user-mentioned-in-comment.php 1 year ago voxel-user-mentioned-in-post.php 1 year ago wall-post-approved.php 1 year ago
order-approved-by-vendor.php
175 lines
1 <?php
2 /**
3 * OrderApprovedByVendor.
4 * php version 5.6
5 *
6 * @category OrderApprovedByVendor
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\Voxel\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Traits\SingletonLoader;
18 use SureTriggers\Integrations\WordPress\WordPress;
19
20 if ( ! class_exists( 'OrderApprovedByVendor' ) ) :
21
22 /**
23 * OrderApprovedByVendor
24 *
25 * @category OrderApprovedByVendor
26 * @package SureTriggers
27 * @author BSF <username@example.com>
28 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
29 * @link https://www.brainstormforce.com/
30 * @since 1.0.0
31 *
32 * @psalm-suppress UndefinedTrait
33 */
34 class OrderApprovedByVendor {
35
36
37 /**
38 * Integration type.
39 *
40 * @var string
41 */
42 public $integration = 'Voxel';
43
44
45 /**
46 * Trigger name.
47 *
48 * @var string
49 */
50 public $trigger = 'voxel_order_approved_by_vendor';
51
52 use SingletonLoader;
53
54
55 /**
56 * Constructor
57 *
58 * @since 1.0.0
59 */
60 public function __construct() {
61 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
62 }
63
64 /**
65 * Register action.
66 *
67 * @param array $triggers trigger data.
68 * @return array
69 */
70 public function register( $triggers ) {
71
72 $triggers[ $this->integration ][ $this->trigger ] = [
73 'label' => __( 'Order Approved By Vendor', 'suretriggers' ),
74 'action' => $this->trigger,
75 'common_action' => 'voxel/app-events/products/orders/vendor:order_approved',
76 'function' => [ $this, 'trigger_listener' ],
77 'priority' => 10,
78 'accepted_args' => 1,
79 ];
80
81 return $triggers;
82 }
83
84 /**
85 * Trigger listener
86 *
87 * @param object $event Event.
88 * @return void
89 */
90 public function trigger_listener( $event ) {
91 if ( ! property_exists( $event, 'order' ) || ! property_exists( $event, 'customer' ) ) {
92 return;
93 }
94 // Get Order.
95 $order = $event->order;
96 $context['id'] = $order->get_id();
97 $context['vendor_id'] = $order->get_vendor_id();
98 $context['details'] = $order->get_details();
99 $context['payment_method'] = $order->get_payment_method_key();
100 $context['tax_amount'] = $order->get_tax_amount();
101 $context['discount_amount'] = $order->get_discount_amount();
102 $context['shipping_amount'] = $order->get_shipping_amount();
103 $context['status'] = $order->get_status();
104 $context['created_at'] = $order->get_created_at();
105 $context['subtotal'] = $order->get_subtotal();
106 $context['total'] = $order->get_total();
107
108 // Get order items.
109 $order_items = $order->get_items();
110 $context['order_item_count'] = $order->get_item_count();
111 foreach ( $order_items as $item ) {
112 $addon_data = [];
113 if ( is_object( $item ) && method_exists( $item, 'get_addons' ) ) {
114 $addons = $item->get_addons();
115 $addon_data = [];
116 if ( $addons && isset( $addons['summary'] ) ) {
117 $addon_data = $addons['summary'];
118 }
119 }
120 $context['order_items'][] = [
121 'id' => $item->get_id(),
122 'type' => $item->get_type(),
123 'currency' => $item->get_currency(),
124 'quantity' => $item->get_quantity(),
125 'subtotal' => $item->get_subtotal(),
126 'product_id' => $item->get_post()->get_id(),
127 'product_label' => $item->get_product_label(),
128 'product_thumbnail_url' => $item->get_product_thumbnail_url(),
129 'product_link' => $item->get_product_link(),
130 'description' => $item->get_product_description(),
131 'addon_data' => $addon_data,
132 ];
133 // If booking item, get booking details.
134 if ( 'booking' === $item->get_type() ) {
135 $details = $item->get_order_page_details();
136 $context['order_items']['booking_type'] = $details['booking']['type'];
137 if ( isset( $details['booking']['count_mode'] ) ) {
138 $context['order_items']['booking_count_mode'] = $details['booking']['count_mode'];
139 }
140 if ( 'date_range' === $details['booking']['type'] ) {
141 $context['order_items']['booking_start_date'] = $details['booking']['start_date'];
142 $context['order_items']['booking_end_date'] = $details['booking']['end_date'];
143 } elseif ( 'single_day' === $details['booking']['type'] ) {
144 $context['order_items']['booking_date'] = $details['booking']['date'];
145 } elseif ( 'timeslots' === $details['booking']['type'] ) {
146 $context['order_items']['booking_date'] = $details['booking']['date'];
147 $context['order_items']['booking_slot_from'] = $details['booking']['slot']['from'];
148 $context['order_items']['booking_slot_to'] = $details['booking']['slot']['to'];
149 }
150 }
151 }
152
153 // Get Customer.
154 $context['customer'] = WordPress::get_user_context( $event->customer->get_id() );
155 // Get Vendor.
156 $context['vendor'] = WordPress::get_user_context( $order->get_vendor_id() );
157
158 AutomationController::sure_trigger_handle_trigger(
159 [
160 'trigger' => $this->trigger,
161 'context' => $context,
162 ]
163 );
164 }
165 }
166
167 /**
168 * Ignore false positive
169 *
170 * @psalm-suppress UndefinedMethod
171 */
172 OrderApprovedByVendor::get_instance();
173
174 endif;
175