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 / modern-events-calendar / modern-events-calendar.php
suretriggers / src / Integrations / modern-events-calendar Last commit date
actions 11 months ago triggers 1 year ago modern-events-calendar.php 1 year ago
modern-events-calendar.php
226 lines
1 <?php
2 /**
3 * ModernEventsCalendar core integrations file
4 *
5 * @since 1.0.0
6 * @package SureTrigger
7 */
8
9 namespace SureTriggers\Integrations\ModernEventsCalendar;
10
11 use SureTriggers\Controllers\IntegrationsController;
12 use SureTriggers\Integrations\Integrations;
13 use SureTriggers\Traits\SingletonLoader;
14
15 /**
16 * Class SureTrigger
17 *
18 * @package SureTriggers\Integrations\ModernEventsCalendar
19 */
20 class ModernEventsCalendar extends Integrations {
21
22 use SingletonLoader;
23
24 /**
25 * ID
26 *
27 * @var string
28 */
29 protected $id = 'ModernEventsCalendar';
30
31 /**
32 * SureTrigger constructor.
33 */
34 public function __construct() {
35 $this->name = __( 'Modern Events Calendar', 'suretriggers' );
36 $this->description = __( 'Best WordPress Event Calendar Plugin.', 'suretriggers' );
37 $this->icon_url = SURE_TRIGGERS_URL . 'assets/icons/moderneventscalendar.svg';
38
39 parent::__construct();
40 }
41
42 /**
43 * Get Event context data.
44 *
45 * @param int $booking_id Event Booking ID.
46 *
47 * @return array
48 */
49 public static function get_event_context( $booking_id ) {
50 $event_id = get_post_meta( $booking_id, 'mec_event_id', true );
51 $event_id = is_numeric( $event_id ) ? (int) $event_id : '';
52 if ( ! $event_id ) {
53 return [];
54 }
55
56 $event = get_post( $event_id );
57
58 // Event booking info.
59 $event_booking = [];
60 $event_booking['title'] = get_the_title( $booking_id );
61 $event_booking['transaction_id'] = get_post_meta( $booking_id, 'mec_transaction_id', true );
62 $event_booking['amount_payable'] = get_post_meta( $booking_id, 'mec_payable', true );
63 $event_booking['price'] = get_post_meta( $booking_id, 'mec_price', true );
64 $event_booking['time'] = get_post_meta( $booking_id, 'mec_booking_time', true );
65 $event_booking['payment_gateway'] = get_post_meta( $booking_id, 'mec_gateway_label', true );
66
67 $is_confirmed = get_post_meta( $booking_id, 'mec_confirmed', true );
68 $event_booking['confirmation_status'] = 'Pending';
69 if ( 1 == $is_confirmed ) {
70 $event_booking['confirmation_status'] = 'Confirmed';
71 } elseif ( -1 == $is_confirmed ) {
72 $event_booking['confirmation_status'] = 'Rejected';
73 }
74
75 $is_verified = get_post_meta( $booking_id, 'mec_verified', true );
76 $event_booking['verification_status'] = 'Waiting';
77 if ( 1 == $is_verified ) {
78 $event_booking['verification_status'] = 'Verified';
79 } elseif ( -1 == $is_verified ) {
80 $event_booking['verification_status'] = 'Canceled';
81 }
82
83 // Event attendees.
84 $event_attendees = [];
85 $attendees = get_post_meta( $booking_id, 'mec_attendees', true );
86 if ( is_array( $attendees ) && ! empty( $attendees ) ) {
87 $event_booking['attendees_count'] = count( $attendees );
88 foreach ( $attendees as $attendee ) {
89 $event_attendees[] = [
90 'id' => $attendee['id'],
91 'email' => $attendee['email'],
92 'name' => $attendee['name'],
93 ];
94 }
95 }
96
97 // Event tickets.
98 $event_tickets = [];
99 $tickets = get_post_meta( $event_id, 'mec_tickets', true );
100 if ( is_array( $tickets ) && ! empty( $tickets ) ) {
101 foreach ( $tickets as $ticket ) {
102 $event_tickets[] = [
103 'id' => $ticket['id'],
104 'name' => $ticket['name'],
105 'description' => $ticket['description'],
106 'price' => $ticket['price'],
107 'price_label' => $ticket['price_label'],
108 'limit' => $ticket['limit'],
109 ];
110 }
111 }
112
113 // Start date time.
114 $event_start_date_time = get_post_meta( $event_id, 'mec_start_datetime', true );
115
116 $start_date = $event_start_date_time;
117 $start_time = $event_start_date_time;
118
119 if ( is_string( $event_start_date_time ) ) {
120 $start_date = gmdate( 'F j, Y', (int) strtotime( $event_start_date_time ) );
121 $start_time = gmdate( 'g:i A', (int) strtotime( $event_start_date_time ) );
122 }
123
124 // End date time.
125 $event_end_date_time = get_post_meta( $event_id, 'mec_end_datetime', true );
126
127 $end_date = $event_end_date_time;
128 $end_time = $event_end_date_time;
129
130 if ( is_string( $event_end_date_time ) ) {
131 $end_date = gmdate( 'F j, Y', (int) strtotime( $event_end_date_time ) );
132 $end_time = gmdate( 'g:i A', (int) strtotime( $event_end_date_time ) );
133 }
134
135 // Event categories.
136 $event_categories = null;
137 $categories = get_the_terms( $event_id, 'mec_category' );
138
139 if ( ! empty( $categories ) && ! is_wp_error( $categories ) ) {
140 $category_names = [];
141
142 // Loop through the terms and collect category names.
143 foreach ( $categories as $category ) {
144 $category_names[] = $category->name;
145 }
146
147 // Create a comma-separated string of category names.
148 $event_categories = implode( ', ', $category_names );
149 }
150
151 return [
152 'event_id' => $event_id,
153 'title' => get_the_title( $event_id ),
154 'description' => isset( $event->post_content ) ? $event->post_content : null,
155 'categories' => $event_categories,
156 'start_date' => $start_date,
157 'start_time' => $start_time,
158 'end_date' => $end_date,
159 'end_time' => $end_time,
160 'location' => self::get_event_location( $event_id ),
161 'organizer' => self::get_event_organizer( $event_id ),
162 'cost' => get_post_meta( $event_id, 'mec_cost', true ),
163 'featured_image_id' => get_post_thumbnail_id( $event_id ),
164 'featured_image_url' => get_the_post_thumbnail_url( $event_id ),
165 'tickets' => $event_tickets,
166 'attendees' => $event_attendees,
167 'booking' => $event_booking,
168 ];
169 }
170
171 /**
172 * Returns the Event Organizer.
173 *
174 * @param int $event_id Event ID.
175 * @return string|null
176 */
177 public static function get_event_organizer( $event_id ) {
178 $organizer_id = get_post_meta( $event_id, 'mec_organizer_id', true );
179
180 if ( empty( $organizer_id ) || ! is_numeric( $organizer_id ) ) {
181 return null;
182 }
183
184 $organizer_term = get_term( (int) $organizer_id, 'mec_organizer' );
185
186 if ( is_wp_error( $organizer_term ) || ! $organizer_term || '' === $organizer_term->name ) {
187 return null;
188 }
189
190 return $organizer_term->name;
191 }
192
193 /**
194 * Returns the location of the event.
195 *
196 * @param int $event_id Event ID.
197 * @return string|null
198 */
199 public static function get_event_location( $event_id ) {
200 $location_id = get_post_meta( $event_id, 'mec_location_id', true );
201
202 if ( empty( $location_id ) || ! is_numeric( $location_id ) ) {
203 return null;
204 }
205
206 $location_term = get_term( (int) $location_id, 'mec_location' );
207
208 if ( is_wp_error( $location_term ) || ! $location_term || '' === $location_term->name ) {
209 return null;
210 }
211
212 return $location_term->name;
213 }
214
215 /**
216 * Is Plugin depended on plugin is installed or not.
217 *
218 * @return bool
219 */
220 public function is_plugin_installed() {
221 return defined( 'MEC_ABSPATH' );
222 }
223 }
224
225 IntegrationsController::register( ModernEventsCalendar::class );
226