PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 8.0.5
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v8.0.5
8.0.5 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 All 47 releases
← All changes | integrations/fluentbooking/includes/triggers.php +296 -0 7.8.8 → 8.0.5 View file →
@@ -1,0 +1,296 @@
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 );