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 / fluentcommunity / includes / triggers.php

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

478 lines 22.0 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\FluentCommunity\Triggers
6 * @since 1.0.0
7 */
8
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 /**
13 * Register plugin specific triggers
14 *
15 * @since 1.0.0
16 *
17 * @param array $triggers
18 * @return mixed
19 */
20 function gamipress_fluentcommunity_activity_triggers( $triggers ) {
21
22 // Spaces
23 $triggers[__( 'FluentCommunity Spaces', 'gamipress' )] = array(
24 // Publish post
25 'gamipress_fluentcommunity_publish_post' => __( 'Publish a post in any space', 'gamipress' ),
26 'gamipress_fluentcommunity_specific_publish_post' => __( 'Publish a post in a specific space', 'gamipress' ),
27 // Delete post
28 'gamipress_fluentcommunity_delete_post' => __( 'Remove a post from any space', 'gamipress' ),
29 'gamipress_fluentcommunity_specific_delete_post' => __( 'Remove a post from a specific space', 'gamipress' ),
30 // React post
31 'gamipress_fluentcommunity_react_post' => __( 'React a post of any space', 'gamipress' ),
32 'gamipress_fluentcommunity_specific_react_post' => __( 'React a post of specific space', 'gamipress' ),
33 // Request join space
34 'gamipress_fluentcommunity_request_join_space' => __( 'Request to join any space', 'gamipress' ),
35 'gamipress_fluentcommunity_request_join_specific_space' => __( 'Request to join specific space', 'gamipress' ),
36 // Join space
37 'gamipress_fluentcommunity_join_space' => __( 'Join any space', 'gamipress' ),
38 'gamipress_fluentcommunity_join_specific_space' => __( 'Join a specific space', 'gamipress' ),
39 // Leave space
40 'gamipress_fluentcommunity_leave_space' => __( 'Leave any space', 'gamipress' ),
41 'gamipress_fluentcommunity_leave_specific_space' => __( 'Leave a specific space', 'gamipress' ),
42 // Add comment
43 'gamipress_fluentcommunity_add_comment' => __( 'Add a comment in any space', 'gamipress' ),
44 'gamipress_fluentcommunity_specific_add_comment' => __( 'Add a comment in a specific space', 'gamipress' ),
45 // Delete comment
46 'gamipress_fluentcommunity_delete_comment' => __( 'Delete a comment in any space', 'gamipress' ),
47 'gamipress_fluentcommunity_specific_delete_comment' => __( 'Delete a comment in a specific space', 'gamipress' ),
48 // Create space
49 'gamipress_fluentcommunity_create_space' => __( 'Create a space', 'gamipress' ),
50 // Delete space
51 'gamipress_fluentcommunity_delete_space' => __( 'Delete any space', 'gamipress' ),
52 'gamipress_fluentcommunity_delete_specific_space' => __( 'Delete a specific space', 'gamipress' ),
53 );
54
55 // Courses
56 $triggers[__( 'FluentCommunity Courses', 'gamipress' )] = array(
57 // Complete course
58 'gamipress_fluentcommunity_complete_course' => __( 'Complete any course', 'gamipress' ),
59 'gamipress_fluentcommunity_complete_specific_course' => __( 'Complete a specific course', 'gamipress' ),
60 // Enroll course
61 'gamipress_fluentcommunity_enroll_course' => __( 'Enroll in any course', 'gamipress' ),
62 'gamipress_fluentcommunity_enroll_specific_course' => __( 'Enroll in a specific course', 'gamipress' ),
63 // Unroll course
64 'gamipress_fluentcommunity_unroll_course' => __( 'Unroll from any course', 'gamipress' ),
65 'gamipress_fluentcommunity_unroll_specific_course' => __( 'Unroll from a specific course', 'gamipress' ),
66 // Create course
67 'gamipress_fluentcommunity_create_course' => __( 'Create a course', 'gamipress' ),
68 // Delete course
69 'gamipress_fluentcommunity_delete_course' => __( 'Delete any course', 'gamipress' ),
70 'gamipress_fluentcommunity_delete_specific_course' => __( 'Delete a specific course', 'gamipress' ),
71
72 );
73
74 // Quizzes
75 $triggers[__( 'FluentCommunity Quizzes', 'gamipress' )] = array(
76 // Attempt quiz
77 'gamipress_fluentcommunity_attempt_quiz' => __( 'Attempt any quiz', 'gamipress' ),
78 'gamipress_fluentcommunity_attempt_specific_quiz' => __( 'Attempt a specific quiz', 'gamipress' ),
79 // Pass quiz
80 'gamipress_fluentcommunity_pass_quiz' => __( 'Pass any quiz', 'gamipress' ),
81 'gamipress_fluentcommunity_pass_specific_quiz' => __( 'Pass a specific quiz', 'gamipress' ),
82 // Fail quiz
83 'gamipress_fluentcommunity_fail_quiz' => __( 'Fail any quiz', 'gamipress' ),
84 'gamipress_fluentcommunity_fail_specific_quiz' => __( 'Fail a specific quiz', 'gamipress' ),
85
86 );
87
88 return $triggers;
89
90 }
91 add_filter( 'gamipress_activity_triggers', 'gamipress_fluentcommunity_activity_triggers' );
92
93 /**
94 * Register plugin specific activity triggers
95 *
96 * @since 1.0.0
97 *
98 * @param array $specific_activity_triggers
99 * @return array
100 */
101 function gamipress_fluentcommunity_specific_activity_triggers( $specific_activity_triggers ) {
102
103 // Spaces
104 $specific_activity_triggers['gamipress_fluentcommunity_specific_publish_post'] = array( 'fluentcommunity_spaces' );
105 $specific_activity_triggers['gamipress_fluentcommunity_specific_delete_post'] = array( 'fluentcommunity_spaces' );
106 $specific_activity_triggers['gamipress_fluentcommunity_specific_react_post'] = array( 'fluentcommunity_spaces' );
107 $specific_activity_triggers['gamipress_fluentcommunity_request_join_specific_space'] = array( 'fluentcommunity_spaces' );
108 $specific_activity_triggers['gamipress_fluentcommunity_join_specific_space'] = array( 'fluentcommunity_spaces' );
109 $specific_activity_triggers['gamipress_fluentcommunity_leave_specific_space'] = array( 'fluentcommunity_spaces' );
110 $specific_activity_triggers['gamipress_fluentcommunity_specific_add_comment'] = array( 'fluentcommunity_spaces' );
111 $specific_activity_triggers['gamipress_fluentcommunity_specific_delete_comment'] = array( 'fluentcommunity_spaces' );
112 $specific_activity_triggers['gamipress_fluentcommunity_delete_specific_space'] = array( 'fluentcommunity_spaces' );
113
114 // Courses
115 $specific_activity_triggers['gamipress_fluentcommunity_complete_specific_course'] = array( 'fluentcommunity_courses' );
116 $specific_activity_triggers['gamipress_fluentcommunity_enroll_specific_course'] = array( 'fluentcommunity_courses' );
117 $specific_activity_triggers['gamipress_fluentcommunity_unroll_specific_course'] = array( 'fluentcommunity_courses' );
118 $specific_activity_triggers['gamipress_fluentcommunity_delete_specific_course'] = array( 'fluentcommunity_courses' );
119
120 // Quizzes
121 $specific_activity_triggers['gamipress_fluentcommunity_attempt_specific_quiz'] = array( 'fluentcommunity_quizzes' );
122 $specific_activity_triggers['gamipress_fluentcommunity_pass_specific_quiz'] = array( 'fluentcommunity_quizzes' );
123 $specific_activity_triggers['gamipress_fluentcommunity_fail_specific_quiz'] = array( 'fluentcommunity_quizzes' );
124
125 return $specific_activity_triggers;
126
127 }
128 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_fluentcommunity_specific_activity_triggers' );
129
130 /**
131 * Register plugin specific activity triggers labels
132 *
133 * @since 1.0.0
134 *
135 * @param array $specific_activity_trigger_labels
136 * @return array
137 */
138 function gamipress_fluentcommunity_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
139
140 // Spaces
141 $specific_activity_trigger_labels['gamipress_fluentcommunity_specific_publish_post'] = __( 'Publish a post in %s space', 'gamipress' );
142 $specific_activity_trigger_labels['gamipress_fluentcommunity_specific_delete_post'] = __( 'Remove a post from %s space', 'gamipress' );
143 $specific_activity_trigger_labels['gamipress_fluentcommunity_specific_react_post'] = __( 'React a post of %s space', 'gamipress' );
144 $specific_activity_trigger_labels['gamipress_fluentcommunity_request_join_specific_space'] = __( 'Request to join %s space', 'gamipress' );
145 $specific_activity_trigger_labels['gamipress_fluentcommunity_join_specific_space'] = __( 'Join %s space', 'gamipress' );
146 $specific_activity_trigger_labels['gamipress_fluentcommunity_leave_specific_space'] = __( 'Leave %s space', 'gamipress' );
147 $specific_activity_trigger_labels['gamipress_fluentcommunity_specific_add_comment'] = __( 'Add a comment in %s space', 'gamipress' );
148 $specific_activity_trigger_labels['gamipress_fluentcommunity_specific_delete_comment'] = __( 'Delete a comment in %s space', 'gamipress' );
149 $specific_activity_trigger_labels['gamipress_fluentcommunity_delete_specific_space'] = __( 'Delete %s space', 'gamipress' );
150
151 // Courses
152 $specific_activity_trigger_labels['gamipress_fluentcommunity_complete_specific_course'] = __( 'Complete %s course', 'gamipress' );
153 $specific_activity_trigger_labels['gamipress_fluentcommunity_enroll_specific_course'] = __( 'Enroll in %s course', 'gamipress' );
154 $specific_activity_trigger_labels['gamipress_fluentcommunity_unroll_specific_course'] = __( 'Unroll from %s course', 'gamipress' );
155 $specific_activity_trigger_labels['gamipress_fluentcommunity_delete_specific_course'] = __( 'Delete %s course', 'gamipress' );
156
157 // Quizzes
158 $specific_activity_trigger_labels['gamipress_fluentcommunity_attempt_specific_quiz'] = __( 'Attempt %s quiz', 'gamipress' );
159 $specific_activity_trigger_labels['gamipress_fluentcommunity_pass_specific_quiz'] = __( 'Pass %s quiz', 'gamipress' );
160 $specific_activity_trigger_labels['gamipress_fluentcommunity_fail_specific_quiz'] = __( 'Fail %s quiz', 'gamipress' );
161
162 return $specific_activity_trigger_labels;
163 }
164 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_fluentcommunity_specific_activity_trigger_label' );
165
166 /**
167 * Get plugin specific activity trigger post title
168 *
169 * @since 1.0.0
170 *
171 * @param string $post_title
172 * @param integer $specific_id
173 * @param string $trigger_type
174 *
175 * @return string
176 */
177 function gamipress_fluentcommunity_specific_activity_trigger_post_title( $post_title, $specific_id, $trigger_type ) {
178
179 switch( $trigger_type ) {
180 case 'gamipress_fluentcommunity_specific_publish_post':
181 case 'gamipress_fluentcommunity_specific_delete_post':
182 case 'gamipress_fluentcommunity_specific_react_post':
183 case 'gamipress_fluentcommunity_request_join_specific_space':
184 case 'gamipress_fluentcommunity_join_specific_space':
185 case 'gamipress_fluentcommunity_leave_specific_space':
186 case 'gamipress_fluentcommunity_specific_add_comment':
187 case 'gamipress_fluentcommunity_specific_delete_comment':
188 case 'gamipress_fluentcommunity_delete_specific_space':
189 if( absint( $specific_id ) !== 0 ) {
190
191 // Get the space title
192 $space_title = gamipress_fluentcommunity_get_space_title( $specific_id );
193
194 $post_title = $space_title;
195 }
196 break;
197 // Courses
198 case 'gamipress_fluentcommunity_complete_specific_course':
199 case 'gamipress_fluentcommunity_enroll_specific_course':
200 case 'gamipress_fluentcommunity_unroll_specific_course':
201 case 'gamipress_fluentcommunity_delete_specific_course':
202 if( absint( $specific_id ) !== 0 ) {
203
204 // Get the course title
205 $course_title = gamipress_fluentcommunity_get_course_title( $specific_id );
206
207 $post_title = $course_title;
208 }
209 break;
210 // Quizzes
211 case 'gamipress_fluentcommunity_attempt_specific_quiz':
212 case 'gamipress_fluentcommunity_pass_specific_quiz':
213 case 'gamipress_fluentcommunity_fail_specific_quiz':
214 if( absint( $specific_id ) !== 0 ) {
215
216 // Get the quiz title
217 $quiz_title = gamipress_fluentcommunity_get_quiz_title( $specific_id );
218
219 $post_title = $quiz_title;
220 }
221 break;
222 }
223
224 return $post_title;
225
226 }
227 add_filter( 'gamipress_specific_activity_trigger_post_title', 'gamipress_fluentcommunity_specific_activity_trigger_post_title', 10, 3 );
228
229 /**
230 * Get plugin specific activity trigger permalink
231 *
232 * @since 1.0.0
233 *
234 * @param string $permalink
235 * @param integer $specific_id
236 * @param string $trigger_type
237 * @param integer $site_id
238 *
239 * @return string
240 */
241 function gamipress_fluentcommunity_specific_activity_trigger_permalink( $permalink, $specific_id, $trigger_type, $site_id ) {
242
243 switch( $trigger_type ) {
244 case 'gamipress_fluentcommunity_specific_publish_post':
245 case 'gamipress_fluentcommunity_specific_delete_post':
246 case 'gamipress_fluentcommunity_specific_react_post':
247 case 'gamipress_fluentcommunity_request_join_specific_space':
248 case 'gamipress_fluentcommunity_join_specific_space':
249 case 'gamipress_fluentcommunity_leave_specific_space':
250 case 'gamipress_fluentcommunity_specific_add_comment':
251 case 'gamipress_fluentcommunity_specific_delete_comment':
252 case 'gamipress_fluentcommunity_delete_specific_space':
253 // Courses
254 case 'gamipress_fluentcommunity_complete_specific_course':
255 case 'gamipress_fluentcommunity_enroll_specific_course':
256 case 'gamipress_fluentcommunity_unroll_specific_course':
257 case 'gamipress_fluentcommunity_delete_specific_course':
258 // Quizzes
259 case 'gamipress_fluentcommunity_attempt_specific_quiz':
260 case 'gamipress_fluentcommunity_pass_specific_quiz':
261 case 'gamipress_fluentcommunity_fail_specific_quiz':
262 $permalink = '';
263 break;
264 }
265
266 return $permalink;
267
268 }
269 add_filter( 'gamipress_specific_activity_trigger_permalink', 'gamipress_fluentcommunity_specific_activity_trigger_permalink', 10, 4 );
270
271 /**
272 * Get user for a fluentcommunityn trigger action.
273 *
274 * @since 1.0.0
275 *
276 * @param integer $user_id user ID to override.
277 * @param string $trigger Trigger name.
278 * @param array $args Passed trigger args.
279 * @return integer User ID.
280 */
281 function gamipress_fluentcommunity_trigger_get_user_id( $user_id, $trigger, $args ) {
282
283 switch ( $trigger ) {
284 // Spaces
285 // Publish post
286 case 'gamipress_fluentcommunity_publish_post':
287 case 'gamipress_fluentcommunity_specific_publish_post':
288 // Delete post
289 case 'gamipress_fluentcommunity_delete_post':
290 case 'gamipress_fluentcommunity_specific_delete_post':
291 // React post
292 case 'gamipress_fluentcommunity_react_post':
293 case 'gamipress_fluentcommunity_specific_react_post':
294 // Request join space
295 case 'gamipress_fluentcommunity_request_join_space':
296 case 'gamipress_fluentcommunity_request_join_specific_space':
297 // Join space
298 case 'gamipress_fluentcommunity_join_space':
299 case 'gamipress_fluentcommunity_join_specific_space':
300 // Leave space
301 case 'gamipress_fluentcommunity_leave_space':
302 case 'gamipress_fluentcommunity_leave_specific_space':
303 // Add comment
304 case 'gamipress_fluentcommunity_add_comment':
305 case 'gamipress_fluentcommunity_specific_add_comment':
306 // Delete comment
307 case 'gamipress_fluentcommunity_delete_comment':
308 case 'gamipress_fluentcommunity_specific_delete_comment':
309 // Create space
310 case 'gamipress_fluentcommunity_create_space':
311 // Delete space
312 case 'gamipress_fluentcommunity_delete_space':
313 case 'gamipress_fluentcommunity_delete_specific_space':
314
315 // Courses
316 // Complete course
317 case 'gamipress_fluentcommunity_complete_course':
318 case 'gamipress_fluentcommunity_complete_specific_course':
319 // Enroll course
320 case 'gamipress_fluentcommunity_enroll_course':
321 case 'gamipress_fluentcommunity_enroll_specific_course':
322 // Unroll course
323 case 'gamipress_fluentcommunity_unroll_course':
324 case 'gamipress_fluentcommunity_unroll_specific_course':
325 // Create course
326 case 'gamipress_fluentcommunity_create_course':
327 // Delete course
328 case 'gamipress_fluentcommunity_delete_course':
329 case 'gamipress_fluentcommunity_delete_specific_course':
330
331 // Quizzes
332 // Attempt quiz
333 case 'gamipress_fluentcommunity_attempt_quiz':
334 case 'gamipress_fluentcommunity_attempt_specific_quiz':
335 // Pass quiz
336 case 'gamipress_fluentcommunity_pass_quiz':
337 case 'gamipress_fluentcommunity_pass_specific_quiz':
338 // Fail quiz
339 case 'gamipress_fluentcommunity_fail_quiz':
340 case 'gamipress_fluentcommunity_fail_specific_quiz':
341 $user_id = $args[1];
342 break;
343 }
344
345 return $user_id;
346
347 }
348 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_fluentcommunity_trigger_get_user_id', 10, 3 );
349
350 /**
351 * Get the id for a fluentcommunityn specific trigger action.
352 *
353 * @since 1.0.0
354 *
355 * @param integer $specific_id Specific ID.
356 * @param string $trigger Trigger name.
357 * @param array $args Passed trigger args.
358 *
359 * @return integer Specific ID.
360 */
361 function gamipress_fluentcommunity_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
362
363 switch ( $trigger ) {
364 // Spaces
365 case 'gamipress_fluentcommunity_specific_publish_post':
366 case 'gamipress_fluentcommunity_specific_delete_post':
367 case 'gamipress_fluentcommunity_specific_react_post':
368 case 'gamipress_fluentcommunity_request_join_specific_space':
369 case 'gamipress_fluentcommunity_join_specific_space':
370 case 'gamipress_fluentcommunity_leave_specific_space':
371 case 'gamipress_fluentcommunity_specific_add_comment':
372 case 'gamipress_fluentcommunity_specific_delete_comment':
373 case 'gamipress_fluentcommunity_delete_specific_space':
374
375 // Courses
376 case 'gamipress_fluentcommunity_complete_specific_course':
377 case 'gamipress_fluentcommunity_enroll_specific_course':
378 case 'gamipress_fluentcommunity_unroll_specific_course':
379 case 'gamipress_fluentcommunity_delete_specific_course':
380
381 // Quizzes
382 case 'gamipress_fluentcommunity_attempt_specific_quiz':
383 case 'gamipress_fluentcommunity_pass_specific_quiz':
384 case 'gamipress_fluentcommunity_fail_specific_quiz':
385 $specific_id = $args[0];
386 break;
387 }
388
389 return $specific_id;
390 }
391 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_fluentcommunity_specific_trigger_get_id', 10, 3 );
392
393 /**
394 * Extended meta data for event trigger logging
395 *
396 * @since 1.0.0
397 *
398 * @param array $log_meta
399 * @param integer $user_id
400 * @param string $trigger
401 * @param integer $site_id
402 * @param array $args
403 *
404 * @return array
405 */
406 function gamipress_fluentcommunity_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
407
408 switch ( $trigger ) {
409 // Spaces
410 // Publish post
411 case 'gamipress_fluentcommunity_publish_post':
412 case 'gamipress_fluentcommunity_specific_publish_post':
413 // Delete post
414 case 'gamipress_fluentcommunity_delete_post':
415 case 'gamipress_fluentcommunity_specific_delete_post':
416 // React post
417 case 'gamipress_fluentcommunity_react_post':
418 case 'gamipress_fluentcommunity_specific_react_post':
419 // Request join space
420 case 'gamipress_fluentcommunity_request_join_space':
421 case 'gamipress_fluentcommunity_request_join_specific_space':
422 // Join space
423 case 'gamipress_fluentcommunity_join_space':
424 case 'gamipress_fluentcommunity_join_specific_space':
425 // Leave space
426 case 'gamipress_fluentcommunity_leave_space':
427 case 'gamipress_fluentcommunity_leave_specific_space':
428 // Add comment
429 case 'gamipress_fluentcommunity_add_comment':
430 case 'gamipress_fluentcommunity_specific_add_comment':
431 // Delete comment
432 case 'gamipress_fluentcommunity_delete_comment':
433 case 'gamipress_fluentcommunity_specific_delete_comment':
434 // Create space
435 case 'gamipress_fluentcommunity_create_space':
436 // Delete space
437 case 'gamipress_fluentcommunity_delete_space':
438 case 'gamipress_fluentcommunity_delete_specific_space':
439 // Add the space ID
440 $log_meta['space_id'] = $args[0];
441 break;
442
443 // Courses
444 // Complete course
445 case 'gamipress_fluentcommunity_complete_course':
446 case 'gamipress_fluentcommunity_complete_specific_course':
447 // Enroll course
448 case 'gamipress_fluentcommunity_enroll_course':
449 case 'gamipress_fluentcommunity_enroll_specific_course':
450 // Unroll course
451 case 'gamipress_fluentcommunity_unroll_course':
452 case 'gamipress_fluentcommunity_unroll_specific_course':
453 // Create course
454 case 'gamipress_fluentcommunity_create_course':
455 // Delete course
456 case 'gamipress_fluentcommunity_delete_course':
457 case 'gamipress_fluentcommunity_delete_specific_course':
458 // Add the course ID
459 $log_meta['course_id'] = $args[0];
460 break;
461
462 // Quizzes
463 // Attempt quiz
464 case 'gamipress_fluentcommunity_attempt_quiz':
465 case 'gamipress_fluentcommunity_attempt_specific_quiz':
466 // Pass quiz
467 case 'gamipress_fluentcommunity_pass_quiz':
468 case 'gamipress_fluentcommunity_pass_specific_quiz':
469 // Fail quiz
470 case 'gamipress_fluentcommunity_fail_quiz':
471 case 'gamipress_fluentcommunity_fail_specific_quiz':
472 $log_meta['quiz_id'] = $args[0];
473 break;
474 }
475
476 return $log_meta;
477 }
478 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_fluentcommunity_log_event_trigger_meta_data', 10, 5 );