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 / appointment-cancelled.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
appointment-cancelled.php
188 lines
1 <?php
2 /**
3 * AppointmentCancelled.
4 * php version 5.6
5 *
6 * @category AppointmentCancelled
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( 'AppointmentCancelled' ) ) :
21
22 /**
23 * AppointmentCancelled
24 *
25 * @category AppointmentCancelled
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 AppointmentCancelled {
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_appointment_cancelled';
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' => __( 'Appointment Cancelled', 'suretriggers' ),
70 'action' => $this->trigger,
71 'common_action' => 'AmeliaBookingCanceled',
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 Appointment 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 ( 'appointment' !== $args['type'] ) {
93 return;
94 }
95
96 global $wpdb;
97
98 $result = $wpdb->get_row(
99 $wpdb->prepare(
100 'SELECT appointments.*, customer.*
101 FROM ' . $wpdb->prefix . 'amelia_customer_bookings as customer
102 INNER JOIN ' . $wpdb->prefix . 'amelia_appointments as appointments
103 ON customer.appointmentId=appointments.id
104 WHERE appointments.status = %s AND customer.appointmentId = %d AND appointments.serviceId = %d',
105 [ 'canceled', $args['id'], $args['serviceId'] ]
106 ),
107 ARRAY_A
108 );
109
110 $payment_result = $wpdb->get_row(
111 $wpdb->prepare(
112 'SELECT * FROM ' . $wpdb->prefix . 'amelia_payments WHERE customerBookingId = %d',
113 [ $args['bookings'][0]['id'] ]
114 ),
115 ARRAY_A
116 );
117
118 $customer_result = $wpdb->get_row(
119 $wpdb->prepare(
120 'SELECT * FROM ' . $wpdb->prefix . 'amelia_users WHERE id = %d',
121 [ $args['bookings'][0]['customerId'] ]
122 ),
123 ARRAY_A
124 );
125
126 $service_result = $wpdb->get_row(
127 $wpdb->prepare(
128 'SELECT name AS serviceName, description AS serviceDescription, categoryId FROM ' . $wpdb->prefix . 'amelia_services WHERE id = %d',
129 [ $args['serviceId'] ]
130 ),
131 ARRAY_A
132 );
133
134 $category_result = $wpdb->get_row(
135 $wpdb->prepare(
136 'SELECT name AS categoryName FROM ' . $wpdb->prefix . 'amelia_categories WHERE id = %d',
137 [ $service_result['categoryId'] ]
138 ),
139 ARRAY_A
140 );
141
142 if ( isset( $args['bookings'][0]['couponId'] ) ) {
143 $coupon_result = $wpdb->get_row(
144 $wpdb->prepare(
145 'SELECT code AS couponCode, expirationDate AS couponExpirationDate FROM ' . $wpdb->prefix . 'amelia_coupons WHERE id = %d',
146 [ $args['bookings'][0]['couponId'] ]
147 ),
148 ARRAY_A
149 );
150 } else {
151 $coupon_result = [];
152 }
153
154 if ( ! empty( $result['customFields'] ) ) {
155 $custom_fields = json_decode( $result['customFields'], true );
156
157 $fields_arr = [];
158 foreach ( (array) $custom_fields as $fields ) {
159 if ( is_array( $fields ) ) {
160 $fields_arr[ $fields['label'] ] = $fields['value'];
161 }
162 }
163 unset( $result['customFields'] );
164 } else {
165 $fields_arr = [];
166 }
167
168 $context = array_merge( $result, $fields_arr, $payment_result, $customer_result, $service_result, $category_result, $coupon_result );
169 $context['amelia_service_list'] = $args['appointment']['serviceId'];
170
171 AutomationController::sure_trigger_handle_trigger(
172 [
173 'trigger' => $this->trigger,
174 'context' => $context,
175 ]
176 );
177 }
178 }
179
180 /**
181 * Ignore false positive
182 *
183 * @psalm-suppress UndefinedMethod
184 */
185 AppointmentCancelled::get_instance();
186
187 endif;
188