PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 7.9.8
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v7.9.8
8.0.4 8.0.3 8.0.1 8.0.2 8.0.0 7.9.9.7 7.9.9.6 7.9.9.5 7.9.9.4 7.9.9.3 7.9.9.2 7.9.9.1 7.9.9 7.9.8 7.9.7 7.9.6 7.9.5 7.9.4 7.9.3 7.9.2 7.9.1 7.9.0 7.8.9 7.8.8 7.8.7 All 46 releases
gamipress / integrations / lifterlms / includes / triggers.php

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

351 lines 16.1 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Triggers
4 *
5 * @package GamiPress\LifterLMS\Triggers
6 * @since 1.0.0
7 */
8
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 /**
13 * Register LifterLMS specific triggers
14 *
15 * @param array $triggers
16 * @return mixed
17 */
18 function gamipress_lifterlms_activity_triggers( $triggers ) {
19
20 $key = __( 'LifterLMS', 'gamipress' );
21
22 $triggers[$key] = array(
23
24 // Quizzes
25 'gamipress_lifterlms_complete_quiz' => __( 'Complete a quiz', 'gamipress' ),
26 'gamipress_lifterlms_complete_specific_quiz' => __( 'Complete a specific quiz', 'gamipress' ),
27
28 'gamipress_lifterlms_pass_quiz' => __( 'Pass a quiz', 'gamipress' ),
29 'gamipress_lifterlms_pass_specific_quiz' => __( 'Pass a specific quiz', 'gamipress' ),
30
31 'gamipress_lifterlms_fail_quiz' => __( 'Fail a quiz', 'gamipress' ),
32 'gamipress_lifterlms_fail_specific_quiz' => __( 'Fail a specific quiz', 'gamipress' ),
33 // Lessons
34 'gamipress_lifterlms_complete_lesson' => __( 'Complete a lesson', 'gamipress' ),
35 'gamipress_lifterlms_complete_specific_lesson' => __( 'Complete a specific lesson', 'gamipress' ),
36 'gamipress_lifterlms_complete_specific_course_lesson' => __( 'Complete a lesson of a specific course', 'gamipress' ),
37 // Sections
38 'gamipress_lifterlms_complete_section' => __( 'Complete a section', 'gamipress' ),
39 'gamipress_lifterlms_complete_specific_section' => __( 'Complete a specific section', 'gamipress' ),
40 'gamipress_lifterlms_complete_specific_course_section' => __( 'Complete a section of a specific course', 'gamipress' ),
41 // Courses
42 'gamipress_lifterlms_enroll_course' => __( 'Enroll a course', 'gamipress' ),
43 'gamipress_lifterlms_enroll_specific_course' => __( 'Enroll a specific course', 'gamipress' ),
44 'gamipress_lifterlms_complete_course' => __( 'Complete a course', 'gamipress' ),
45 'gamipress_lifterlms_complete_specific_course' => __( 'Complete a specific course', 'gamipress' ),
46 // Memberships
47 'gamipress_lifterlms_enroll_membership' => __( 'Enroll a membership', 'gamipress' ),
48 'gamipress_lifterlms_enroll_specific_membership' => __( 'Enroll a specific membership', 'gamipress' ),
49 // Access Plans
50 'gamipress_lifterlms_purchase_access_plan' => __( 'Purchase a access plan', 'gamipress' ),
51 'gamipress_lifterlms_purchase_specific_access_plan' => __( 'Purchase a specific access plan', 'gamipress' ),
52 // Certificate
53 'gamipress_lifterlms_earn_certificate' => __( 'Earn a certificate', 'gamipress' ),
54 'gamipress_lifterlms_earn_specific_certificate' => __( 'Earn a specific certificate', 'gamipress' ),
55 );
56
57 // Assignments
58 if( class_exists( 'LifterLMS_Assignments' ) ) {
59
60 // Merge new events with integration's ones
61 $triggers[$key] = array_merge( $triggers[$key], array(
62
63 'gamipress_lifterlms_submit_assignment' => __( 'Submit an assignment', 'gamipress' ),
64 'gamipress_lifterlms_submit_specific_assignment' => __( 'Submit a specific assignment', 'gamipress' ),
65
66 'gamipress_lifterlms_pass_assignment' => __( 'Pass an assignment', 'gamipress' ),
67 'gamipress_lifterlms_pass_specific_assignment' => __( 'Pass a specific assignment', 'gamipress' ),
68
69 'gamipress_lifterlms_fail_assignment' => __( 'Fail an assignment', 'gamipress' ),
70 'gamipress_lifterlms_fail_specific_assignment' => __( 'Fail a specific assignment', 'gamipress' ),
71 ) );
72 }
73
74 return $triggers;
75
76 }
77 add_filter( 'gamipress_activity_triggers', 'gamipress_lifterlms_activity_triggers' );
78
79 /**
80 * Register LifterLMS specific activity triggers
81 *
82 * @since 1.0.0
83 *
84 * @param array $specific_activity_triggers
85 * @return array
86 */
87 function gamipress_lifterlms_specific_activity_triggers( $specific_activity_triggers ) {
88
89 // Quizzes
90 $specific_activity_triggers['gamipress_lifterlms_complete_specific_quiz'] = array( 'llms_quiz' );
91 $specific_activity_triggers['gamipress_lifterlms_pass_specific_quiz'] = array( 'llms_quiz' );
92 $specific_activity_triggers['gamipress_lifterlms_fail_specific_quiz'] = array( 'llms_quiz' );
93 // Lessons
94 $specific_activity_triggers['gamipress_lifterlms_complete_specific_lesson'] = array( 'lesson' );
95 $specific_activity_triggers['gamipress_lifterlms_complete_specific_course_lesson'] = array( 'course' );
96 // Sections
97 $specific_activity_triggers['gamipress_lifterlms_complete_specific_section'] = array( 'section' );
98 $specific_activity_triggers['gamipress_lifterlms_complete_specific_course_section'] = array( 'course' );
99 // Courses
100 $specific_activity_triggers['gamipress_lifterlms_enroll_specific_course'] = array( 'course' );
101 $specific_activity_triggers['gamipress_lifterlms_complete_specific_course'] = array( 'course' );
102 // Memberships
103 $specific_activity_triggers['gamipress_lifterlms_enroll_specific_membership'] = array( 'llms_membership' );
104 // Access Plans
105 $specific_activity_triggers['gamipress_lifterlms_purchase_specific_access_plan'] = array( 'llms_access_plan' );
106 // Certificates
107 $specific_activity_triggers['gamipress_lifterlms_earn_specific_certificate'] = array( 'llms_certificate' );
108 // Assignments
109 $specific_activity_triggers['gamipress_lifterlms_submit_specific_assignment'] = array( 'llms_assignment' );
110 $specific_activity_triggers['gamipress_lifterlms_pass_specific_assignment'] = array( 'llms_assignment' );
111 $specific_activity_triggers['gamipress_lifterlms_fail_specific_assignment'] = array( 'llms_assignment' );
112
113 return $specific_activity_triggers;
114 }
115 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_lifterlms_specific_activity_triggers' );
116
117 /**
118 * Register LifterLMS specific activity triggers labels
119 *
120 * @since 1.0.0
121 *
122 * @param array $specific_activity_trigger_labels
123 * @return array
124 */
125 function gamipress_lifterlms_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
126
127 // Quizzes
128 $specific_activity_trigger_labels['gamipress_lifterlms_complete_specific_quiz'] = __( 'Complete the quiz %s', 'gamipress' );
129 $specific_activity_trigger_labels['gamipress_lifterlms_pass_specific_quiz'] = __( 'Pass the quiz %s', 'gamipress' );
130 $specific_activity_trigger_labels['gamipress_lifterlms_fail_specific_quiz'] = __( 'Fail the quiz %s', 'gamipress' );
131 // Lessons
132 $specific_activity_trigger_labels['gamipress_lifterlms_complete_specific_lesson'] = __( 'Complete the lesson %s', 'gamipress' );
133 $specific_activity_trigger_labels['gamipress_lifterlms_complete_specific_course_lesson'] = __( 'Complete a lesson of the course %s', 'gamipress' );
134 // Sections
135 $specific_activity_trigger_labels['gamipress_lifterlms_complete_specific_section'] = __( 'Complete the section %s', 'gamipress' );
136 $specific_activity_trigger_labels['gamipress_lifterlms_complete_specific_course_section'] = __( 'Complete a section of the course %s', 'gamipress' );
137 // Courses
138 $specific_activity_trigger_labels['gamipress_lifterlms_enroll_specific_course'] = __( 'Enroll the course %s', 'gamipress' );
139 $specific_activity_trigger_labels['gamipress_lifterlms_complete_specific_course'] = __( 'Complete the course %s', 'gamipress' );
140 // Memberships
141 $specific_activity_trigger_labels['gamipress_lifterlms_enroll_specific_membership'] = __( 'Enroll the membership %s', 'gamipress' );
142 // Access Plans
143 $specific_activity_trigger_labels['gamipress_lifterlms_purchase_specific_access_plan'] = __( 'Purchase the access plan %s', 'gamipress' );
144 // Certificates
145 $specific_activity_trigger_labels['gamipress_lifterlms_earn_specific_certificate'] = __( 'Earn the certificate %s', 'gamipress' );
146 // Assignments
147 $specific_activity_trigger_labels['gamipress_lifterlms_submit_specific_assignment'] = __( 'Submit the assignment %s', 'gamipress' );
148 $specific_activity_trigger_labels['gamipress_lifterlms_pass_specific_assignment'] = __( 'Pass the assignment %s', 'gamipress' );
149 $specific_activity_trigger_labels['gamipress_lifterlms_fail_specific_assignment'] = __( 'Fail the assignment %s', 'gamipress' );
150
151 return $specific_activity_trigger_labels;
152 }
153 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_lifterlms_specific_activity_trigger_label' );
154
155 /**
156 * Get user for a given trigger action.
157 *
158 * @since 1.0.0
159 *
160 * @param integer $user_id user ID to override.
161 * @param string $trigger Trigger name.
162 * @param array $args Passed trigger args.
163 * @return integer User ID.
164 */
165 function gamipress_lifterlms_trigger_get_user_id( $user_id, $trigger, $args ) {
166
167 switch ( $trigger ) {
168 // Quizzes
169 case 'gamipress_lifterlms_complete_quiz':
170 case 'gamipress_lifterlms_complete_specific_quiz':
171
172 case 'gamipress_lifterlms_pass_quiz':
173 case 'gamipress_lifterlms_pass_specific_quiz':
174
175 case 'gamipress_lifterlms_fail_quiz':
176 case 'gamipress_lifterlms_fail_specific_quiz':
177 // Lessons
178 case 'gamipress_lifterlms_complete_lesson':
179 case 'gamipress_lifterlms_complete_specific_lesson':
180 case 'gamipress_lifterlms_complete_specific_course_lesson':
181 // Sections
182 case 'gamipress_lifterlms_complete_section':
183 case 'gamipress_lifterlms_complete_specific_section':
184 case 'gamipress_lifterlms_complete_specific_course_section':
185 // Courses
186 case 'gamipress_lifterlms_enroll_course':
187 case 'gamipress_lifterlms_enroll_specific_course':
188 case 'gamipress_lifterlms_complete_course':
189 case 'gamipress_lifterlms_complete_specific_course':
190 // Memberships
191 case 'gamipress_lifterlms_enroll_membership':
192 case 'gamipress_lifterlms_enroll_specific_membership':
193 // Access Plans
194 case 'gamipress_lifterlms_purchase_access_plan':
195 case 'gamipress_lifterlms_purchase_specific_access_plan':
196 // Certificate
197 case 'gamipress_lifterlms_earn_certificate':
198 case 'gamipress_lifterlms_earn_specific_certificate':
199 // Assignments
200 case 'gamipress_lifterlms_submit_assignment':
201 case 'gamipress_lifterlms_submit_specific_assignment':
202
203 case 'gamipress_lifterlms_pass_assignment':
204 case 'gamipress_lifterlms_pass_specific_assignment':
205
206 case 'gamipress_lifterlms_fail_assignment':
207 case 'gamipress_lifterlms_fail_specific_assignment':
208 $user_id = $args[1];
209 break;
210 }
211
212 return $user_id;
213
214 }
215 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_lifterlms_trigger_get_user_id', 10, 3 );
216
217 /**
218 * Get the id for a given specific trigger action.
219 *
220 * @since 1.0.0
221 *
222 * @param integer $specific_id Specific ID.
223 * @param string $trigger Trigger name.
224 * @param array $args Passed trigger args.
225 *
226 * @return integer Specific ID.
227 */
228 function gamipress_lifterlms_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
229
230 switch ( $trigger ) {
231 // Quizzes
232 case 'gamipress_lifterlms_complete_specific_quiz':
233 case 'gamipress_lifterlms_pass_specific_quiz':
234 case 'gamipress_lifterlms_fail_specific_quiz':
235 // Lessons
236 case 'gamipress_lifterlms_complete_specific_lesson':
237 // Sections
238 case 'gamipress_lifterlms_complete_specific_section':
239 // Courses
240 case 'gamipress_lifterlms_enroll_specific_course':
241 case 'gamipress_lifterlms_complete_specific_course':
242 // Memberships
243 case 'gamipress_lifterlms_enroll_specific_membership':
244 // Access Plans
245 case 'gamipress_lifterlms_purchase_specific_access_plan':
246 // Certificate
247 case 'gamipress_lifterlms_earn_specific_certificate':
248 // Assignments
249 case 'gamipress_lifterlms_submit_specific_assignment':
250 case 'gamipress_lifterlms_pass_specific_assignment':
251 case 'gamipress_lifterlms_fail_specific_assignment':
252 $specific_id = $args[0];
253 break;
254 // Lessons
255 case 'gamipress_lifterlms_complete_specific_course_lesson':
256 // Sections
257 case 'gamipress_lifterlms_complete_specific_course_section':
258 $specific_id = $args[2];
259 break;
260 }
261
262 return $specific_id;
263 }
264 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_lifterlms_specific_trigger_get_id', 10, 3 );
265
266 /**
267 * Extended meta data for event trigger logging
268 *
269 * @since 1.0.0
270 *
271 * @param array $log_meta
272 * @param integer $user_id
273 * @param string $trigger
274 * @param integer $site_id
275 * @param array $args
276 *
277 * @return array
278 */
279 function gamipress_lifterlms_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
280
281 switch ( $trigger ) {
282 // Quizzes
283 case 'gamipress_lifterlms_complete_quiz':
284 case 'gamipress_lifterlms_complete_specific_quiz':
285
286 case 'gamipress_lifterlms_pass_quiz':
287 case 'gamipress_lifterlms_pass_specific_quiz':
288
289 case 'gamipress_lifterlms_fail_quiz':
290 case 'gamipress_lifterlms_fail_specific_quiz':
291 // Add the quiz, lesson and course IDs
292 $log_meta['quiz_id'] = $args[0];
293 $log_meta['lesson_id'] = $args[2];
294 $log_meta['course_id'] = $args[3];
295 break;
296 // Lessons
297 case 'gamipress_lifterlms_complete_lesson':
298 case 'gamipress_lifterlms_complete_specific_lesson':
299 case 'gamipress_lifterlms_complete_specific_course_lesson':
300 // Add the lesson and course IDs
301 $log_meta['lesson_id'] = $args[0];
302 $log_meta['course_id'] = $args[2];
303 break;
304 case 'gamipress_lifterlms_complete_section':
305 case 'gamipress_lifterlms_complete_specific_section':
306 case 'gamipress_lifterlms_complete_specific_course_section':
307 // Add the section and course IDs
308 $log_meta['section_id'] = $args[0];
309 $log_meta['section_id'] = $args[2];
310 break;
311 // Courses
312 case 'gamipress_lifterlms_enroll_course':
313 case 'gamipress_lifterlms_enroll_specific_course':
314 case 'gamipress_lifterlms_complete_course':
315 case 'gamipress_lifterlms_complete_specific_course':
316 // Add the course ID
317 $log_meta['course_id'] = $args[0];
318 break;
319 // Memberships
320 case 'gamipress_lifterlms_enroll_membership':
321 case 'gamipress_lifterlms_enroll_specific_membership':
322 // Add the membership ID
323 $log_meta['membership_id'] = $args[0];
324 break;
325 // Access Plans
326 case 'gamipress_lifterlms_purchase_access_plan':
327 case 'gamipress_lifterlms_purchase_specific_access_plan':
328 // Add the plan ID
329 $log_meta['plan_id'] = $args[0];
330 break;
331 // Certificate
332 case 'gamipress_lifterlms_earn_certificate':
333 case 'gamipress_lifterlms_earn_specific_certificate':
334 // Add the certificate ID
335 $log_meta['certificate_id'] = $args[0];
336 break;
337 // Assignments
338 case 'gamipress_lifterlms_submit_assignment':
339 case 'gamipress_lifterlms_submit_specific_assignment':
340 case 'gamipress_lifterlms_pass_assignment':
341 case 'gamipress_lifterlms_pass_specific_assignment':
342 case 'gamipress_lifterlms_fail_assignment':
343 case 'gamipress_lifterlms_fail_specific_assignment':
344 // Add the assignment ID
345 $log_meta['assignment_id'] = $args[0];
346 break;
347 }
348
349 return $log_meta;
350 }
351 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_lifterlms_log_event_trigger_meta_data', 10, 5 );