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 / wp-travel-engine / actions / update-coupon.php
suretriggers / src / Integrations / wp-travel-engine / actions Last commit date
create-coupon.php 11 months ago create-trip.php 6 months ago duplicate-trip.php 6 months ago list-bookings.php 11 months ago list-coupons.php 3 weeks ago list-trips.php 11 months ago retrieve-booking.php 11 months ago retrieve-coupon.php 3 weeks ago retrieve-enquiry.php 2 months ago update-booking-status.php 11 months ago update-coupon.php 3 weeks ago update-trip.php 6 months ago
update-coupon.php
199 lines
1 <?php
2 /**
3 * UpdateCoupon.
4 * php version 5.6
5 *
6 * @category UpdateCoupon
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\WPTravelEngine\Actions;
15
16 use SureTriggers\Integrations\AutomateAction;
17 use SureTriggers\Traits\SingletonLoader;
18
19 /**
20 * UpdateCoupon
21 *
22 * @category UpdateCoupon
23 * @package SureTriggers
24 * @author BSF <username@example.com>
25 * @license https://www.gnu.org/licenses/gpl-3.0.html GPLv3
26 * @link https://www.brainstormforce.com/
27 * @since 1.0.0
28 */
29 class UpdateCoupon extends AutomateAction {
30
31 use SingletonLoader;
32
33 /**
34 * Integration type.
35 *
36 * @var string
37 */
38 public $integration = 'WPTravelEngine';
39
40 /**
41 * Action name.
42 *
43 * @var string
44 */
45 public $action = 'wte_update_coupon';
46
47 /**
48 * Register the action.
49 *
50 * @param array $actions List of registered actions.
51 * @return array Modified list of actions.
52 */
53 public function register( $actions ) {
54 $actions[ $this->integration ][ $this->action ] = [
55 'label' => __( 'Update a Coupon', 'suretriggers' ),
56 'description' => __( 'Update an existing coupon for WP Travel Engine', 'suretriggers' ),
57 'action' => $this->action,
58 'function' => [ $this, '_action_listener' ],
59 ];
60 return $actions;
61 }
62
63 /**
64 * Action listener that updates a coupon post and meta.
65 *
66 * @param int $user_id User ID.
67 * @param int $automation_id Automation ID.
68 * @param array $fields Trigger fields.
69 * @param array $selected_options Selected options for coupon.
70 * @return array Result with status and data or error.
71 */
72 public function _action_listener( $user_id, $automation_id, $fields, $selected_options ) {
73
74 if ( ! function_exists( 'wp_travel_engine_get_settings' ) ) {
75 return [
76 'status' => 'error',
77 'message' => __( 'WP Travel Engine plugin is not active.', 'suretriggers' ),
78 ];
79 }
80
81 if ( empty( $selected_options['coupon_id'] ) ) {
82 return [
83 'status' => 'error',
84 'message' => __( 'Coupon ID is required.', 'suretriggers' ),
85 ];
86 }
87
88 $coupon_id = absint( $selected_options['coupon_id'] );
89 $coupon = get_post( $coupon_id );
90
91 if ( ! $coupon || 'wte-coupon' !== $coupon->post_type ) {
92 return [
93 'status' => 'error',
94 'message' => __( 'Coupon not found.', 'suretriggers' ),
95 ];
96 }
97
98 $post_update = [];
99
100 if ( ! empty( $selected_options['coupon_title'] ) ) {
101 $post_update['post_title'] = sanitize_text_field( $selected_options['coupon_title'] );
102 }
103
104 if ( ! empty( $selected_options['status'] ) ) {
105 $post_update['post_status'] = sanitize_text_field( $selected_options['status'] );
106 }
107
108 if ( ! empty( $post_update ) ) {
109 $post_update['ID'] = $coupon_id;
110 $result = wp_update_post( $post_update, true );
111
112 if ( is_wp_error( $result ) ) {
113 return [
114 'status' => 'error',
115 'message' => $result->get_error_message(),
116 ];
117 }
118 }
119
120 if ( ! empty( $selected_options['coupon_code'] ) ) {
121 update_post_meta( $coupon_id, 'wp_travel_engine_coupon_code', sanitize_text_field( $selected_options['coupon_code'] ) );
122 }
123
124 $coupon_metas_raw = get_post_meta( $coupon_id, 'wp_travel_engine_coupon_metas', true );
125 $coupon_metas = is_array( $coupon_metas_raw ) ? $coupon_metas_raw : [];
126
127 if ( ! isset( $coupon_metas['general'] ) || ! is_array( $coupon_metas['general'] ) ) {
128 $coupon_metas['general'] = [];
129 }
130
131 if ( ! isset( $coupon_metas['restriction'] ) || ! is_array( $coupon_metas['restriction'] ) ) {
132 $coupon_metas['restriction'] = [];
133 }
134
135 if ( ! empty( $selected_options['discount_type'] ) ) {
136 $coupon_metas['general']['coupon_type'] = sanitize_text_field( $selected_options['discount_type'] );
137 }
138
139 if ( isset( $selected_options['discount_value'] ) && '' !== $selected_options['discount_value'] ) {
140 $coupon_metas['general']['coupon_value'] = floatval( $selected_options['discount_value'] );
141 }
142
143 if ( ! empty( $selected_options['start_date'] ) ) {
144 $coupon_metas['general']['coupon_start_date'] = sanitize_text_field( $selected_options['start_date'] );
145 }
146
147 if ( ! empty( $selected_options['expiry_date'] ) ) {
148 $coupon_metas['general']['coupon_expiry_date'] = sanitize_text_field( $selected_options['expiry_date'] );
149 }
150
151 if ( isset( $selected_options['usage_limit'] ) && '' !== $selected_options['usage_limit'] ) {
152 $coupon_metas['restriction']['coupon_limit_number'] = absint( $selected_options['usage_limit'] );
153 }
154
155 if ( ! empty( $selected_options['trip_ids'] ) ) {
156 if ( is_array( $selected_options['trip_ids'] ) ) {
157 if ( isset( $selected_options['trip_ids'][0]['value'] ) ) {
158 $trip_ids = array_map(
159 function( $item ) {
160 return absint( $item['value'] );
161 },
162 $selected_options['trip_ids']
163 );
164 } else {
165 $trip_ids = array_map( 'absint', $selected_options['trip_ids'] );
166 }
167 } else {
168 $trip_ids = array_map( 'absint', array_map( 'trim', explode( ',', $selected_options['trip_ids'] ) ) );
169 }
170 $coupon_metas['restriction']['restricted_trips'] = $trip_ids;
171 }
172
173 update_post_meta( $coupon_id, 'wp_travel_engine_coupon_metas', $coupon_metas );
174
175 $updated_coupon = get_post( $coupon_id );
176 $coupon_code_meta = get_post_meta( $coupon_id, 'wp_travel_engine_coupon_code', true );
177 $general = $coupon_metas['general'];
178 $restriction = $coupon_metas['restriction'];
179
180 return [
181 'status' => 'success',
182 'data' => [
183 'coupon_id' => $coupon_id,
184 'coupon_code' => is_string( $coupon_code_meta ) ? $coupon_code_meta : '',
185 'coupon_title' => $updated_coupon instanceof \WP_Post ? html_entity_decode( $updated_coupon->post_title ) : '',
186 'discount_type' => isset( $general['coupon_type'] ) ? $general['coupon_type'] : '',
187 'discount_value' => isset( $general['coupon_value'] ) ? $general['coupon_value'] : '',
188 'start_date' => isset( $general['coupon_start_date'] ) ? $general['coupon_start_date'] : '',
189 'expiry_date' => isset( $general['coupon_expiry_date'] ) ? $general['coupon_expiry_date'] : '',
190 'usage_limit' => isset( $restriction['coupon_limit_number'] ) ? $restriction['coupon_limit_number'] : '',
191 'trip_ids' => isset( $restriction['restricted_trips'] ) ? $restriction['restricted_trips'] : [],
192 'status' => $updated_coupon instanceof \WP_Post ? $updated_coupon->post_status : '',
193 ],
194 ];
195 }
196 }
197
198 UpdateCoupon::get_instance();
199