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 / amelia / triggers / event-rescheduled.php
suretriggers / src / Integrations / amelia / triggers Last commit date
appointment-booked.php 2 years ago appointment-booking-status-changed.php 2 years ago appointment-cancelled.php 2 years ago appointment-rescheduled.php 2 years ago event-attendee.php 2 months ago event-booking-status-changed.php 1 year ago event-cancelled.php 1 year ago event-rescheduled.php 1 year ago package-purchase-status-updated.php 7 months ago package-purchased.php 7 months ago
event-rescheduled.php
209 lines
1 <?php
2 /**
3 * EventRescheduled.
4 * php version 5.6
5 *
6 * @category EventRescheduled
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\Amelia\Triggers;
15
16 use SureTriggers\Controllers\AutomationController;
17 use SureTriggers\Integrations\WordPress\WordPress;
18 use SureTriggers\Traits\SingletonLoader;
19
20 if ( ! class_exists( 'EventRescheduled' ) ) :
21
22 /**
23 * EventRescheduled
24 *
25 * @category EventRescheduled
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 EventRescheduled {
35
36 /**
37 * Integration type.
38 *
39 * @var string
40 */
41 public $integration = 'Amelia';
42
43 /**
44 * Trigger name.
45 *
46 * @var string
47 */
48 public $trigger = 'amelia_event_rescheduled';
49
50 use SingletonLoader;
51
52 /**
53 * Constructor
54 *
55 * @since 1.0.0
56 */
57 public function __construct() {
58 add_filter( 'sure_trigger_register_trigger', [ $this, 'register' ] );
59 }
60
61 /**
62 * Register action.
63 *
64 * @param array $triggers trigger data.
65 * @return array
66 */
67 public function register( $triggers ) {
68 $triggers[ $this->integration ][ $this->trigger ] = [
69 'label' => __( 'Event Rescheduled', 'suretriggers' ),
70 'action' => $this->trigger,
71 'common_action' => 'AmeliaBookingTimeUpdated',
72 'function' => [ $this, 'trigger_listener' ],
73 'priority' => 10,
74 'accepted_args' => 3,
75 ];
76 return $triggers;
77 }
78
79 /**
80 * Trigger listener
81 *
82 * @param array $args Event Data.
83 * @since 1.0.0
84 *
85 * @return void
86 */
87 public function trigger_listener( $args ) {
88 if ( empty( $args ) ) {
89 return;
90 }
91
92 if ( 'event' !== $args['type'] ) {
93 return;
94 }
95
96 global $wpdb;
97 $event_periods_result = $wpdb->get_results(
98 $wpdb->prepare(
99 'SELECT id
100 FROM ' . $wpdb->prefix . 'amelia_events_periods
101 WHERE eventId = %d',
102 [ $args['id'] ]
103 ),
104 ARRAY_A
105 );
106 if ( ! empty( $event_periods_result ) ) {
107 $ids = wp_list_pluck( $event_periods_result, 'id' );
108 }
109
110 $query = 'SELECT *
111 FROM ' . $wpdb->prefix . 'amelia_customer_bookings as customer
112 INNER JOIN ' . $wpdb->prefix . 'amelia_customer_bookings_to_events_periods as event_period
113 ON customer.id = event_period.customerBookingId';
114 if ( ! empty( $ids ) ) {
115 $query .= $wpdb->prepare(
116 ' WHERE event_period.customerBookingId = ( Select max(id) From ' . $wpdb->prefix . 'amelia_customer_bookings ) AND event_period.eventPeriodId IN (%s)',
117 implode( ',', $ids )
118 );
119 } else {
120 $query .= $wpdb->prepare(
121 ' WHERE event_period.customerBookingId = ( Select max(id) From ' . $wpdb->prefix . 'amelia_customer_bookings ) AND event_period.eventPeriodId = %d',
122 [ $args['id'] ]
123 );
124 }
125 $result = $wpdb->get_row( $query, ARRAY_A ); //phpcs:ignore WordPress.DB.PreparedSQL.NotPrepared
126 $result = isset( $result ) ? $result : [];
127
128 $event = $wpdb->get_row(
129 $wpdb->prepare(
130 'SELECT * FROM ' . $wpdb->prefix . 'amelia_events WHERE id = %d',
131 [ $args['id'] ]
132 ),
133 ARRAY_A
134 );
135 $event = isset( $event ) ? $event : [];
136 $event_tags = $wpdb->get_results(
137 $wpdb->prepare(
138 'SELECT * FROM ' . $wpdb->prefix . 'amelia_events_tags WHERE eventId = %d',
139 [ $args['id'] ]
140 ),
141 ARRAY_A
142 );
143 $tags = [];
144 if ( ! empty( $event_tags ) ) {
145 foreach ( $event_tags as $key => $tag ) {
146 $tags['event_tag'][ $key ] = $tag['name'];
147 }
148 } else {
149 $tags = [];
150 }
151 end( $args['bookings'] );
152 $customer_id = key( $args['bookings'] );
153 $customer_result = $wpdb->get_row(
154 $wpdb->prepare(
155 'SELECT * FROM ' . $wpdb->prefix . 'amelia_users WHERE id = %d',
156 [ $args['bookings'][ $customer_id ]['customerId'] ]
157 ),
158 ARRAY_A
159 );
160 $customer_result = isset( $customer_result ) ? $customer_result : [];
161
162 if ( $args['bookings'][ $customer_id ]['couponId'] ) {
163 $coupon_result = $wpdb->get_row(
164 $wpdb->prepare(
165 'SELECT code AS couponCode, expirationDate AS couponExpirationDate FROM ' . $wpdb->prefix . 'amelia_coupons WHERE id = %d',
166 [ $args['bookings'][ $customer_id ]['couponId'] ]
167 ),
168 ARRAY_A
169 );
170 } else {
171 $coupon_result = [];
172 }
173
174 if ( ! empty( $result['customFields'] ) ) {
175 $custom_fields = json_decode( $result['customFields'], true );
176
177 $fields_arr = [];
178 foreach ( (array) $custom_fields as $fields ) {
179 if ( is_array( $fields ) ) {
180 $fields_arr[ $fields['label'] ] = $fields['value'];
181 }
182 }
183 unset( $result['customFields'] );
184 } else {
185 $fields_arr = [];
186 }
187
188 $context = array_merge( $result, $fields_arr, $event, $customer_result, $coupon_result, $tags );
189 $context['amelia_events_list'] = $args['id'];
190 $context['event_booking_status'] = $args['status'];
191
192 AutomationController::sure_trigger_handle_trigger(
193 [
194 'trigger' => $this->trigger,
195 'context' => $context,
196 ]
197 );
198 }
199 }
200
201 /**
202 * Ignore false positive
203 *
204 * @psalm-suppress UndefinedMethod
205 */
206 EventRescheduled::get_instance();
207
208 endif;
209