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