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

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

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