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
gamipress / integrations / tutor / includes / triggers.php

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

363 lines 16.1 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\Tutor\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_tutor_activity_triggers( $triggers ) {
21
22 $triggers[__( 'Tutor LMS', 'gamipress' )] = array(
23
24 // Quizzes
25 'gamipress_tutor_complete_quiz' => __( 'Complete a quiz', 'gamipress' ),
26 'gamipress_tutor_complete_specific_quiz' => __( 'Complete a specific quiz', 'gamipress' ),
27 'gamipress_tutor_complete_quiz_specific_course' => __( 'Complete any quiz of a specific course', 'gamipress' ),
28 'gamipress_tutor_complete_quiz_course_category' => __( 'Complete a quiz of a course of a category', 'gamipress' ),
29
30 // Pass
31 'gamipress_tutor_pass_quiz' => __( 'Successfully pass a quiz', 'gamipress' ),
32 'gamipress_tutor_pass_specific_quiz' => __( 'Successfully pass a specific quiz', 'gamipress' ),
33 'gamipress_tutor_pass_quiz_specific_course' => __( 'Successfully pass a quiz of a specific course', 'gamipress' ),
34 'gamipress_tutor_pass_quiz_course_category' => __( 'Successfully pass a quiz of a course of a category', 'gamipress' ),
35
36 // Fail
37 'gamipress_tutor_fail_quiz' => __( 'Fail a quiz', 'gamipress' ),
38 'gamipress_tutor_fail_specific_quiz' => __( 'Fail a specific quiz', 'gamipress' ),
39 'gamipress_tutor_fail_quiz_specific_course' => __( 'Fail a quiz of a specific course', 'gamipress' ),
40 'gamipress_tutor_fail_quiz_course_category' => __( 'Fail a quiz of a course of a category', 'gamipress' ),
41
42 // Lessons
43 'gamipress_tutor_complete_lesson' => __( 'Complete a lesson', 'gamipress' ),
44 'gamipress_tutor_complete_specific_lesson' => __( 'Complete a specific lesson', 'gamipress' ),
45 'gamipress_tutor_complete_lesson_specific_course' => __( 'Complete a lesson of a specific course', 'gamipress' ),
46 'gamipress_tutor_complete_lesson_course_category' => __( 'Complete a lesson of a course of a category', 'gamipress' ),
47
48 // Courses
49 'gamipress_tutor_enroll_course' => __( 'Enroll a course', 'gamipress' ),
50 'gamipress_tutor_enroll_specific_course' => __( 'Enroll a specific course', 'gamipress' ),
51 'gamipress_tutor_enroll_course_category' => __( 'Enroll a course of a category', 'gamipress' ),
52 'gamipress_tutor_complete_course' => __( 'Complete a course', 'gamipress' ),
53 'gamipress_tutor_complete_specific_course' => __( 'Complete a specific course', 'gamipress' ),
54 'gamipress_tutor_complete_course_category' => __( 'Complete a course of a category', 'gamipress' ),
55 'gamipress_tutor_review_course' => __( 'Review a course', 'gamipress' ),
56 'gamipress_tutor_review_specific_course' => __( 'Review a specific course', 'gamipress' ),
57
58 // Assignments
59 'gamipress_tutor_submit_assignment' => __( 'Submit an assignment', 'gamipress' ),
60 'gamipress_tutor_submit_specific_assignment' => __( 'Submit a specific assignment', 'gamipress' ),
61 'gamipress_tutor_pass_assignment' => __( 'Successfully pass an assignment', 'gamipress' ),
62 'gamipress_tutor_pass_specific_assignment' => __( 'Successfully pass a specific assignment', 'gamipress' ),
63 'gamipress_tutor_fail_assignment' => __( 'Fail an assignment', 'gamipress' ),
64 'gamipress_tutor_fail_specific_assignment' => __( 'Fail a specific assignment', 'gamipress' ),
65
66 );
67
68 return $triggers;
69
70 }
71 add_filter( 'gamipress_activity_triggers', 'gamipress_tutor_activity_triggers' );
72
73 /**
74 * Register Tutor specific activity triggers
75 *
76 * @since 1.0.0
77 *
78 * @param array $specific_activity_triggers
79 * @return array
80 */
81 function gamipress_tutor_specific_activity_triggers( $specific_activity_triggers ) {
82
83
84 $quiz = apply_filters( 'tutor_quiz_post_type', 'tutor_quiz' );
85 $lesson = apply_filters( 'tutor_lesson_post_type', 'lesson' );
86 $course = apply_filters( 'tutor_course_post_type', 'courses' );
87
88 // Quizzes
89 $specific_activity_triggers['gamipress_tutor_complete_specific_quiz'] = array( $quiz );
90 $specific_activity_triggers['gamipress_tutor_complete_quiz_specific_course'] = array( $course );
91
92 $specific_activity_triggers['gamipress_tutor_pass_specific_quiz'] = array( $quiz );
93 $specific_activity_triggers['gamipress_tutor_pass_quiz_specific_course'] = array( $course );
94
95 $specific_activity_triggers['gamipress_tutor_fail_specific_quiz'] = array( $quiz );
96 $specific_activity_triggers['gamipress_tutor_fail_quiz_specific_course'] = array( $course );
97
98 // Lessons
99 $specific_activity_triggers['gamipress_tutor_complete_specific_lesson'] = array( $lesson );
100 $specific_activity_triggers['gamipress_tutor_complete_lesson_specific_course'] = array( $course );
101
102 // Courses
103 $specific_activity_triggers['gamipress_tutor_enroll_specific_course'] = array( $course );
104 $specific_activity_triggers['gamipress_tutor_complete_specific_course'] = array( $course );
105 $specific_activity_triggers['gamipress_tutor_review_specific_course'] = array( $course );
106
107 // Assignments
108 $specific_activity_triggers['gamipress_tutor_submit_specific_assignment'] = array( 'tutor_assignments' );
109 $specific_activity_triggers['gamipress_tutor_pass_specific_assignment'] = array( 'tutor_assignments' );
110 $specific_activity_triggers['gamipress_tutor_fail_specific_assignment'] = array( 'tutor_assignments' );
111
112 return $specific_activity_triggers;
113 }
114 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_tutor_specific_activity_triggers' );
115
116 /**
117 * Register plugin specific activity triggers labels
118 *
119 * @since 1.0.0
120 *
121 * @param array $specific_activity_trigger_labels
122 * @return array
123 */
124 function gamipress_tutor_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
125
126 // Quizzes
127 $specific_activity_trigger_labels['gamipress_tutor_complete_specific_quiz'] = __( 'Complete the quiz %s', 'gamipress' );
128 $specific_activity_trigger_labels['gamipress_tutor_complete_quiz_specific_course'] = __( 'Complete any quiz of the course %s', 'gamipress' );
129 $specific_activity_trigger_labels['gamipress_tutor_pass_specific_quiz'] = __( 'Pass the quiz %s', 'gamipress' );
130 $specific_activity_trigger_labels['gamipress_tutor_pass_quiz_specific_course'] = __( 'Pass a quiz of the course %s', 'gamipress' );
131 $specific_activity_trigger_labels['gamipress_tutor_fail_specific_quiz'] = __( 'Fail the quiz %s', 'gamipress' );
132 $specific_activity_trigger_labels['gamipress_tutor_fail_quiz_specific_course'] = __( 'Fail a quiz of the course %s', 'gamipress' );
133
134 // Lessons
135 $specific_activity_trigger_labels['gamipress_tutor_complete_specific_lesson'] = __( 'Complete the lesson %s', 'gamipress' );
136 $specific_activity_trigger_labels['gamipress_tutor_complete_lesson_specific_course'] = __( 'Complete a lesson of the course %s', 'gamipress' );
137
138 // Courses
139 $specific_activity_trigger_labels['gamipress_tutor_enroll_specific_course'] = __( 'Enroll the course %s', 'gamipress' );
140 $specific_activity_trigger_labels['gamipress_tutor_complete_specific_course'] = __( 'Complete the course %s', 'gamipress' );
141 $specific_activity_trigger_labels['gamipress_tutor_review_specific_course'] = __( 'Complete the course %s', 'gamipress' );
142
143 // Assignments
144 $specific_activity_trigger_labels['gamipress_tutor_submit_specific_assignment'] = __( 'Submit the assignment %s', 'gamipress' );
145 $specific_activity_trigger_labels['gamipress_tutor_pass_specific_assignment'] = __( 'Pass the assignment %s', 'gamipress' );
146 $specific_activity_trigger_labels['gamipress_tutor_fail_specific_assignment'] = __( 'Fail the assignment %s', 'gamipress' );
147
148 return $specific_activity_trigger_labels;
149 }
150 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_tutor_specific_activity_trigger_label' );
151
152 /**
153 * Build custom activity trigger label
154 *
155 * @since 1.0.0
156 *
157 * @param string $title
158 * @param integer $requirement_id
159 * @param array $requirement
160 *
161 * @return string
162 */
163 function gamipress_tutor_activity_trigger_label( $title, $requirement_id, $requirement ) {
164
165 $tutor_category = ( isset( $requirement['tutor_category'] ) ) ? $requirement['tutor_category'] : '';
166
167 // Get the JetEngine post types
168 $term = get_term_by( 'id', $tutor_category, 'course-category' );
169
170 switch( $requirement['trigger_type'] ) {
171 case 'gamipress_tutor_complete_quiz_course_category':
172 return sprintf( __( 'Complete a quiz of a course of "%s" category', 'gamipress' ), $term->name );
173 break;
174 case 'gamipress_tutor_pass_quiz_course_category':
175 return sprintf( __( 'Successfully pass a quiz of a course of %s category', 'gamipress' ), $term->name );
176 break;
177 case 'gamipress_tutor_fail_quiz_course_category':
178 return sprintf( __( 'Fail a quiz of a course of %s category', 'gamipress' ), $term->name );
179 break;
180 case 'gamipress_tutor_complete_lesson_course_category':
181 return sprintf( __( 'Complete a lesson of a course of %s category', 'gamipress' ), $term->name );
182 break;
183 case 'gamipress_tutor_complete_course_category':
184 return sprintf( __( 'Complete a course of %s category', 'gamipress' ), $term->name );
185 break;
186 case 'gamipress_tutor_enroll_course_category':
187 return sprintf( __( 'Enroll a course of %s category', 'gamipress' ), $term->name );
188 break;
189
190 }
191
192 return $title;
193 }
194 add_filter( 'gamipress_activity_trigger_label', 'gamipress_tutor_activity_trigger_label', 10, 3 );
195
196 /**
197 * Get user for a given trigger action.
198 *
199 * @since 1.0.0
200 *
201 * @param integer $user_id user ID to override.
202 * @param string $trigger Trigger name.
203 * @param array $args Passed trigger args.
204 * @return integer User ID.
205 */
206 function gamipress_tutor_trigger_get_user_id( $user_id, $trigger, $args ) {
207
208 switch ( $trigger ) {
209 // Quizzes
210 case 'gamipress_tutor_complete_quiz':
211 case 'gamipress_tutor_complete_specific_quiz':
212 case 'gamipress_tutor_complete_quiz_specific_course':
213 case 'gamipress_tutor_pass_quiz':
214 case 'gamipress_tutor_pass_specific_quiz':
215 case 'gamipress_tutor_pass_quiz_specific_course':
216 case 'gamipress_tutor_fail_quiz':
217 case 'gamipress_tutor_fail_specific_quiz':
218 case 'gamipress_tutor_fail_quiz_specific_course':
219
220 // Lessons
221 case 'gamipress_tutor_complete_lesson':
222 case 'gamipress_tutor_complete_specific_lesson':
223 case 'gamipress_tutor_complete_lesson_specific_course':
224
225 // Courses
226 case 'gamipress_tutor_enroll_course':
227 case 'gamipress_tutor_enroll_specific_course':
228 case 'gamipress_tutor_complete_course':
229 case 'gamipress_tutor_complete_specific_course':
230 case 'gamipress_tutor_review_course':
231 case 'gamipress_tutor_review_specific_course':
232
233 // Categories
234 case 'gamipress_tutor_complete_quiz_course_category':
235 case 'gamipress_tutor_pass_quiz_course_category':
236 case 'gamipress_tutor_fail_quiz_course_category':
237 case 'gamipress_tutor_complete_lesson_course_category':
238 case 'gamipress_tutor_complete_course_category':
239 case 'gamipress_tutor_enroll_course_category':
240
241 // Assignments
242 case 'gamipress_tutor_submit_assignment':
243 case 'gamipress_tutor_submit_specific_assignment':
244 case 'gamipress_tutor_pass_assignment':
245 case 'gamipress_tutor_pass_specific_assignment':
246 case 'gamipress_tutor_fail_assignment':
247 case 'gamipress_tutor_fail_specific_assignment':
248 $user_id = $args[1];
249 break;
250 }
251
252 return $user_id;
253
254 }
255 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_tutor_trigger_get_user_id', 10, 3 );
256
257 /**
258 * Get the id for a given specific trigger action.
259 *
260 * @since 1.0.0
261 *
262 * @param integer $specific_id Specific ID.
263 * @param string $trigger Trigger name.
264 * @param array $args Passed trigger args.
265 *
266 * @return integer Specific ID.
267 */
268 function gamipress_tutor_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
269
270 switch ( $trigger ) {
271 case 'gamipress_tutor_complete_specific_quiz':
272 case 'gamipress_tutor_pass_specific_quiz':
273 case 'gamipress_tutor_fail_specific_quiz':
274 case 'gamipress_tutor_complete_specific_lesson':
275 case 'gamipress_tutor_enroll_specific_course':
276 case 'gamipress_tutor_complete_specific_course':
277 case 'gamipress_tutor_review_specific_course':
278 case 'gamipress_tutor_submit_specific_assignment':
279 case 'gamipress_tutor_pass_specific_assignment':
280 case 'gamipress_tutor_fail_specific_assignment':
281 $specific_id = $args[0];
282 break;
283 case 'gamipress_tutor_complete_quiz_specific_course':
284 case 'gamipress_tutor_pass_quiz_specific_course':
285 case 'gamipress_tutor_fail_quiz_specific_course':
286 case 'gamipress_tutor_complete_lesson_specific_course':
287 $specific_id = $args[2];
288 break;
289 }
290
291 return $specific_id;
292 }
293 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_tutor_specific_trigger_get_id', 10, 3 );
294
295 /**
296 * Extended meta data for event trigger logging
297 *
298 * @since 1.0.0
299 *
300 * @param array $log_meta
301 * @param integer $user_id
302 * @param string $trigger
303 * @param integer $site_id
304 * @param array $args
305 *
306 * @return array
307 */
308 function gamipress_tutor_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
309
310 switch ( $trigger ) {
311
312 // Quizzes
313 case 'gamipress_tutor_complete_quiz':
314 case 'gamipress_tutor_complete_specific_quiz':
315 case 'gamipress_tutor_complete_quiz_specific_course':
316 case 'gamipress_tutor_pass_quiz':
317 case 'gamipress_tutor_pass_specific_quiz':
318 case 'gamipress_tutor_pass_quiz_specific_course':
319 case 'gamipress_tutor_fail_quiz':
320 case 'gamipress_tutor_fail_specific_quiz':
321 case 'gamipress_tutor_fail_quiz_specific_course':
322 // Add the quiz and course IDs
323 $log_meta['quiz_id'] = $args[0];
324 $log_meta['course_id'] = $args[2];
325 break;
326
327 // Lessons
328 case 'gamipress_tutor_complete_lesson':
329 case 'gamipress_tutor_complete_specific_lesson':
330 case 'gamipress_tutor_complete_lesson_specific_course':
331 // Add the lesson and course IDs
332 $log_meta['lesson_id'] = $args[0];
333 $log_meta['course_id'] = $args[2];
334 break;
335
336 // Courses
337 case 'gamipress_tutor_enroll_course':
338 case 'gamipress_tutor_enroll_specific_course':
339 case 'gamipress_tutor_complete_course':
340 case 'gamipress_tutor_complete_specific_course':
341 case 'gamipress_tutor_review_course':
342 case 'gamipress_tutor_review_specific_course':
343 // Add the course ID
344 $log_meta['course_id'] = $args[0];
345 break;
346
347 // Assignments
348 case 'gamipress_tutor_pass_assignment':
349 case 'gamipress_tutor_pass_specific_assignment':
350 case 'gamipress_tutor_fail_assignment':
351 case 'gamipress_tutor_fail_specific_assignment':
352 $log_meta['assignment_id'] = $args[0];
353 $log_meta['course_id'] = $args[2];
354 break;
355 case 'gamipress_tutor_submit_assignment':
356 case 'gamipress_tutor_submit_specific_assignment':
357 $log_meta['assignment_id'] = $args[0];
358 break;
359 }
360
361 return $log_meta;
362 }
363 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_tutor_log_event_trigger_meta_data', 10, 5 );