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

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

231 lines 9.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\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 );