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/learnpress/includes/triggers.php +231 -0 7.9.1 → 8.0.5 View file →
@@ -1,0 +1,231 @@
1 +<?php
2 +/**
3 + * Triggers
4 + *
5 + * @package GamiPress\LearnPress\Triggers
6 + * @since 1.0.0
7 + */
8 +
9 +// Exit if accessed directly
10 +if( !defined( 'ABSPATH' ) ) exit;
11 +
12 +/**
13 + * Register LearnPress specific triggers
14 + *
15 + * @param array $triggers
16 + * @return mixed
17 + */
18 +function gamipress_lp_activity_triggers( $triggers ) {
19 +
20 + $triggers[__( 'LearnPress', 'gamipress' )] = array(
21 + // Course
22 + 'gamipress_lp_enroll_course' => __( 'Enroll any course', 'gamipress' ),
23 + 'gamipress_lp_enroll_specific_course' => __( 'Enroll a specific course', 'gamipress' ),
24 + 'gamipress_lp_finish_course' => __( 'Finish a course', 'gamipress' ),
25 + 'gamipress_lp_finish_specific_course' => __( 'Finish a specific course', 'gamipress' ),
26 + // Lesson
27 + 'gamipress_lp_complete_lesson' => __( 'Complete a lesson', 'gamipress' ),
28 + 'gamipress_lp_complete_specific_lesson' => __( 'Complete a specific lesson', 'gamipress' ),
29 + // Finish quiz
30 + 'gamipress_lp_finish_quiz' => __( 'Finish a quiz', 'gamipress' ),
31 + 'gamipress_lp_finish_specific_quiz' => __( 'Finish a specific quiz', 'gamipress' ),
32 + 'gamipress_lp_finish_quiz_specific_course' => __( 'Finish a quiz of a specific course', 'gamipress' ),
33 + // Pass quiz
34 + 'gamipress_lp_pass_quiz' => __( 'Pass a quiz', 'gamipress' ),
35 + 'gamipress_lp_pass_specific_quiz' => __( 'Pass a specific quiz', 'gamipress' ),
36 + 'gamipress_lp_pass_quiz_specific_course' => __( 'Pass a quiz of a specific course', 'gamipress' ),
37 + // Fail quiz
38 + 'gamipress_lp_fail_quiz' => __( 'Fail a quiz', 'gamipress' ),
39 + 'gamipress_lp_fail_specific_quiz' => __( 'Fail a specific quiz', 'gamipress' ),
40 + 'gamipress_lp_fail_quiz_specific_course' => __( 'Fail a quiz of a specific course', 'gamipress' ),
41 + );
42 +
43 + return $triggers;
44 +
45 +}
46 +add_filter( 'gamipress_activity_triggers', 'gamipress_lp_activity_triggers' );
47 +
48 +/**
49 + * Register LearnPress specific activity triggers
50 + *
51 + * @since 1.0.0
52 + *
53 + * @param array $specific_activity_triggers
54 + * @return array
55 + */
56 +function gamipress_lp_specific_activity_triggers( $specific_activity_triggers ) {
57 +
58 + // Course
59 + $specific_activity_triggers['gamipress_lp_enroll_specific_course'] = array( LP_COURSE_CPT );
60 + $specific_activity_triggers['gamipress_lp_finish_specific_course'] = array( LP_COURSE_CPT );
61 + // Lesson
62 + $specific_activity_triggers['gamipress_lp_complete_specific_lesson'] = array( LP_LESSON_CPT );
63 + // Finish quiz
64 + $specific_activity_triggers['gamipress_lp_finish_specific_quiz'] = array( LP_QUIZ_CPT );
65 + $specific_activity_triggers['gamipress_lp_finish_quiz_specific_course'] = array( LP_COURSE_CPT );
66 + // Pass quiz
67 + $specific_activity_triggers['gamipress_lp_pass_specific_quiz'] = array( LP_QUIZ_CPT );
68 + $specific_activity_triggers['gamipress_lp_pass_quiz_specific_course'] = array( LP_COURSE_CPT );
69 + // Fail quiz
70 + $specific_activity_triggers['gamipress_lp_fail_specific_quiz'] = array( LP_QUIZ_CPT );
71 + $specific_activity_triggers['gamipress_lp_fail_quiz_specific_course'] = array( LP_COURSE_CPT );
72 +
73 + return $specific_activity_triggers;
74 +}
75 +add_filter( 'gamipress_specific_activity_triggers', 'gamipress_lp_specific_activity_triggers' );
76 +
77 +/**
78 + * Register LearnPress specific activity triggers labels
79 + *
80 + * @since 1.0.0
81 + *
82 + * @param array $specific_activity_trigger_labels
83 + * @return array
84 + */
85 +function gamipress_lp_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
86 +
87 + // Course
88 + $specific_activity_trigger_labels['gamipress_lp_enroll_specific_course'] = __( 'Enroll the course %s', 'gamipress' );
89 + $specific_activity_trigger_labels['gamipress_lp_finish_specific_course'] = __( 'Finish the course %s', 'gamipress' );
90 + // Lesson
91 + $specific_activity_trigger_labels['gamipress_lp_complete_specific_lesson'] = __( 'Complete the lesson %s', 'gamipress' );
92 + // Finish quiz
93 + $specific_activity_trigger_labels['gamipress_lp_finish_specific_quiz'] = __( 'Finish the quiz %s', 'gamipress' );
94 + $specific_activity_trigger_labels['gamipress_lp_finish_quiz_specific_course'] = __( 'Finish any quiz of the course %s', 'gamipress' );
95 + // Pass quiz
96 + $specific_activity_trigger_labels['gamipress_lp_pass_specific_quiz'] = __( 'Pass the quiz %s', 'gamipress' );
97 + $specific_activity_trigger_labels['gamipress_lp_pass_quiz_specific_course'] = __( 'Pass any quiz of the course %s', 'gamipress' );
98 + // Fail quiz
99 + $specific_activity_trigger_labels['gamipress_lp_fail_specific_quiz'] = __( 'Fail the quiz %s', 'gamipress' );
100 + $specific_activity_trigger_labels['gamipress_lp_fail_quiz_specific_course'] = __( 'Fail any quiz of the course %s', 'gamipress' );
101 +
102 + return $specific_activity_trigger_labels;
103 +}
104 +add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_lp_specific_activity_trigger_label' );
105 +
106 +/**
107 + * Get user for a given trigger action.
108 + *
109 + * @since 1.0.0
110 + *
111 + * @param integer $user_id user ID to override.
112 + * @param string $trigger Trigger name.
113 + * @param array $args Passed trigger args.
114 + * @return integer User ID.
115 + */
116 +function gamipress_lp_trigger_get_user_id( $user_id, $trigger, $args ) {
117 +
118 + switch ( $trigger ) {
119 + // Course
120 + case 'gamipress_lp_enroll_course':
121 + case 'gamipress_lp_enroll_specific_course':
122 + case 'gamipress_lp_finish_course':
123 + case 'gamipress_lp_finish_specific_course':
124 + // Lesson
125 + case 'gamipress_lp_complete_lesson':
126 + case 'gamipress_lp_complete_specific_lesson':
127 + // Finish quiz
128 + case 'gamipress_lp_finish_quiz':
129 + case 'gamipress_lp_finish_specific_quiz':
130 + case 'gamipress_lp_finish_quiz_specific_course':
131 + // Pass quiz
132 + case 'gamipress_lp_pass_quiz':
133 + case 'gamipress_lp_pass_specific_quiz':
134 + case 'gamipress_lp_pass_quiz_specific_course':
135 + // Fail quiz
136 + case 'gamipress_lp_fail_quiz':
137 + case 'gamipress_lp_fail_specific_quiz':
138 + case 'gamipress_lp_fail_quiz_specific_course':
139 + $user_id = $args[1];
140 + break;
141 + }
142 +
143 + return $user_id;
144 +
145 +}
146 +add_filter( 'gamipress_trigger_get_user_id', 'gamipress_lp_trigger_get_user_id', 10, 3 );
147 +
148 +/**
149 + * Get the id for a given specific trigger action.
150 + *
151 + * @since 1.0.1
152 + *
153 + * @param integer $specific_id Specific ID.
154 + * @param string $trigger Trigger name.
155 + * @param array $args Passed trigger args.
156 + *
157 + * @return integer Specific ID.
158 + */
159 +function gamipress_lp_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
160 +
161 + switch ( $trigger ) {
162 + case 'gamipress_lp_enroll_specific_course':
163 + case 'gamipress_lp_finish_specific_course':
164 + case 'gamipress_lp_complete_specific_lesson':
165 + case 'gamipress_lp_finish_specific_quiz':
166 + case 'gamipress_lp_pass_specific_quiz':
167 + case 'gamipress_lp_fail_specific_quiz':
168 + $specific_id = $args[0];
169 + break;
170 + case 'gamipress_lp_finish_quiz_specific_course':
171 + case 'gamipress_lp_pass_quiz_specific_course':
172 + case 'gamipress_lp_fail_quiz_specific_course':
173 + $specific_id = $args[2];
174 + break;
175 + }
176 +
177 + return $specific_id;
178 +}
179 +add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_lp_specific_trigger_get_id', 10, 3 );
180 +
181 +/**
182 + * Extended meta data for event trigger logging
183 + *
184 + * @since 1.0.1
185 + *
186 + * @param array $log_meta
187 + * @param integer $user_id
188 + * @param string $trigger
189 + * @param integer $site_id
190 + * @param array $args
191 + *
192 + * @return array
193 + */
194 +function gamipress_lp_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
195 +
196 + switch ( $trigger ) {
197 + // Course
198 + case 'gamipress_lp_enroll_course':
199 + case 'gamipress_lp_enroll_specific_course':
200 + case 'gamipress_lp_finish_course':
201 + case 'gamipress_lp_finish_specific_course':
202 + // Add the course ID
203 + $log_meta['course_id'] = $args[0];
204 + break;
205 + // Lesson
206 + case 'gamipress_lp_complete_lesson':
207 + case 'gamipress_lp_complete_specific_lesson':
208 + // Add the lesson ID
209 + $log_meta['lesson_id'] = $args[0];
210 + break;
211 + // Finish quiz
212 + case 'gamipress_lp_finish_quiz':
213 + case 'gamipress_lp_finish_specific_quiz':
214 + case 'gamipress_lp_finish_quiz_specific_course':
215 + // Pass quiz
216 + case 'gamipress_lp_pass_quiz':
217 + case 'gamipress_lp_pass_specific_quiz':
218 + case 'gamipress_lp_pass_quiz_specific_course':
219 + // Fail quiz
220 + case 'gamipress_lp_fail_quiz':
221 + case 'gamipress_lp_fail_specific_quiz':
222 + case 'gamipress_lp_fail_quiz_specific_course':
223 + // Add the course ID
224 + $log_meta['quiz_id'] = $args[0];
225 + $log_meta['course_id'] = $args[2];
226 + break;
227 + }
228 +
229 + return $log_meta;
230 +}
231 +add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_lp_log_event_trigger_meta_data', 10, 5 );