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