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/tutor/includes/triggers.php +363 -0 7.9.2 → 8.0.5 View file →
@@ -1,0 +1,363 @@
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 );