PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 8.0.2
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v8.0.2
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 7.8.6 7.8.5 All 44 releases
gamipress / integrations / learndash / includes / triggers.php

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

1,067 lines 55.8 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\LearnDash\Triggers
6 * @since 1.0.0
7 */
8
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 /**
13 * Register LearnDash specific triggers
14 *
15 * @param array $triggers
16 * @return mixed
17 */
18 function gamipress_ld_activity_triggers( $triggers ) {
19
20 $triggers[__( 'LearnDash', 'gamipress' )] = array(
21
22 // Quizzes
23 'gamipress_ld_complete_quiz' => __( 'Complete a quiz', 'gamipress' ),
24 'gamipress_ld_complete_specific_quiz' => __( 'Complete a specific quiz', 'gamipress' ),
25 'gamipress_ld_complete_quiz_specific_course' => __( 'Complete a quiz of a specific course', 'gamipress' ),
26 // Course taxonomies
27 'gamipress_ld_complete_quiz_course_category' => __( 'Complete a quiz of a course of a category', 'gamipress' ),
28 'gamipress_ld_complete_quiz_course_tag' => __( 'Complete a quiz of a course of a tag', 'gamipress' ),
29 // Quiz taxonomies
30 'gamipress_ld_complete_quiz_category' => __( 'Complete a quiz of a category', 'gamipress' ),
31 'gamipress_ld_complete_quiz_tag' => __( 'Complete a quiz of a tag', 'gamipress' ),
32
33 // Minimum grade
34 'gamipress_ld_complete_quiz_grade' => __( 'Complete a quiz with a minimum percent grade', 'gamipress' ),
35 'gamipress_ld_complete_specific_quiz_grade' => __( 'Complete a specific quiz with a minimum percent grade', 'gamipress' ),
36 'gamipress_ld_complete_quiz_specific_course_grade' => __( 'Complete a quiz of a specific course with a minimum percent grade', 'gamipress' ),
37 // Course taxonomies
38 'gamipress_ld_complete_quiz_course_category_grade' => __( 'Complete a quiz of a course of a category with a minimum percent grade', 'gamipress' ),
39 'gamipress_ld_complete_quiz_course_tag_grade' => __( 'Complete a quiz of a course of a tag with a minimum percent grade', 'gamipress' ),
40 // Quiz taxonomies
41 'gamipress_ld_complete_quiz_category_grade' => __( 'Complete a quiz of a category with a minimum percent grade', 'gamipress' ),
42 'gamipress_ld_complete_quiz_tag_grade' => __( 'Complete a quiz of a tag with a minimum percent grade', 'gamipress' ),
43
44 // Maximum grade
45 'gamipress_ld_complete_quiz_max_grade' => __( 'Complete a quiz with a maximum percent grade', 'gamipress' ),
46 'gamipress_ld_complete_specific_quiz_max_grade' => __( 'Complete a specific quiz with a maximum percent grade', 'gamipress' ),
47 'gamipress_ld_complete_quiz_specific_course_max_grade' => __( 'Complete a quiz of a specific course with a maximum percent grade', 'gamipress' ),
48 // Course taxonomies
49 'gamipress_ld_complete_quiz_course_category_max_grade' => __( 'Complete a quiz of a course of a category with a maximum percent grade', 'gamipress' ),
50 'gamipress_ld_complete_quiz_course_tag_max_grade' => __( 'Complete a quiz of a course of a tag with a maximum percent grade', 'gamipress' ),
51 // Quiz taxonomies
52 'gamipress_ld_complete_quiz_category_max_grade' => __( 'Complete a quiz of a category with a maximum percent grade', 'gamipress' ),
53 'gamipress_ld_complete_quiz_tag_max_grade' => __( 'Complete a quiz of a tag with a maximum percent grade', 'gamipress' ),
54
55 // Between grades
56 'gamipress_ld_complete_quiz_between_grade' => __( 'Complete a quiz on a range of percent grade', 'gamipress' ),
57 'gamipress_ld_complete_specific_quiz_between_grade' => __( 'Complete a specific quiz on a range of percent grade', 'gamipress' ),
58 'gamipress_ld_complete_quiz_specific_course_between_grade' => __( 'Complete a quiz of a specific course on a range of percent grade', 'gamipress' ),
59 // Course taxonomies
60 'gamipress_ld_complete_quiz_course_category_between_grade' => __( 'Complete a quiz of a course of a category on a range of percent grade', 'gamipress' ),
61 'gamipress_ld_complete_quiz_course_tag_between_grade' => __( 'Complete a quiz of a course of a tag on a range of percent grade', 'gamipress' ),
62 // Quiz taxonomies
63 'gamipress_ld_complete_quiz_category_between_grade' => __( 'Complete a quiz of a category on a range of percent grade', 'gamipress' ),
64 'gamipress_ld_complete_quiz_tag_between_grade' => __( 'Complete a quiz of a tag on a range of percent grade', 'gamipress' ),
65
66 // Pass
67 'gamipress_ld_pass_quiz' => __( 'Successfully pass a quiz', 'gamipress' ),
68 'gamipress_ld_pass_specific_quiz' => __( 'Successfully pass a specific quiz', 'gamipress' ),
69 'gamipress_ld_pass_quiz_specific_course' => __( 'Successfully pass a quiz of a specific course', 'gamipress' ),
70 // Course taxonomies
71 'gamipress_ld_pass_quiz_category' => __( 'Successfully pass a quiz of a category', 'gamipress' ),
72 'gamipress_ld_pass_quiz_tag' => __( 'Successfully pass a quiz of a tag', 'gamipress' ),
73 // Course taxonomies
74 'gamipress_ld_pass_quiz_course_category' => __( 'Successfully pass a quiz of a course of a category', 'gamipress' ),
75 'gamipress_ld_pass_quiz_course_tag' => __( 'Successfully pass a quiz of a course of a tag', 'gamipress' ),
76
77 // Fail
78 'gamipress_ld_fail_quiz' => __( 'Fail a quiz', 'gamipress' ),
79 'gamipress_ld_fail_specific_quiz' => __( 'Fail a specific quiz', 'gamipress' ),
80 'gamipress_ld_fail_quiz_specific_course' => __( 'Fail a quiz of a specific course', 'gamipress' ),
81 // Course taxonomies
82 'gamipress_ld_fail_quiz_category' => __( 'Fail a quiz of a category', 'gamipress' ),
83 'gamipress_ld_fail_quiz_tag' => __( 'Fail a quiz of a tag', 'gamipress' ),
84 // Course taxonomies
85 'gamipress_ld_fail_quiz_course_category' => __( 'Fail a quiz of a course of a category', 'gamipress' ),
86 'gamipress_ld_fail_quiz_course_tag' => __( 'Fail a quiz of a course of a tag', 'gamipress' ),
87
88 // Essay
89 'gamipress_ld_submit_essay_quiz' => __( 'Submit an essay for a quiz', 'gamipress' ),
90 'gamipress_ld_submit_essay_specific_quiz' => __( 'Submit an essay for a specific quiz', 'gamipress' ),
91
92 // Topics
93 'gamipress_ld_complete_topic' => __( 'Complete a topic', 'gamipress' ),
94 'gamipress_ld_complete_specific_topic' => __( 'Complete a specific topic', 'gamipress' ),
95 'gamipress_ld_incomplete_topic' => __( 'Mark as incomplete a topic', 'gamipress' ),
96 'gamipress_ld_incomplete_specific_topic' => __( 'Mark as incomplete a specific topic', 'gamipress' ),
97 // Topic taxonomies
98 'gamipress_ld_complete_topic_category' => __( 'Complete a topic of a category', 'gamipress' ),
99 'gamipress_ld_complete_topic_tag' => __( 'Complete a topic of a tag', 'gamipress' ),
100 'gamipress_ld_complete_topic_specific_course' => __( 'Complete a topic of a specific course', 'gamipress' ),
101 // Course taxonomies
102 'gamipress_ld_complete_topic_course_category' => __( 'Complete a topic of a course of a category', 'gamipress' ),
103 'gamipress_ld_complete_topic_course_tag' => __( 'Complete a topic of a course of a tag', 'gamipress' ),
104
105 // Assignments
106 'gamipress_ld_assignment_upload' => __( 'Upload an assignment', 'gamipress' ),
107 'gamipress_ld_assignment_upload_specific_lesson' => __( 'Upload an assignment to a specific lesson', 'gamipress' ),
108 // Lesson taxonomies
109 'gamipress_ld_assignment_upload_lesson_category' => __( 'Upload an assignment to a lesson of a category', 'gamipress' ),
110 'gamipress_ld_assignment_upload_lesson_tag' => __( 'Upload an assignment to a lesson of a tag', 'gamipress' ),
111 'gamipress_ld_assignment_upload_specific_course' => __( 'Upload an assignment to a specific course', 'gamipress' ),
112 // Course taxonomies
113 'gamipress_ld_assignment_upload_course_category' => __( 'Upload an assignment to a course of a category', 'gamipress' ),
114 'gamipress_ld_assignment_upload_course_tag' => __( 'Upload an assignment to a course of a tag', 'gamipress' ),
115 'gamipress_ld_approve_assignment' => __( 'Approve an assignment', 'gamipress' ),
116 'gamipress_ld_approve_assignment_specific_lesson' => __( 'Approve an assignment of a specific lesson', 'gamipress' ),
117 // Lesson taxonomies
118 'gamipress_ld_approve_assignment_lesson_category' => __( 'Approve an assignment of a lesson of a category', 'gamipress' ),
119 'gamipress_ld_approve_assignment_lesson_tag' => __( 'Approve an assignment of a lesson of a tag', 'gamipress' ),
120 'gamipress_ld_approve_assignment_specific_course' => __( 'Approve an assignment of a specific course', 'gamipress' ),
121 // Course taxonomies
122 'gamipress_ld_approve_assignment_course_category' => __( 'Approve an assignment of a course of a category', 'gamipress' ),
123 'gamipress_ld_approve_assignment_course_tag' => __( 'Approve an assignment of a course of a tag', 'gamipress' ),
124
125 // Lessons
126 'gamipress_ld_complete_lesson' => __( 'Complete a lesson', 'gamipress' ),
127 'gamipress_ld_complete_specific_lesson' => __( 'Complete a specific lesson', 'gamipress' ),
128 'gamipress_ld_incomplete_lesson' => __( 'Mark as incomplete a lesson', 'gamipress' ),
129 'gamipress_ld_incomplete_specific_lesson' => __( 'Mark as incomplete a specific lesson', 'gamipress' ),
130
131 // Lesson taxonomies
132 'gamipress_ld_complete_lesson_category' => __( 'Complete a lesson of a category', 'gamipress' ),
133 'gamipress_ld_complete_lesson_tag' => __( 'Complete a lesson of a tag', 'gamipress' ),
134 'gamipress_ld_complete_lesson_specific_course' => __( 'Complete a lesson of a specific course', 'gamipress' ),
135 // Course taxonomies
136 'gamipress_ld_complete_lesson_course_category' => __( 'Complete a lesson of a course of a category', 'gamipress' ),
137 'gamipress_ld_complete_lesson_course_tag' => __( 'Complete a lesson of a course of a tag', 'gamipress' ),
138
139 // Courses
140 'gamipress_ld_enroll_course' => __( 'Enroll in a course', 'gamipress' ),
141 'gamipress_ld_enroll_specific_course' => __( 'Enroll in a specific course', 'gamipress' ),
142 // Course taxonomies
143 'gamipress_ld_enroll_course_category' => __( 'Enroll in a course of a category', 'gamipress' ),
144 'gamipress_ld_enroll_course_tag' => __( 'Enroll in a course of a tag', 'gamipress' ),
145 'gamipress_ld_complete_course' => __( 'Complete a course', 'gamipress' ),
146 'gamipress_ld_complete_specific_course' => __( 'Complete a specific course', 'gamipress' ),
147 // Course taxonomies
148 'gamipress_ld_complete_course_category' => __( 'Complete a course of a category', 'gamipress' ),
149 'gamipress_ld_complete_course_tag' => __( 'Complete a course of a tag', 'gamipress' ),
150
151 // Groups
152 'gamipress_ld_join_group' => __( 'Join any group', 'gamipress' ),
153 'gamipress_ld_join_specific_group' => __( 'Join a specific group', 'gamipress' ),
154
155 // Reviews
156 'gamipress_ld_review_course' => __( 'Review any course', 'gamipress' ),
157 'gamipress_ld_review_specific_course' => __( 'Review a specific course', 'gamipress' ),
158 );
159
160 return $triggers;
161
162 }
163 add_filter( 'gamipress_activity_triggers', 'gamipress_ld_activity_triggers' );
164
165 /**
166 * Register LearnDash specific activity triggers
167 *
168 * @since 1.0.0
169 *
170 * @param array $specific_activity_triggers
171 * @return array
172 */
173 function gamipress_ld_specific_activity_triggers( $specific_activity_triggers ) {
174
175 // Quizzes
176 $specific_activity_triggers['gamipress_ld_complete_specific_quiz'] = array( 'sfwd-quiz' );
177 $specific_activity_triggers['gamipress_ld_complete_quiz_specific_course'] = array( 'sfwd-courses' );
178
179 $specific_activity_triggers['gamipress_ld_complete_specific_quiz_grade'] = array( 'sfwd-quiz' );
180 $specific_activity_triggers['gamipress_ld_complete_quiz_specific_course_grade'] = array( 'sfwd-courses' );
181
182 $specific_activity_triggers['gamipress_ld_complete_specific_quiz_max_grade'] = array( 'sfwd-quiz' );
183 $specific_activity_triggers['gamipress_ld_complete_quiz_specific_course_max_grade'] = array( 'sfwd-courses' );
184
185 $specific_activity_triggers['gamipress_ld_complete_specific_quiz_between_grade'] = array( 'sfwd-quiz' );
186 $specific_activity_triggers['gamipress_ld_complete_quiz_specific_course_between_grade'] = array( 'sfwd-courses' );
187
188 $specific_activity_triggers['gamipress_ld_pass_specific_quiz'] = array( 'sfwd-quiz' );
189 $specific_activity_triggers['gamipress_ld_pass_quiz_specific_course'] = array( 'sfwd-courses' );
190
191 $specific_activity_triggers['gamipress_ld_fail_specific_quiz'] = array( 'sfwd-quiz' );
192 $specific_activity_triggers['gamipress_ld_fail_quiz_specific_course'] = array( 'sfwd-courses' );
193
194 $specific_activity_triggers['gamipress_ld_submit_essay_specific_quiz'] = array( 'sfwd-quiz' );
195
196 // Topics
197 $specific_activity_triggers['gamipress_ld_complete_specific_topic'] = array( 'sfwd-topic' );
198 $specific_activity_triggers['gamipress_ld_incomplete_specific_topic'] = array( 'sfwd-topic' );
199 $specific_activity_triggers['gamipress_ld_complete_topic_specific_course'] = array( 'sfwd-courses' );
200
201 // Assignments
202 $specific_activity_triggers['gamipress_ld_assignment_upload_specific_lesson'] = array( 'sfwd-lessons' );
203 $specific_activity_triggers['gamipress_ld_assignment_upload_specific_course'] = array( 'sfwd-courses' );
204
205 $specific_activity_triggers['gamipress_ld_approve_assignment_specific_lesson'] = array( 'sfwd-lessons' );
206 $specific_activity_triggers['gamipress_ld_approve_assignment_specific_course'] = array( 'sfwd-courses' );
207
208 // Lessons
209 $specific_activity_triggers['gamipress_ld_complete_specific_lesson'] = array( 'sfwd-lessons' );
210 $specific_activity_triggers['gamipress_ld_incomplete_specific_lesson'] = array( 'sfwd-lessons' );
211 $specific_activity_triggers['gamipress_ld_complete_lesson_specific_course'] = array( 'sfwd-courses' );
212
213 // Courses
214 $specific_activity_triggers['gamipress_ld_enroll_specific_course'] = array( 'sfwd-courses' );
215 $specific_activity_triggers['gamipress_ld_complete_specific_course'] = array( 'sfwd-courses' );
216
217 // Groups
218 $specific_activity_triggers['gamipress_ld_join_specific_group'] = array( 'groups' );
219
220 // Reviews
221 $specific_activity_triggers['gamipress_ld_review_specific_course'] = array( 'sfwd-courses' );
222
223 return $specific_activity_triggers;
224 }
225 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_ld_specific_activity_triggers' );
226
227 /**
228 * Build custom activity trigger label
229 *
230 * @param string $title
231 * @param integer $requirement_id
232 * @param array $requirement
233 *
234 * @return string
235 */
236 function gamipress_ld_activity_trigger_label( $title, $requirement_id, $requirement ) {
237
238 $score = ( isset( $requirement['ld_score'] ) ) ? absint( $requirement['ld_score'] ) : 0;
239 $min_score = ( isset( $requirement['ld_min_score'] ) ) ? absint( $requirement['ld_min_score'] ) : 0;
240 $max_score = ( isset( $requirement['ld_max_score'] ) ) ? absint( $requirement['ld_max_score'] ) : 0;
241
242 switch( $requirement['trigger_type'] ) {
243
244 // Minimum grade events
245 case 'gamipress_ld_complete_quiz_grade':
246 return sprintf( __( 'Completed a quiz with a score of %d or higher', 'gamipress' ), $score );
247 break;
248 case 'gamipress_ld_complete_specific_quiz_grade':
249 $achievement_post_id = absint( $requirement['achievement_post'] );
250 return sprintf( __( 'Complete the quiz %s with a score of %d or higher', 'gamipress' ), get_the_title( $achievement_post_id ), $score );
251 break;
252 case 'gamipress_ld_complete_quiz_specific_course_grade':
253 $achievement_post_id = absint( $requirement['achievement_post'] );
254 return sprintf( __( 'Complete a quiz of the course %s with a score of %d or higher', 'gamipress' ), get_the_title( $achievement_post_id ), $score );
255 break;
256
257 // Maximum grade events
258 case 'gamipress_ld_complete_quiz_max_grade':
259 return sprintf( __( 'Completed a quiz with a maximum score of %d', 'gamipress' ), $score );
260 break;
261 case 'gamipress_ld_complete_specific_quiz_max_grade':
262 $achievement_post_id = absint( $requirement['achievement_post'] );
263 return sprintf( __( 'Complete the quiz %s with a maximum score of %d', 'gamipress' ), get_the_title( $achievement_post_id ), $score );
264 break;
265 case 'gamipress_ld_complete_quiz_specific_course_max_grade':
266 $achievement_post_id = absint( $requirement['achievement_post'] );
267 return sprintf( __( 'Complete a quiz of the course %s with a maximum score of %d', 'gamipress' ), get_the_title( $achievement_post_id ), $score );
268 break;
269
270 // Between grade events
271 case 'gamipress_ld_complete_quiz_between_grade':
272 return sprintf( __( 'Completed a quiz with a score between %d and %d', 'gamipress' ), $min_score, $max_score );
273 break;
274 case 'gamipress_ld_complete_specific_quiz_between_grade':
275 $achievement_post_id = absint( $requirement['achievement_post'] );
276 return sprintf( __( 'Complete the quiz %s with a score between %d and %d', 'gamipress' ), get_the_title( $achievement_post_id ), $min_score, $max_score );
277 break;
278 case 'gamipress_ld_complete_quiz_specific_course_between_grade':
279 $achievement_post_id = absint( $requirement['achievement_post'] );
280 return sprintf( __( 'Complete a quiz of the course %s with a score between %d and %d', 'gamipress' ), get_the_title( $achievement_post_id ), $min_score, $max_score );
281 break;
282
283 // Quiz category
284 case 'gamipress_ld_complete_quiz_category':
285 return sprintf( __( 'Complete a quiz of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'category' ) );
286 break;
287 case 'gamipress_ld_pass_quiz_category':
288 return sprintf( __( 'Pass a quiz of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'category' ) );
289 break;
290 case 'gamipress_ld_fail_quiz_category':
291 return sprintf( __( 'Fail a quiz of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'category' ) );
292 break;
293 case 'gamipress_ld_complete_quiz_category_grade':
294 return sprintf( __( 'Complete a quiz of "%s" category with a score of %d or higher', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'category' ), $score );
295 break;
296 case 'gamipress_ld_complete_quiz_category_max_grade':
297 return sprintf( __( 'Complete a quiz of "%s" category with a maximum score of %d', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'category' ), $score );
298 break;
299 case 'gamipress_ld_complete_quiz_category_between_grade':
300 return sprintf( __( 'Complete a quiz of "%s" category with a score between %d and %d', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'category' ), $min_score, $max_score );
301 break;
302
303 // Quiz tag
304 case 'gamipress_ld_complete_quiz_tag':
305 return sprintf( __( 'Complete a quiz of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'tag' ) );
306 break;
307 case 'gamipress_ld_pass_quiz_tag':
308 return sprintf( __( 'Pass a quiz of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'tag' ) );
309 break;
310 case 'gamipress_ld_fail_quiz_tag':
311 return sprintf( __( 'Fail a quiz of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'tag' ) );
312 break;
313 case 'gamipress_ld_complete_quiz_tag_grade':
314 return sprintf( __( 'Complete a quiz of "%s" tag with a score of %d or higher', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'tag' ), $score );
315 break;
316 case 'gamipress_ld_complete_quiz_tag_max_grade':
317 return sprintf( __( 'Complete a quiz of "%s" tag with a maximum score of %d', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'tag' ), $score );
318 break;
319 case 'gamipress_ld_complete_quiz_tag_between_grade':
320 return sprintf( __( 'Complete a quiz of "%s" tag with a score between %d and %d', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'quiz', 'tag' ), $min_score, $max_score );
321 break;
322
323 // Course category
324 case 'gamipress_ld_complete_quiz_course_category':
325 return sprintf( __( 'Complete a quiz of a course of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ) );
326 break;
327 case 'gamipress_ld_complete_quiz_course_category_grade':
328 return sprintf( __( 'Complete a quiz of a course of "%s" category with a score of %d or higher', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ), $score );
329 break;
330 case 'gamipress_ld_complete_quiz_course_category_max_grade':
331 return sprintf( __( 'Complete a quiz of a course of "%s" category with a maximum score of %d', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ), $score );
332 break;
333 case 'gamipress_ld_complete_quiz_course_category_between_grade':
334 return sprintf( __( 'Complete a quiz of a course of "%s" category with a score between %d and %d', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ), $min_score, $max_score );
335 break;
336 case 'gamipress_ld_pass_quiz_course_category':
337 return sprintf( __( 'Pass a quiz of a course of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ) );
338 break;
339 case 'gamipress_ld_fail_quiz_course_category':
340 return sprintf( __( 'Fail a quiz of a course of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ) );
341 break;
342 case 'gamipress_ld_complete_topic_course_category':
343 return sprintf( __( 'Complete a topic of a course of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ) );
344 break;
345 case 'gamipress_ld_assignment_upload_course_category':
346 return sprintf( __( 'Upload an assignment to a course of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ) );
347 break;
348 case 'gamipress_ld_approve_assignment_course_category':
349 return sprintf( __( 'Approve an assignment of a course of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ) );
350 break;
351 case 'gamipress_ld_complete_lesson_course_category':
352 return sprintf( __( 'Complete a lesson of a course of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ) );
353 break;
354 case 'gamipress_ld_enroll_course_category':
355 return sprintf( __( 'Enroll in a course of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ) );
356 break;
357 case 'gamipress_ld_complete_course_category':
358 return sprintf( __( 'Complete a course of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'category' ) );
359 break;
360
361 // Course tag
362 case 'gamipress_ld_complete_quiz_course_tag':
363 return sprintf( __( 'Complete a quiz of a course of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ) );
364 break;
365 case 'gamipress_ld_complete_quiz_course_tag_grade':
366 return sprintf( __( 'Complete a quiz of a course of "%s" tag with a score of %d or higher', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ), $score );
367 break;
368 case 'gamipress_ld_complete_quiz_course_tag_max_grade':
369 return sprintf( __( 'Complete a quiz of a course of "%s" tag with a maximum score of %d', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ), $score );
370 break;
371 case 'gamipress_ld_complete_quiz_course_tag_between_grade':
372 return sprintf( __( 'Complete a quiz of a course of "%s" tag with a score between %d and %d', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ), $min_score, $max_score );
373 break;
374 case 'gamipress_ld_pass_quiz_course_tag':
375 return sprintf( __( 'Pass a quiz of a course of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ) );
376 break;
377 case 'gamipress_ld_fail_quiz_course_tag':
378 return sprintf( __( 'Fail a quiz of a course of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ) );
379 break;
380 case 'gamipress_ld_complete_topic_course_tag':
381 return sprintf( __( 'Complete a topic of a course of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ) );
382 break;
383 case 'gamipress_ld_assignment_upload_course_tag':
384 return sprintf( __( 'Upload an assignment to a course of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ) );
385 break;
386 case 'gamipress_ld_approve_assignment_course_tag':
387 return sprintf( __( 'Approve an assignment of a course of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ) );
388 break;
389 case 'gamipress_ld_complete_lesson_course_tag':
390 return sprintf( __( 'Complete a lesson of a course of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ) );
391 break;
392 case 'gamipress_ld_enroll_course_tag':
393 return sprintf( __( 'Enroll in a course of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ) );
394 break;
395 case 'gamipress_ld_complete_course_tag':
396 return sprintf( __( 'Complete a course of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'course', 'tag' ) );
397 break;
398
399 // Topic category
400 case 'gamipress_ld_complete_topic_category':
401 return sprintf( __( 'Complete a topic of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'topic', 'category' ) );
402 break;
403
404 // Topic tag
405 case 'gamipress_ld_complete_topic_tag':
406 return sprintf( __( 'Complete a topic of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'topic', 'tag' ) );
407 break;
408
409 // Lesson category
410 case 'gamipress_ld_assignment_upload_lesson_category':
411 return sprintf( __( 'Upload an assignment to a lesson of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'lesson', 'category' ) );
412 break;
413 case 'gamipress_ld_approve_assignment_lesson_category':
414 return sprintf( __( 'Approve an assignment of a lesson of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'lesson', 'category' ) );
415 break;
416 case 'gamipress_ld_complete_lesson_category':
417 return sprintf( __( 'Complete a lesson of "%s" category', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'lesson', 'category' ) );
418 break;
419
420 // Lesson tag
421 case 'gamipress_ld_assignment_upload_lesson_tag':
422 return sprintf( __( 'Upload an assignment to a lesson of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'lesson', 'tag' ) );
423 break;
424 case 'gamipress_ld_approve_assignment_lesson_tag':
425 return sprintf( __( 'Approve an assignment of a lesson of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'lesson', 'tag' ) );
426 break;
427 case 'gamipress_ld_complete_lesson_tag':
428 return sprintf( __( 'Complete a lesson of "%s" tag', 'gamipress' ), gamipress_ld_get_term_name( $requirement, 'lesson', 'tag' ) );
429 break;
430
431 }
432
433 return $title;
434 }
435 add_filter( 'gamipress_activity_trigger_label', 'gamipress_ld_activity_trigger_label', 10, 3 );
436
437 /**
438 * Helper function to get a term name
439 *
440 * @param array $requirement
441 * @param string $element
442 * @param string $taxonomy
443 *
444 * @return string
445 */
446 function gamipress_ld_get_term_name( $requirement, $element = 'course', $taxonomy = 'category' ) {
447
448 $term_id = ( isset( $requirement['ld_' . $element . '_' . $taxonomy . '_id'] ) ) ? absint( $requirement['ld_' . $element . '_' . $taxonomy . '_id'] ) : 0;
449
450 if( $term_id !== 0 ) {
451
452 $term = get_term_by( 'term_id', $term_id, 'ld_' . $element . '_' . $taxonomy );
453
454 // Return the term name
455 return $term->name;
456 }
457
458 return __( 'any', 'gamipress' );
459
460 }
461
462 /**
463 * Register LearnDash specific activity triggers labels
464 *
465 * @since 1.0.0
466 *
467 * @param array $specific_activity_trigger_labels
468 * @return array
469 */
470 function gamipress_ld_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
471
472 // Quizzes
473 $specific_activity_trigger_labels['gamipress_ld_complete_specific_quiz'] = __( 'Complete the quiz %s', 'gamipress' );
474 $specific_activity_trigger_labels['gamipress_ld_complete_quiz_specific_course'] = __( 'Complete any quiz of the course %s', 'gamipress' );
475 $specific_activity_trigger_labels['gamipress_ld_pass_specific_quiz'] = __( 'Pass the quiz %s', 'gamipress' );
476 $specific_activity_trigger_labels['gamipress_ld_pass_quiz_specific_course'] = __( 'Pass a quiz of the course %s', 'gamipress' );
477 $specific_activity_trigger_labels['gamipress_ld_fail_specific_quiz'] = __( 'Fail the quiz %s', 'gamipress' );
478 $specific_activity_trigger_labels['gamipress_ld_fail_quiz_specific_course'] = __( 'Fail a quiz of the course %s', 'gamipress' );
479 $specific_activity_trigger_labels['gamipress_ld_submit_essay_specific_quiz'] = __( 'Sumit an essay for the quiz %s', 'gamipress' );
480
481 // Topics
482 $specific_activity_trigger_labels['gamipress_ld_complete_specific_topic'] = __( 'Complete the topic %s', 'gamipress' );
483 $specific_activity_trigger_labels['gamipress_ld_incomplete_specific_topic'] = __( 'Mark as incomplete the topic %s', 'gamipress' );
484 $specific_activity_trigger_labels['gamipress_ld_complete_topic_specific_course'] = __( 'Complete a topic of the course %s', 'gamipress' );
485
486 // Assignments
487 $specific_activity_trigger_labels['gamipress_ld_assignment_upload_specific_lesson'] = __( 'Upload an assignment to the lesson %s', 'gamipress' );
488 $specific_activity_trigger_labels['gamipress_ld_assignment_upload_specific_course'] = __( 'Upload an assignment to the course %s', 'gamipress' );
489 $specific_activity_trigger_labels['gamipress_ld_approve_assignment_specific_lesson'] = __( 'Approve an assignment of the lesson %s', 'gamipress' );
490 $specific_activity_trigger_labels['gamipress_ld_approve_assignment_specific_course'] = __( 'Approve an assignment of the course %s', 'gamipress' );
491
492 // Lessons
493 $specific_activity_trigger_labels['gamipress_ld_complete_specific_lesson'] = __( 'Complete the lesson %s', 'gamipress' );
494 $specific_activity_trigger_labels['gamipress_ld_incomplete_specific_lesson'] = __( 'Mark as incomplete the lesson %s', 'gamipress' );
495 $specific_activity_trigger_labels['gamipress_ld_complete_lesson_specific_course'] = __( 'Complete a lesson of the course %s', 'gamipress' );
496
497 // Courses
498 $specific_activity_trigger_labels['gamipress_ld_enroll_specific_course'] = __( 'Enroll in course %s', 'gamipress' );
499 $specific_activity_trigger_labels['gamipress_ld_complete_specific_course'] = __( 'Complete the course %s', 'gamipress' );
500
501 // Groups
502 $specific_activity_trigger_labels['gamipress_ld_join_specific_group'] = __( 'Join %s group', 'gamipress' );
503
504 // Reviews
505 $specific_activity_trigger_labels['gamipress_ld_review_specific_course'] = __( 'Review %s course', 'gamipress' );
506
507 return $specific_activity_trigger_labels;
508 }
509 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_ld_specific_activity_trigger_label' );
510
511 /**
512 * Get user for a given trigger action.
513 *
514 * @since 1.0.0
515 *
516 * @param integer $user_id user ID to override.
517 * @param string $trigger Trigger name.
518 * @param array $args Passed trigger args.
519 * @return integer User ID.
520 */
521 function gamipress_ld_trigger_get_user_id( $user_id, $trigger, $args ) {
522
523 switch ( $trigger ) {
524 // Quizzes
525 case 'gamipress_ld_complete_quiz':
526 case 'gamipress_ld_complete_specific_quiz':
527 case 'gamipress_ld_complete_quiz_specific_course':
528 case 'gamipress_ld_complete_quiz_grade':
529 case 'gamipress_ld_complete_specific_quiz_grade':
530 case 'gamipress_ld_complete_quiz_specific_course_grade':
531 case 'gamipress_ld_complete_quiz_max_grade':
532 case 'gamipress_ld_complete_specific_quiz_max_grade':
533 case 'gamipress_ld_complete_quiz_specific_course_max_grade':
534 case 'gamipress_ld_complete_quiz_between_grade':
535 case 'gamipress_ld_complete_specific_quiz_between_grade':
536 case 'gamipress_ld_complete_quiz_specific_course_between_grade':
537 case 'gamipress_ld_pass_quiz':
538 case 'gamipress_ld_pass_specific_quiz':
539 case 'gamipress_ld_pass_quiz_specific_course':
540 case 'gamipress_ld_fail_quiz':
541 case 'gamipress_ld_fail_specific_quiz':
542 case 'gamipress_ld_fail_quiz_specific_course':
543 case 'gamipress_ld_submit_essay_quiz':
544 case 'gamipress_ld_submit_essay_specific_quiz':
545
546 // Topics
547 case 'gamipress_ld_complete_topic':
548 case 'gamipress_ld_complete_specific_topic':
549 case 'gamipress_ld_incomplete_topic':
550 case 'gamipress_ld_incomplete_specific_topic':
551 case 'gamipress_ld_complete_topic_specific_course':
552
553 // Assignments
554 case 'gamipress_ld_assignment_upload':
555 case 'gamipress_ld_assignment_upload_specific_lesson':
556 case 'gamipress_ld_assignment_upload_specific_course':
557 case 'gamipress_ld_approve_assignment':
558 case 'gamipress_ld_approve_assignment_specific_lesson':
559 case 'gamipress_ld_approve_assignment_specific_course':
560
561 // Lessons
562 case 'gamipress_ld_complete_lesson':
563 case 'gamipress_ld_complete_specific_lesson':
564 case 'gamipress_ld_incomplete_lesson':
565 case 'gamipress_ld_incomplete_specific_lesson':
566 case 'gamipress_ld_complete_lesson_specific_course':
567
568 // Courses
569 case 'gamipress_ld_enroll_course':
570 case 'gamipress_ld_enroll_specific_course':
571 case 'gamipress_ld_complete_course':
572 case 'gamipress_ld_complete_specific_course':
573
574 // Groups
575 case 'gamipress_ld_join_group':
576 case 'gamipress_ld_join_specific_group':
577
578 // Course category
579 case 'gamipress_ld_complete_quiz_course_category':
580 case 'gamipress_ld_complete_quiz_course_category_grade':
581 case 'gamipress_ld_complete_quiz_course_category_max_grade':
582 case 'gamipress_ld_complete_quiz_course_category_between_grade':
583 case 'gamipress_ld_pass_quiz_course_category':
584 case 'gamipress_ld_fail_quiz_course_category':
585 case 'gamipress_ld_complete_topic_course_category':
586 case 'gamipress_ld_assignment_upload_course_category':
587 case 'gamipress_ld_approve_assignment_course_category':
588 case 'gamipress_ld_complete_lesson_course_category':
589 case 'gamipress_ld_enroll_course_category':
590 case 'gamipress_ld_complete_course_category':
591
592 // Course tag
593 case 'gamipress_ld_complete_quiz_course_tag':
594 case 'gamipress_ld_complete_quiz_course_tag_grade':
595 case 'gamipress_ld_complete_quiz_course_tag_max_grade':
596 case 'gamipress_ld_complete_quiz_course_tag_between_grade':
597 case 'gamipress_ld_pass_quiz_course_tag':
598 case 'gamipress_ld_fail_quiz_course_tag':
599 case 'gamipress_ld_complete_topic_course_tag':
600 case 'gamipress_ld_assignment_upload_course_tag':
601 case 'gamipress_ld_approve_assignment_course_tag':
602 case 'gamipress_ld_complete_lesson_course_tag':
603 case 'gamipress_ld_enroll_course_tag':
604 case 'gamipress_ld_complete_course_tag':
605
606 // Topic taxonomies
607 case 'gamipress_ld_complete_topic_category':
608 case 'gamipress_ld_complete_topic_tag':
609
610 // Lesson taxonomies
611 case 'gamipress_ld_assignment_upload_lesson_category':
612 case 'gamipress_ld_approve_assignment_lesson_category':
613 case 'gamipress_ld_complete_lesson_category':
614 case 'gamipress_ld_assignment_upload_lesson_tag':
615 case 'gamipress_ld_approve_assignment_lesson_tag':
616 case 'gamipress_ld_complete_lesson_tag':
617
618 // Reviews
619 case 'gamipress_ld_review_course':
620 case 'gamipress_ld_review_specific_course':
621
622 // Quiz taxonomies
623 case 'gamipress_ld_complete_quiz_category':
624 case 'gamipress_ld_complete_quiz_tag':
625 case 'gamipress_ld_pass_quiz_category':
626 case 'gamipress_ld_pass_quiz_tag':
627 case 'gamipress_ld_fail_quiz_category':
628 case 'gamipress_ld_fail_quiz_tag':
629 case 'gamipress_ld_complete_quiz_category_grade':
630 case 'gamipress_ld_complete_quiz_tag_grade':
631 case 'gamipress_ld_complete_quiz_category_max_grade':
632 case 'gamipress_ld_complete_quiz_tag_max_grade':
633 case 'gamipress_ld_complete_quiz_category_between_grade':
634 case 'gamipress_ld_complete_quiz_tag_between_grade':
635 $user_id = $args[1];
636 break;
637 }
638
639 return $user_id;
640
641 }
642 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_ld_trigger_get_user_id', 10, 3 );
643
644 /**
645 * Get the id for a given specific trigger action.
646 *
647 * @since 1.0.0
648 *
649 * @param integer $specific_id Specific ID.
650 * @param string $trigger Trigger name.
651 * @param array $args Passed trigger args.
652 *
653 * @return integer Specific ID.
654 */
655 function gamipress_ld_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
656
657 switch ( $trigger ) {
658 case 'gamipress_ld_complete_specific_quiz':
659 case 'gamipress_ld_complete_specific_quiz_grade':
660 case 'gamipress_ld_complete_specific_quiz_max_grade':
661 case 'gamipress_ld_complete_specific_quiz_between_grade':
662 case 'gamipress_ld_pass_specific_quiz':
663 case 'gamipress_ld_fail_specific_quiz':
664 case 'gamipress_ld_complete_specific_topic':
665 case 'gamipress_ld_incomplete_specific_topic':
666 case 'gamipress_ld_complete_specific_lesson':
667 case 'gamipress_ld_incomplete_specific_lesson':
668 case 'gamipress_ld_enroll_specific_course':
669 case 'gamipress_ld_complete_specific_course':
670 case 'gamipress_ld_join_specific_group':
671 case 'gamipress_ld_submit_essay_specific_quiz':
672 case 'gamipress_ld_review_specific_course':
673 $specific_id = $args[0];
674 break;
675 case 'gamipress_ld_complete_quiz_specific_course':
676 case 'gamipress_ld_complete_quiz_specific_course_grade':
677 case 'gamipress_ld_complete_quiz_specific_course_max_grade':
678 case 'gamipress_ld_complete_quiz_specific_course_between_grade':
679 case 'gamipress_ld_pass_quiz_specific_course':
680 case 'gamipress_ld_fail_quiz_specific_course':
681 case 'gamipress_ld_assignment_upload_specific_lesson':
682 case 'gamipress_ld_approve_assignment_specific_lesson':
683 case 'gamipress_ld_complete_lesson_specific_course':
684 $specific_id = $args[2];
685 break;
686 case 'gamipress_ld_complete_topic_specific_course':
687 case 'gamipress_ld_assignment_upload_specific_course':
688 case 'gamipress_ld_approve_assignment_specific_course':
689 $specific_id = $args[3];
690 break;
691 }
692
693 return $specific_id;
694 }
695 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_ld_specific_trigger_get_id', 10, 3 );
696
697 /**
698 * Extended meta data for event trigger logging
699 *
700 * @since 1.0.0
701 *
702 * @param array $log_meta
703 * @param integer $user_id
704 * @param string $trigger
705 * @param integer $site_id
706 * @param array $args
707 *
708 * @return array
709 */
710 function gamipress_ld_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
711
712 switch ( $trigger ) {
713
714 // Quizzes
715 case 'gamipress_ld_complete_quiz':
716 case 'gamipress_ld_complete_specific_quiz':
717 case 'gamipress_ld_complete_quiz_specific_course':
718 // Course taxonomies
719 case 'gamipress_ld_complete_quiz_course_category':
720 case 'gamipress_ld_complete_quiz_course_tag':
721 // Quiz taxonomies
722 case 'gamipress_ld_complete_quiz_category':
723 case 'gamipress_ld_complete_quiz_tag':
724 case 'gamipress_ld_pass_quiz_category':
725 case 'gamipress_ld_pass_quiz_tag':
726 case 'gamipress_ld_fail_quiz_category':
727 case 'gamipress_ld_fail_quiz_tag':
728 case 'gamipress_ld_pass_quiz':
729 case 'gamipress_ld_pass_specific_quiz':
730 case 'gamipress_ld_pass_quiz_specific_course':
731 // Course taxonomies
732 case 'gamipress_ld_pass_quiz_course_category':
733 case 'gamipress_ld_pass_quiz_course_tag':
734 case 'gamipress_ld_fail_quiz':
735 case 'gamipress_ld_fail_specific_quiz':
736 case 'gamipress_ld_fail_quiz_specific_course':
737 // Course taxonomies
738 case 'gamipress_ld_fail_quiz_course_category':
739 case 'gamipress_ld_fail_quiz_course_tag':
740 // Add the quiz and course IDs
741 $log_meta['quiz_id'] = $args[0];
742 $log_meta['course_id'] = $args[2];
743 break;
744 case 'gamipress_ld_complete_quiz_grade':
745 case 'gamipress_ld_complete_specific_quiz_grade':
746 case 'gamipress_ld_complete_quiz_specific_course_grade':
747 case 'gamipress_ld_complete_quiz_max_grade':
748 case 'gamipress_ld_complete_specific_quiz_max_grade':
749 case 'gamipress_ld_complete_quiz_specific_course_max_grade':
750 case 'gamipress_ld_complete_quiz_between_grade':
751 case 'gamipress_ld_complete_specific_quiz_between_grade':
752 case 'gamipress_ld_complete_quiz_specific_course_between_grade':
753 // Course taxonomies
754 case 'gamipress_ld_complete_quiz_course_category_grade':
755 case 'gamipress_ld_complete_quiz_course_category_max_grade':
756 case 'gamipress_ld_complete_quiz_course_category_between_grade':
757 case 'gamipress_ld_complete_quiz_course_tag_grade':
758 case 'gamipress_ld_complete_quiz_course_tag_max_grade':
759 case 'gamipress_ld_complete_quiz_course_tag_between_grade':
760 // Quiz taxonomies
761 case 'gamipress_ld_complete_quiz_category_grade':
762 case 'gamipress_ld_complete_quiz_tag_grade':
763 case 'gamipress_ld_complete_quiz_category_max_grade':
764 case 'gamipress_ld_complete_quiz_tag_max_grade':
765 case 'gamipress_ld_complete_quiz_category_between_grade':
766 case 'gamipress_ld_complete_quiz_tag_between_grade':
767 // Add the quiz and course IDs
768 $log_meta['quiz_id'] = $args[0];
769 $log_meta['course_id'] = $args[2];
770 $log_meta['score'] = $args[3];
771 break;
772 // Essay
773 case 'gamipress_ld_submit_essay_quiz':
774 case 'gamipress_ld_submit_essay_specific_quiz':
775 // Add the quiz and course IDs
776 $log_meta['quiz_id'] = $args[0];
777
778 // Topics
779 case 'gamipress_ld_complete_topic':
780 case 'gamipress_ld_complete_specific_topic':
781 // Topic taxonomies
782 case 'gamipress_ld_complete_topic_category':
783 case 'gamipress_ld_complete_topic_tag':
784 case 'gamipress_ld_complete_topic_specific_course':
785 // Course taxonomies
786 case 'gamipress_ld_complete_topic_course_category':
787 case 'gamipress_ld_complete_topic_course_tag':
788 // Add the topic, lesson and course IDs
789 $log_meta['topic_id'] = $args[0];
790 $log_meta['lesson_id'] = $args[2];
791 $log_meta['course_id'] = $args[3];
792 break;
793 case 'gamipress_ld_incomplete_topic':
794 case 'gamipress_ld_incomplete_specific_topic':
795 // Add the topic and course IDs
796 $log_meta['topic_id'] = $args[0];
797 $log_meta['course_id'] = $args[2];
798
799 // Assignments
800 case 'gamipress_ld_assignment_upload':
801 case 'gamipress_ld_assignment_upload_specific_lesson':
802 // Lesson taxonomies
803 case 'gamipress_ld_assignment_upload_lesson_category':
804 case 'gamipress_ld_assignment_upload_lesson_tag':
805 case 'gamipress_ld_assignment_upload_specific_course':
806 // Course taxonomies
807 case 'gamipress_ld_assignment_upload_course_category':
808 case 'gamipress_ld_assignment_upload_course_tag':
809 case 'gamipress_ld_approve_assignment':
810 case 'gamipress_ld_approve_assignment_specific_lesson':
811 // Lesson taxonomies
812 case 'gamipress_ld_approve_assignment_lesson_category':
813 case 'gamipress_ld_approve_assignment_lesson_tag':
814 case 'gamipress_ld_approve_assignment_specific_course':
815 // Course taxonomies
816 case 'gamipress_ld_approve_assignment_course_category':
817 case 'gamipress_ld_approve_assignment_course_tag':
818 // Add the assignment, lesson and course IDs
819 $log_meta['assignment_id'] = $args[0];
820 $log_meta['lesson_id'] = $args[2];
821 $log_meta['course_id'] = $args[3];
822 break;
823
824 // Lessons
825 case 'gamipress_ld_complete_lesson':
826 case 'gamipress_ld_complete_specific_lesson':
827 case 'gamipress_ld_incomplete_lesson':
828 case 'gamipress_ld_incomplete_specific_lesson':
829 // Lesson taxonomies
830 case 'gamipress_ld_complete_lesson_category':
831 case 'gamipress_ld_complete_lesson_tag':
832 case 'gamipress_ld_complete_lesson_specific_course':
833 // Course taxonimies
834 case 'gamipress_ld_complete_lesson_course_category':
835 case 'gamipress_ld_complete_lesson_course_tag':
836 // Add the lesson and course IDs
837 $log_meta['lesson_id'] = $args[0];
838 $log_meta['course_id'] = $args[2];
839 break;
840
841 // Courses
842 case 'gamipress_ld_enroll_course':
843 case 'gamipress_ld_enroll_specific_course':
844 // Course taxonomies
845 case 'gamipress_ld_enroll_course_category':
846 case 'gamipress_ld_enroll_course_tag':
847 case 'gamipress_ld_complete_course':
848 case 'gamipress_ld_complete_specific_course':
849 // Course taxonomies
850 case 'gamipress_ld_complete_course_category':
851 case 'gamipress_ld_complete_course_tag':
852 // Add the course ID
853 $log_meta['course_id'] = $args[0];
854 break;
855
856 // Groups
857 case 'gamipress_ld_join_group':
858 case 'gamipress_ld_join_specific_group':
859 // Add the group ID
860 $log_meta['group_id'] = $args[0];
861 break;
862 }
863
864 // Terms IDs
865 $terms_ids_index = gamipress_ld_get_terms_ids_index( $trigger );
866
867 if( $terms_ids_index !== -1 ) {
868 // Add the terms IDs
869 $log_meta['terms_ids'] = $args[$terms_ids_index];
870 }
871
872 return $log_meta;
873 }
874 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_ld_log_event_trigger_meta_data', 10, 5 );
875
876 /**
877 * Extra data fields
878 *
879 * @since 1.1.2
880 *
881 * @param array $fields
882 * @param int $log_id
883 * @param string $type
884 *
885 * @return array
886 */
887 function gamipress_ld_log_extra_data_fields( $fields, $log_id, $type ) {
888
889 $prefix = '_gamipress_';
890
891 $log = ct_get_object( $log_id );
892 $trigger = $log->trigger_type;
893
894 if( $type !== 'event_trigger' ) {
895 return $fields;
896 }
897
898 switch( $trigger ) {
899 // Quizzes
900 case 'gamipress_ld_complete_quiz_grade':
901 case 'gamipress_ld_complete_specific_quiz_grade':
902 case 'gamipress_ld_complete_quiz_specific_course_grade':
903 case 'gamipress_ld_complete_quiz_max_grade':
904 case 'gamipress_ld_complete_specific_quiz_max_grade':
905 case 'gamipress_ld_complete_quiz_specific_course_max_grade':
906 case 'gamipress_ld_complete_quiz_between_grade':
907 case 'gamipress_ld_complete_specific_quiz_between_grade':
908 case 'gamipress_ld_complete_quiz_specific_course_between_grade':
909 // Course taxonomies
910 case 'gamipress_ld_complete_quiz_course_category_grade':
911 case 'gamipress_ld_complete_quiz_course_category_max_grade':
912 case 'gamipress_ld_complete_quiz_course_category_between_grade':
913 case 'gamipress_ld_complete_quiz_course_tag_grade':
914 case 'gamipress_ld_complete_quiz_course_tag_max_grade':
915 case 'gamipress_ld_complete_quiz_course_tag_between_grade':
916 // Quiz taxonomies
917 case 'gamipress_ld_complete_quiz_category_grade':
918 case 'gamipress_ld_complete_quiz_tag_grade':
919 case 'gamipress_ld_complete_quiz_category_max_grade':
920 case 'gamipress_ld_complete_quiz_tag_max_grade':
921 case 'gamipress_ld_complete_quiz_category_between_grade':
922 case 'gamipress_ld_complete_quiz_tag_between_grade':
923 $fields[] = array(
924 'name' => __( 'Grade of completion', 'gamipress' ),
925 'desc' => __( 'Grade of completion the user got on complete this quiz.', 'gamipress' ),
926 'id' => $prefix . 'score',
927 'type' => 'text',
928 );
929 break;
930 }
931
932 return $fields;
933
934 }
935 add_filter( 'gamipress_log_extra_data_fields', 'gamipress_ld_log_extra_data_fields', 10, 3 );
936
937 /**
938 * Override the meta data to filter the logs count
939 *
940 * @since 1.2.3
941 *
942 * @param array $log_meta The meta data to filter the logs count
943 * @param int $user_id The given user's ID
944 * @param string $trigger The given trigger we're checking
945 * @param int $since The since timestamp where retrieve the logs
946 * @param int $site_id The desired Site ID to check
947 * @param array $args The triggered args or requirement object
948 *
949 * @return array The meta data to filter the logs count
950 */
951 function gamipress_ld_get_user_trigger_count_log_meta( $log_meta, $user_id, $trigger, $since, $site_id, $args ) {
952
953 switch( $trigger ) {
954 // Quizzes
955 case 'gamipress_ld_complete_quiz_grade':
956 case 'gamipress_ld_complete_specific_quiz_grade':
957 case 'gamipress_ld_complete_quiz_specific_course_grade':
958 // Course taxonomies
959 case 'gamipress_ld_complete_quiz_course_category_grade':
960 case 'gamipress_ld_complete_quiz_course_tag_grade':
961 // Quiz taxonomies
962 case 'gamipress_ld_complete_quiz_category_grade':
963 case 'gamipress_ld_complete_quiz_tag_grade':
964
965 $score = 0;
966
967 if( isset( $args[3] ) ) {
968 // Add the score
969 $score = $args[3];
970 }
971
972 // $args could be a requirement object
973 if( isset( $args['ld_score'] ) ) {
974 // Add the score
975 $score = $args['ld_score'];
976 }
977
978 $log_meta['score'] = array(
979 'key' => 'score',
980 'value' => (int) $score,
981 'compare' => '>=',
982 'type' => 'integer',
983 );
984 break;
985 case 'gamipress_ld_complete_quiz_max_grade':
986 case 'gamipress_ld_complete_specific_quiz_max_grade':
987 case 'gamipress_ld_complete_quiz_specific_course_max_grade':
988 // Course taxonomies
989 case 'gamipress_ld_complete_quiz_course_category_max_grade':
990 case 'gamipress_ld_complete_quiz_course_tag_max_grade':
991 // Quiz taxonomies
992 case 'gamipress_ld_complete_quiz_category_max_grade':
993 case 'gamipress_ld_complete_quiz_tag_max_grade':
994
995 $score = 0;
996
997 if( isset( $args[3] ) ) {
998 // Add the score
999 $score = $args[3];
1000 }
1001
1002 // $args could be a requirement object
1003 if( isset( $args['ld_score'] ) ) {
1004 // Add the score
1005 $score = $args['ld_score'];
1006 }
1007
1008 $log_meta['score'] = array(
1009 'key' => 'score',
1010 'value' => $score,
1011 'compare' => '<=',
1012 'type' => 'integer',
1013 );
1014 break;
1015 case 'gamipress_ld_complete_quiz_between_grade':
1016 case 'gamipress_ld_complete_specific_quiz_between_grade':
1017 case 'gamipress_ld_complete_quiz_specific_course_between_grade':
1018 // Course taxonomies
1019 case 'gamipress_ld_complete_quiz_course_category_between_grade':
1020 case 'gamipress_ld_complete_quiz_course_tag_between_grade':
1021 // Quiz taxonomies
1022 case 'gamipress_ld_complete_quiz_category_between_grade':
1023 case 'gamipress_ld_complete_quiz_tag_between_grade':
1024 if( isset( $args[3] ) ) {
1025 // Add the score
1026 $score = $args[3];
1027
1028 $log_meta['score'] = array(
1029 'key' => 'score',
1030 'value' => $score,
1031 'compare' => '>=',
1032 'type' => 'integer',
1033 );
1034 }
1035
1036 // $args could be a requirement object
1037 if( isset( $args['ld_min_score'] ) ) {
1038 // Add the score
1039 $min_score = $args['ld_min_score'];
1040
1041 $log_meta['score'] = array(
1042 'key' => 'score',
1043 'value' => $min_score,
1044 'compare' => '>=',
1045 'type' => 'integer',
1046 );
1047 }
1048
1049 // $args could be a requirement object
1050 if( isset( $args['ld_max_score'] ) ) {
1051 // Add the score
1052 $max_score = $args['ld_max_score'];
1053
1054 $log_meta['score'] = array(
1055 'key' => 'score',
1056 'value' => $max_score,
1057 'compare' => '<=',
1058 'type' => 'integer',
1059 );
1060 }
1061 break;
1062 }
1063
1064 return $log_meta;
1065
1066 }
1067 add_filter( 'gamipress_get_user_trigger_count_log_meta', 'gamipress_ld_get_user_trigger_count_log_meta', 10, 6 );