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 / thrive-quiz-builder / includes / triggers.php

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

236 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\Thrive_Quiz_Builder\Triggers
6 * @since 1.0.0
7 */
8
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 /**
13 * Register plugin activity triggers
14 *
15 * @param array $triggers
16 * @return mixed
17 */
18 function gamipress_thrive_quiz_builder_activity_triggers( $triggers ) {
19
20 $triggers[__( 'Thrive Quiz Builder', 'gamipress' )] = array(
21
22 // Quiz
23 'gamipress_thrive_quiz_builder_complete_quiz' => __( 'Complete any quiz', 'gamipress' ),
24 'gamipress_thrive_quiz_builder_complete_specific_quiz' => __( 'Complete specific quiz', 'gamipress' ),
25
26 // Quiz Type
27 'gamipress_thrive_quiz_builder_complete_quiz_type' => __( 'Complete quiz of specific type', 'gamipress' ),
28
29 // Percentage Quiz
30 'gamipress_thrive_quiz_builder_complete_percentage_quiz' => __( 'Complete any quiz with a grade percentage greater than, less than or equal to a specific percentage', 'gamipress' ),
31 'gamipress_thrive_quiz_builder_complete_specific_percentage_quiz' => __( 'Complete specific quiz with a grade percentage greater than, less than or equal to a specific percentage', 'gamipress' ),
32
33 // Share result
34 'gamipress_thrive_quiz_builder_share_result' => __( 'Share result of any quiz', 'gamipress' ),
35 'gamipress_thrive_quiz_builder_share_specific_result' => __( 'Share result of specific quiz', 'gamipress' ),
36
37 );
38
39 return $triggers;
40
41 }
42 add_filter( 'gamipress_activity_triggers', 'gamipress_thrive_quiz_builder_activity_triggers' );
43
44 /**
45 * Register specific activity triggers
46 *
47 * @since 1.0.0
48 *
49 * @param array $specific_activity_triggers
50 * @return array
51 */
52 function gamipress_thrive_quiz_builder_specific_activity_triggers( $specific_activity_triggers ) {
53
54 $specific_activity_triggers['gamipress_thrive_quiz_builder_complete_specific_quiz'] = array( 'tqb_quiz' );
55 $specific_activity_triggers['gamipress_thrive_quiz_builder_complete_specific_percentage_quiz'] = array( 'percentage_quizzes' );
56 $specific_activity_triggers['gamipress_thrive_quiz_builder_share_specific_result'] = array( 'tqb_quiz' );
57
58 return $specific_activity_triggers;
59 }
60 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_thrive_quiz_builder_specific_activity_triggers' );
61
62 /**
63 * Register specific activity triggers labels
64 *
65 * @since 1.0.0
66 *
67 * @param array $specific_activity_trigger_labels
68 * @return array
69 */
70 function gamipress_thrive_quiz_builder_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
71
72 $specific_activity_trigger_labels['gamipress_thrive_quiz_builder_complete_specific_quiz'] = __( 'Complete %s quiz', 'gamipress' );
73 $specific_activity_trigger_labels['gamipress_thrive_quiz_builder_complete_specific_percentage_quiz'] = __( 'Complete %s percentage quiz', 'gamipress' );
74 $specific_activity_trigger_labels['gamipress_thrive_quiz_builder_complete_specific_result'] = __( 'Share result of %s quiz', 'gamipress' );
75
76 return $specific_activity_trigger_labels;
77 }
78 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_thrive_quiz_builder_specific_activity_trigger_label' );
79
80 /**
81 * Build custom activity trigger label
82 *
83 * @param string $title
84 * @param integer $requirement_id
85 * @param array $requirement
86 *
87 * @return string
88 */
89 function gamipress_thrive_quiz_builder_activity_trigger_label( $title, $requirement_id, $requirement ) {
90
91 $percentage = ( isset( $requirement['thrive_quiz_builder_percentage'] ) ) ? absint( $requirement['thrive_quiz_builder_percentage'] ) : 0;
92 $percentage_condition = ( isset( $requirement['thrive_quiz_builder_percentage_condition'] ) ) ? $requirement['thrive_quiz_builder_percentage_condition'] : 'equal';
93 $percentage_conditions = gamipress_thrive_quiz_builder_get_percentage_conditions();
94
95 $quiz_types = gamipress_thrive_quiz_builder_get_quiz_types();
96 $quiz_type = ( isset( $requirement['thrive_quiz_builder_quiz_type'] ) ) ? $requirement['thrive_quiz_builder_quiz_type'] : '';
97
98 switch( $requirement['trigger_type'] ) {
99 // Quiz type
100 case 'gamipress_thrive_quiz_builder_complete_quiz_type':
101 if( $quiz_type === '' ) {
102 return __( 'Completed a quiz of a specific type', 'gamipress' );
103 } else {
104 return sprintf( __( 'Completed a quiz of %s type', 'gamipress' ), $quiz_types[$quiz_type] );
105
106 }
107 break;
108 // Any quiz percentage
109 case 'gamipress_thrive_quiz_builder_complete_percentage_quiz':
110 return sprintf( __( 'Complete any quiz with a grade percentage %s %s', 'gamipress' ), $percentage_conditions[$percentage_condition], $percentage . '%' );
111 break;
112 // Specific quiz percentage
113 case 'gamipress_thrive_quiz_builder_complete_specific_percentage_quiz':
114 $achievement_post_id = absint( $requirement['achievement_post'] );
115 $achievement_post_site_id = absint( $requirement['achievement_post_site_id'] );
116 $achievement_post_title = gamipress_get_specific_activity_trigger_post_title( $achievement_post_id, $requirement['trigger_type'], $achievement_post_site_id );
117
118 return sprintf( __( 'Complete %s quiz with a grade percentage %s %s', 'gamipress' ), $achievement_post_title, $percentage_conditions[$percentage_condition], $percentage . '%' );
119 break;
120
121 }
122
123 return $title;
124
125 }
126 add_filter( 'gamipress_activity_trigger_label', 'gamipress_thrive_quiz_builder_activity_trigger_label', 10, 3 );
127
128
129 /**
130 * Get user for a given trigger action.
131 *
132 * @since 1.0.0
133 *
134 * @param integer $user_id user ID to override.
135 * @param string $trigger Trigger name.
136 * @param array $args Passed trigger args.
137 * @return integer User ID.
138 */
139
140 function gamipress_thrive_quiz_builder_trigger_get_user_id( $user_id, $trigger, $args ) {
141
142 switch ( $trigger ) {
143 // Quiz
144 case 'gamipress_thrive_quiz_builder_complete_quiz':
145 case 'gamipress_thrive_quiz_builder_complete_specific_quiz':
146 // Share
147 case 'gamipress_thrive_quiz_builder_share_result':
148 case 'gamipress_thrive_quiz_builder_share_specific_result':
149 // Quiz Type
150 case 'gamipress_thrive_quiz_builder_complete_quiz_type':
151 // Percentage quiz
152 case 'gamipress_thrive_quiz_builder_complete_percentage_quiz':
153 case 'gamipress_thrive_quiz_builder_complete_specific_percentage_quiz':
154 $user_id = $args[1];
155 break;
156 }
157
158 return $user_id;
159
160 }
161 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_thrive_quiz_builder_trigger_get_user_id', 10, 3 );
162
163 /**
164 * Get the id for a given specific trigger action.
165 *
166 * @since 1.0.0
167 *
168 * @param integer $specific_id Specific ID to override.
169 * @param string $trigger Trigger name.
170 * @param array $args Passed trigger args.
171 *
172 * @return integer Specific ID.
173 */
174 function gamipress_thrive_quiz_builder_specific_trigger_get_id( $specific_id, $trigger, $args ) {
175
176 switch ( $trigger ) {
177 case 'gamipress_thrive_quiz_builder_complete_specific_quiz':
178 case 'gamipress_thrive_quiz_builder_share_specific_result':
179 case 'gamipress_thrive_quiz_builder_complete_specific_percentage_quiz':
180 $specific_id = $args[0];
181 break;
182 }
183
184 return $specific_id;
185
186 }
187
188 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_thrive_quiz_builder_specific_trigger_get_id', 10, 3 );
189
190 /**
191 * Extended meta data for event trigger logging
192 *
193 * @since 1.0.2
194 *
195 * @param array $log_meta
196 * @param integer $user_id
197 * @param string $trigger
198 * @param integer $site_id
199 * @param array $args
200 *
201 * @return array
202 */
203 function gamipress_thrive_quiz_builder_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
204
205 switch ( $trigger ) {
206
207 // Quiz
208 case 'gamipress_thrive_quiz_builder_complete_quiz':
209 case 'gamipress_thrive_quiz_builder_complete_specific_quiz':
210 // Add the quiz ID
211 $log_meta['quiz_id'] = $args[0];
212 break;
213 // Quiz Type
214 case 'gamipress_thrive_quiz_builder_complete_quiz_type':
215 // Add the quiz ID and type
216 $log_meta['quiz_id'] = $args[0];
217 $log_meta['quiz_type'] = $args[2];
218 break;
219 // Percentage quiz
220 case 'gamipress_thrive_quiz_builder_complete_percentage_quiz':
221 case 'gamipress_thrive_quiz_builder_complete_specific_percentage_quiz':
222 // Add the quiz ID
223 $log_meta['quiz_id'] = $args[0];
224 $log_meta['percentage'] = $args[2];
225 break;
226 // Share
227 case 'gamipress_thrive_quiz_builder_share_result':
228 case 'gamipress_thrive_quiz_builder_share_specific_result':
229 // Add the quiz ID
230 $log_meta['quiz_id'] = $args[2];
231 break;
232 }
233
234 return $log_meta;
235 }
236 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_thrive_quiz_builder_log_event_trigger_meta_data', 10, 5 );