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/thrive-quiz-builder/includes/triggers.php +236 -0 7.9.2 → 8.0.5 View file →
@@ -1,0 +1,236 @@
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 );