PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 7.9.8
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v7.9.8
8.0.4 8.0.3 8.0.1 8.0.2 8.0.0 7.9.9.7 7.9.9.6 7.9.9.5 7.9.9.4 7.9.9.3 7.9.9.2 7.9.9.1 7.9.9 7.9.8 7.9.7 7.9.6 7.9.5 7.9.4 7.9.3 7.9.2 7.9.1 7.9.0 7.8.9 7.8.8 7.8.7 All 46 releases
gamipress / integrations / fluentbooking / includes / triggers.php

triggers.php in GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI 7.9.8, at integrations/fluentbooking/includes/triggers.php

296 lines 12.4 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Triggers
4 *
5 * @package GamiPress\FluentBooking\Triggers
6 * @since 1.0.0
7 */
8
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 /**
13 * Register plugin activity triggers
14 *
15 * @param array $triggers
16 * @return mixed
17 */
18 function gamipress_fluentbooking_activity_triggers( $triggers ) {
19
20 // FluentBooking
21 $triggers[__( 'FluentBooking', 'gamipress' )] = array(
22 // One-to-one meetings
23 // Schedule
24 'gamipress_fluentbooking_schedule_single_meeting' => __( 'Schedule a one-to-one meeting', 'gamipress' ),
25 'gamipress_fluentbooking_schedule_specific_single_meeting' => __( 'Schedule a specific one-to-one meeting', 'gamipress' ),
26 'gamipress_fluentbooking_schedule_host_single_meeting' => __( 'Schedule one-to-one meeting with specific host', 'gamipress' ),
27 // Cancel
28 'gamipress_fluentbooking_cancel_single_meeting' => __( 'Cancel a one-to-one meeting', 'gamipress' ),
29 'gamipress_fluentbooking_cancel_specific_single_meeting' => __( 'Cancel a specific one-to-one meeting', 'gamipress' ),
30 'gamipress_fluentbooking_cancel_host_single_meeting' => __( 'Cancel one-to-one meeting with specific host', 'gamipress' ),
31
32 // Team meetings
33 // Schedule
34 'gamipress_fluentbooking_schedule_team_meeting' => __( 'Schedule a team meeting', 'gamipress' ),
35 'gamipress_fluentbooking_schedule_specific_team_meeting' => __( 'Schedule a specific team meeting', 'gamipress' ),
36 'gamipress_fluentbooking_schedule_host_team_meeting' => __( 'Schedule team meeting with specific host', 'gamipress' ),
37 // Cancel
38 'gamipress_fluentbooking_cancel_team_meeting' => __( 'Cancel a team meeting', 'gamipress' ),
39 'gamipress_fluentbooking_cancel_specific_team_meeting' => __( 'Cancel a specific team meeting', 'gamipress' ),
40 'gamipress_fluentbooking_cancel_host_team_meeting' => __( 'Cancel team meeting with specific host', 'gamipress' ),
41 );
42
43 return $triggers;
44
45 }
46 add_filter( 'gamipress_activity_triggers', 'gamipress_fluentbooking_activity_triggers' );
47
48 /**
49 * Register specific activity triggers
50 *
51 * @since 1.0.0
52 *
53 * @param array $specific_activity_triggers
54 * @return array
55 */
56 function gamipress_fluentbooking_specific_activity_triggers( $specific_activity_triggers ) {
57
58 // Meetings
59 $specific_activity_triggers['gamipress_fluentbooking_schedule_specific_single_meeting'] = array( 'single_meeting' );
60 $specific_activity_triggers['gamipress_fluentbooking_cancel_specific_single_meeting'] = array( 'single_meeting' );
61 $specific_activity_triggers['gamipress_fluentbooking_schedule_specific_team_meeting'] = array( 'team_meeting' );
62 $specific_activity_triggers['gamipress_fluentbooking_cancel_specific_team_meeting'] = array( 'team_meeting' );
63 // Hosts
64 $specific_activity_triggers['gamipress_fluentbooking_schedule_host_single_meeting'] = array( 'hosts' );
65 $specific_activity_triggers['gamipress_fluentbooking_cancel_host_single_meeting'] = array( 'hosts' );
66 $specific_activity_triggers['gamipress_fluentbooking_schedule_host_team_meeting'] = array( 'hosts' );
67 $specific_activity_triggers['gamipress_fluentbooking_cancel_host_team_meeting'] = array( 'hosts' );
68
69 return $specific_activity_triggers;
70 }
71 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_fluentbooking_specific_activity_triggers' );
72
73 /**
74 * Register specific activity triggers labels
75 *
76 * @since 1.0.0
77 *
78 * @param array $specific_activity_trigger_labels
79 * @return array
80 */
81 function gamipress_fluentbooking_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
82
83 // Meetings
84 $specific_activity_trigger_labels['gamipress_fluentbooking_schedule_specific_single_meeting'] = __( 'Schedule for one-to-one %s meeting', 'gamipress' );
85 $specific_activity_trigger_labels['gamipress_fluentbooking_cancel_specific_single_meeting'] = __( 'Cancel for one-to-one %s meeting', 'gamipress' );
86 $specific_activity_trigger_labels['gamipress_fluentbooking_schedule_specific_team_meeting'] = __( 'Schedule for team %s meeting', 'gamipress' );
87 $specific_activity_trigger_labels['gamipress_fluentbooking_cancel_specific_team_meeting'] = __( 'Cancel for team %s meeting', 'gamipress' );
88 // Hosts
89 $specific_activity_trigger_labels['gamipress_fluentbooking_schedule_host_single_meeting'] = __( 'Schedule for one-to-one meeting with %s', 'gamipress' );
90 $specific_activity_trigger_labels['gamipress_fluentbooking_cancel_host_single_meeting'] = __( 'Cancel for one-to-one meeting with %s', 'gamipress' );
91 $specific_activity_trigger_labels['gamipress_fluentbooking_schedule_host_team_meeting'] = __( 'Schedule for team meeting with %s', 'gamipress' );
92 $specific_activity_trigger_labels['gamipress_fluentbooking_cancel_host_team_meeting'] = __( 'Cancel for team meeting with %s', 'gamipress' );
93
94 return $specific_activity_trigger_labels;
95 }
96 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_fluentbooking_specific_activity_trigger_label' );
97
98 /**
99 * Get plugin specific activity trigger post title
100 *
101 * @since 1.0.0
102 *
103 * @param string $post_title
104 * @param integer $specific_id
105 * @param string $trigger_type
106 *
107 * @return string
108 */
109 function gamipress_fluentbooking_specific_activity_trigger_post_title( $post_title, $specific_id, $trigger_type ) {
110
111 switch( $trigger_type ) {
112 // One-to-one meetings
113 case 'gamipress_fluentbooking_schedule_specific_single_meeting':
114 case 'gamipress_fluentbooking_cancel_specific_single_meeting':
115 // Team meetings
116 case 'gamipress_fluentbooking_schedule_specific_team_meeting':
117 case 'gamipress_fluentbooking_cancel_specific_team_meeting':
118 if( absint( $specific_id ) !== 0 ) {
119 // Get the meeting title
120 $meeting_title = gamipress_fluentbooking_get_meeting_title( $specific_id );
121
122 $post_title = $meeting_title;
123 }
124 break;
125 // Hosts
126 case 'gamipress_fluentbooking_schedule_host_single_meeting':
127 case 'gamipress_fluentbooking_cancel_host_single_meeting':
128 case 'gamipress_fluentbooking_schedule_host_team_meeting':
129 case 'gamipress_fluentbooking_cancel_host_team_meeting':
130 if( absint( $specific_id ) !== 0 ) {
131 // Get the host title
132 $host_title = gamipress_fluentbooking_get_host_title( $specific_id );
133
134 $post_title = $host_title;
135 }
136 break;
137 }
138
139 return $post_title;
140
141 }
142 add_filter( 'gamipress_specific_activity_trigger_post_title', 'gamipress_fluentbooking_specific_activity_trigger_post_title', 10, 3 );
143
144 /**
145 * Get plugin specific activity trigger permalink
146 *
147 * @since 1.0.0
148 *
149 * @param string $permalink
150 * @param integer $specific_id
151 * @param string $trigger_type
152 * @param integer $site_id
153 *
154 * @return string
155 */
156 function gamipress_fluentbooking_specific_activity_trigger_permalink( $permalink, $specific_id, $trigger_type, $site_id ) {
157
158 switch( $trigger_type ) {
159 // One-to-one meetings
160 case 'gamipress_fluentbooking_schedule_specific_single_meeting':
161 case 'gamipress_fluentbooking_cancel_specific_single_meeting':
162 // Team meetings
163 case 'gamipress_fluentbooking_schedule_specific_team_meeting':
164 case 'gamipress_fluentbooking_cancel_specific_team_meeting':
165 // Hosts
166 case 'gamipress_fluentbooking_schedule_host_single_meeting':
167 case 'gamipress_fluentbooking_cancel_host_single_meeting':
168 case 'gamipress_fluentbooking_schedule_host_team_meeting':
169 case 'gamipress_fluentbooking_cancel_host_team_meeting':
170 $permalink = '';
171 break;
172 }
173
174 return $permalink;
175
176 }
177 add_filter( 'gamipress_specific_activity_trigger_permalink', 'gamipress_fluentbooking_specific_activity_trigger_permalink', 10, 4 );
178
179 /**
180 * Get user for a given trigger action.
181 *
182 * @since 1.0.0
183 *
184 * @param integer $user_id user ID to override.
185 * @param string $trigger Trigger name.
186 * @param array $args Passed trigger args.
187 * @return integer User ID.
188 */
189 function gamipress_fluentbooking_trigger_get_user_id( $user_id, $trigger, $args ) {
190
191 switch ( $trigger ) {
192 // Meetings
193 case 'gamipress_fluentbooking_schedule_single_meeting':
194 case 'gamipress_fluentbooking_schedule_specific_single_meeting':
195 case 'gamipress_fluentbooking_cancel_single_meeting':
196 case 'gamipress_fluentbooking_cancel_specific_single_meeting':
197 case 'gamipress_fluentbooking_schedule_team_meeting':
198 case 'gamipress_fluentbooking_schedule_specific_team_meeting':
199 case 'gamipress_fluentbooking_cancel_team_meeting':
200 case 'gamipress_fluentbooking_cancel_specific_team_meeting':
201 // Hosts
202 case 'gamipress_fluentbooking_schedule_host_single_meeting':
203 case 'gamipress_fluentbooking_cancel_host_single_meeting':
204 case 'gamipress_fluentbooking_schedule_host_team_meeting':
205 case 'gamipress_fluentbooking_cancel_host_team_meeting':
206 $user_id = $args[1];
207 break;
208 }
209
210 return $user_id;
211
212 }
213 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_fluentbooking_trigger_get_user_id', 10, 3 );
214
215 /**
216 * Get the id for a given specific trigger action.
217 *
218 * @since 1.0.0
219 *
220 * @param integer $specific_id Specific ID to override.
221 * @param string $trigger Trigger name.
222 * @param array $args Passed trigger args.
223 *
224 * @return integer Specific ID.
225 */
226 function gamipress_fluentbooking_specific_trigger_get_id( $specific_id, $trigger, $args ) {
227
228 switch ( $trigger ) {
229 // Meetings
230 case 'gamipress_fluentbooking_schedule_specific_single_meeting':
231 case 'gamipress_fluentbooking_cancel_specific_single_meeting':
232 case 'gamipress_fluentbooking_schedule_specific_team_meeting':
233 case 'gamipress_fluentbooking_cancel_specific_team_meeting':
234 $specific_id = $args[0];
235 break;
236 // Hosts
237 case 'gamipress_fluentbooking_schedule_host_single_meeting':
238 case 'gamipress_fluentbooking_cancel_host_single_meeting':
239 case 'gamipress_fluentbooking_schedule_host_team_meeting':
240 case 'gamipress_fluentbooking_cancel_host_team_meeting':
241 $specific_id = $args[3];
242 break;
243 }
244
245 return $specific_id;
246
247 }
248
249 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_fluentbooking_specific_trigger_get_id', 10, 3 );
250
251 /**
252 * Extended meta data for event trigger logging
253 *
254 * @since 1.0.2
255 *
256 * @param array $log_meta
257 * @param integer $user_id
258 * @param string $trigger
259 * @param integer $site_id
260 * @param array $args
261 *
262 * @return array
263 */
264 function gamipress_fluentbooking_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
265
266 switch ( $trigger ) {
267
268 // Meetings
269 case 'gamipress_fluentbooking_schedule_single_meeting':
270 case 'gamipress_fluentbooking_schedule_specific_single_meeting':
271 case 'gamipress_fluentbooking_cancel_single_meeting':
272 case 'gamipress_fluentbooking_cancel_specific_single_meeting':
273 case 'gamipress_fluentbooking_schedule_team_meeting':
274 case 'gamipress_fluentbooking_schedule_specific_team_meeting':
275 case 'gamipress_fluentbooking_cancel_team_meeting':
276 case 'gamipress_fluentbooking_cancel_specific_team_meeting':
277 // Add the event and booking IDs
278 $log_meta['event_id'] = $args[0];
279 $log_meta['booking_id'] = $args[2];
280 break;
281
282 // Hosts
283 case 'gamipress_fluentbooking_schedule_host_single_meeting':
284 case 'gamipress_fluentbooking_cancel_host_single_meeting':
285 case 'gamipress_fluentbooking_schedule_host_team_meeting':
286 case 'gamipress_fluentbooking_cancel_host_team_meeting':
287 // Add the event and booking IDs
288 $log_meta['event_id'] = $args[0];
289 $log_meta['booking_id'] = $args[2];
290 $log_meta['host_id'] = $args[3];
291 break;
292 }
293
294 return $log_meta;
295 }
296 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_fluentbooking_log_event_trigger_meta_data', 10, 5 );