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 / bbforms / includes / triggers.php

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

285 lines 9.9 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\BBForms\Triggers
6 * @since 1.0.0
7 */
8
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 /**
13 * Register plugin specific triggers
14 *
15 * @since 1.0.0
16 *
17 * @param array $triggers
18 * @return mixed
19 */
20 function gamipress_bbforms_activity_triggers( $triggers ) {
21
22 $triggers[__( 'BBForms', 'gamipress' )] = array(
23 'gamipress_bbforms_form_submission' => __( 'Submit a form', 'gamipress' ),
24 'gamipress_bbforms_specific_form_submission' => __( 'Submit a specific form', 'gamipress' ),
25 'gamipress_bbforms_form_specific_category_submission' => __( 'Submit a form of a category', 'gamipress' ),
26 'gamipress_bbforms_form_specific_tag_submission' => __( 'Submit a form of a tag', 'gamipress' ),
27 'gamipress_bbforms_field_value_submission' => __( 'Submit a specific field value', 'gamipress' ),
28 'gamipress_bbforms_specific_field_value_submission' => __( 'Submit a specific field value on a specific form', 'gamipress' ),
29 );
30
31 return $triggers;
32
33 }
34 add_filter( 'gamipress_activity_triggers', 'gamipress_bbforms_activity_triggers' );
35
36 /**
37 * Register plugin specific activity triggers
38 *
39 * @since 1.0.0
40 *
41 * @param array $specific_activity_triggers
42 * @return array
43 */
44 function gamipress_bbforms_specific_activity_triggers( $specific_activity_triggers ) {
45
46 $specific_activity_triggers['gamipress_bbforms_specific_form_submission'] = array( 'bbforms' );
47 $specific_activity_triggers['gamipress_bbforms_specific_field_value_submission'] = array( 'bbforms' );
48
49 return $specific_activity_triggers;
50
51 }
52 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_bbforms_specific_activity_triggers' );
53
54 /**
55 * Build custom activity trigger label
56 *
57 * @since 1.0.0
58 *
59 * @param string $title
60 * @param integer $requirement_id
61 * @param array $requirement
62 *
63 * @return string
64 */
65 function gamipress_bbforms_activity_trigger_label( $title, $requirement_id, $requirement ) {
66
67 $category = ( isset( $requirement['bbforms_category'] ) ) ? $requirement['bbforms_category'] : '';
68 $category_name = gamipress_bbforms_get_category_title( $category );
69 $tag = ( isset( $requirement['bbforms_tag'] ) ) ? $requirement['bbforms_tag'] : '';
70 $tag_name = gamipress_bbforms_get_tag_title( $tag );
71 $field_name = ( isset( $requirement['bbforms_field_name'] ) ) ? $requirement['bbforms_field_name'] : '';
72 $field_value = ( isset( $requirement['bbforms_field_value'] ) ) ? $requirement['bbforms_field_value'] : '';
73
74 switch( $requirement['trigger_type'] ) {
75 // Category field value
76 case 'gamipress_bbforms_form_specific_category_submission':
77 return sprintf( __( 'User submits a form of %s category', 'gamipress' ), $category_name );
78 break;
79 // Tag field value
80 case 'gamipress_bbforms_form_specific_tag_submission':
81 return sprintf( __( 'User submits a form of %s tag', 'gamipress' ), $tag_name );
82 break;
83 // Specific field value
84 case 'gamipress_bbforms_field_value_submission':
85 return sprintf( __( 'Submit a form setting field "%s" to "%s" value', 'gamipress' ), $field_name, $field_value );
86 break;
87 // Specific field value on a specific form
88 case 'gamipress_bbforms_specific_field_value_submission':
89 $achievement_post_id = absint( $requirement['achievement_post'] );
90 $form_title = gamipress_get_specific_activity_trigger_post_title( $achievement_post_id, $requirement['trigger_type'], get_current_blog_id() );
91 return sprintf( __( 'Submit %s form setting field "%s" to "%s" value', 'gamipress' ), $form_title, $field_name, $field_value );
92 break;
93 }
94
95 return $title;
96 }
97 add_filter( 'gamipress_activity_trigger_label', 'gamipress_bbforms_activity_trigger_label', 10, 3 );
98
99 /**
100 * Register plugin specific activity triggers labels
101 *
102 * @since 1.0.0
103 *
104 * @param array $specific_activity_trigger_labels
105 * @return array
106 */
107 function gamipress_bbforms_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
108
109 $specific_activity_trigger_labels['gamipress_bbforms_specific_form_submission'] = __( 'User submits %s', 'gamipress' );
110 $specific_activity_trigger_labels['gamipress_bbforms_specific_field_value_submission'] = __( 'Submit a specific field value on %s', 'gamipress' );
111
112 return $specific_activity_trigger_labels;
113
114 }
115 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_bbforms_specific_activity_trigger_label' );
116
117 /**
118 * Get plugin specific activity trigger post title
119 *
120 * @since 1.0.0
121 *
122 * @param string $post_title
123 * @param integer $specific_id
124 * @param string $trigger_type
125 * @return string
126 */
127 function gamipress_bbforms_specific_activity_trigger_post_title( $post_title, $specific_id, $trigger_type ) {
128
129 global $wpdb;
130
131 switch ($trigger_type) {
132 case 'gamipress_bbforms_specific_form_submission':
133 case 'gamipress_bbforms_specific_field_value_submission':
134
135 if( absint( $specific_id ) !== 0 ) {
136
137 // Get the form title
138 $form_title = bbforms_get_form_title( $specific_id );
139
140 $post_title = $form_title;
141 }
142 break;
143 }
144
145 return $post_title;
146
147 }
148 add_filter( 'gamipress_specific_activity_trigger_post_title', 'gamipress_bbforms_specific_activity_trigger_post_title', 10, 3 );
149
150
151 /**
152 * Get user for a given trigger action.
153 *
154 * @since 1.0.0
155 *
156 * @param integer $user_id user ID to override.
157 * @param string $trigger Trigger name.
158 * @param array $args Passed trigger args.
159 * @return integer User ID.
160 */
161 function gamipress_bbforms_trigger_get_user_id( $user_id, $trigger, $args ) {
162
163 switch ( $trigger ) {
164 case 'gamipress_bbforms_form_submission':
165 case 'gamipress_bbforms_specific_form_submission':
166 case 'gamipress_bbforms_form_specific_category_submission':
167 case 'gamipress_bbforms_form_specific_tag_submission':
168 case 'gamipress_bbforms_field_value_submission':
169 case 'gamipress_bbforms_specific_field_value_submission':
170 $user_id = $args[1];
171 break;
172 }
173
174 return $user_id;
175
176 }
177 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_bbforms_trigger_get_user_id', 10, 3 );
178
179 /**
180 * Get the id for a given specific trigger action.
181 *
182 * @since 1.0.0
183 *
184 * @param integer $specific_id Specific ID.
185 * @param string $trigger Trigger name.
186 * @param array $args Passed trigger args.
187 *
188 * @return integer Specific ID.
189 */
190 function gamipress_bbforms_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
191
192 switch( $trigger ) {
193 case 'gamipress_bbforms_specific_form_submission':
194 case 'gamipress_bbforms_specific_field_value_submission':
195 $specific_id = $args[0];
196 }
197 return $specific_id;
198
199 }
200 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_bbforms_specific_trigger_get_id', 10, 3 );
201
202 /**
203 * Extended meta data for event trigger logging
204 *
205 * @since 1.0.0
206 *
207 * @param array $log_meta
208 * @param integer $user_id
209 * @param string $trigger
210 * @param integer $site_id
211 * @param array $args
212 *
213 * @return array
214 */
215 function gamipress_bbforms_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
216
217 switch ($trigger) {
218 case 'gamipress_bbforms_form_submission':
219 case 'gamipress_bbforms_specific_form_submission':
220 case 'gamipress_bbforms_form_specific_category_submission':
221 case 'gamipress_bbforms_form_specific_tag_submission':
222 // Add the form ID
223 $log_meta['form_id'] = $args[0];
224 break;
225 case 'gamipress_bbforms_field_value_submission':
226 case 'gamipress_bbforms_specific_field_value_submission':
227 // Add the form ID, field name and value
228 $log_meta['form_id'] = $args[0];
229 $log_meta['field_name'] = $args[2];
230 $log_meta['field_value'] = $args[3];
231 break;
232 }
233 return $log_meta;
234 }
235 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_bbforms_log_event_trigger_meta_data', 10, 5 );
236
237 /**
238 * Extra data fields
239 *
240 * @since 1.0.0
241 *
242 * @param array $fields
243 * @param int $log_id
244 * @param string $type
245 *
246 * @return array
247 */
248 function gamipress_bbforms_log_extra_data_fields( $fields, $log_id, $type ) {
249
250 $prefix = '_gamipress_';
251
252 $log = ct_get_object( $log_id );
253 $trigger = $log->trigger_type;
254
255 if( $type !== 'event_trigger' ) {
256 return $fields;
257 }
258
259 switch( $trigger ) {
260 case 'gamipress_bbforms_field_value_submission':
261 case 'gamipress_bbforms_specific_field_value_submission':
262
263 $field_value = ct_get_object_meta( $log_id, $prefix . 'field_value', true );
264
265 $fields[] = array(
266 'name' => __( 'Field name', 'gamipress' ),
267 'desc' => __( 'Field name attached to this log.', 'gamipress' ),
268 'id' => $prefix . 'field_name',
269 'type' => 'text',
270 );
271 $fields[] = array(
272 'name' => __( 'Field value', 'gamipress' ),
273 'desc' => __( 'Field value attached to this log.', 'gamipress' ),
274 'id' => $prefix . 'field_value',
275 'type' => ( is_array( $field_value ) ? 'advanced_select' : 'text' ),
276 'multiple' => ( is_array( $field_value ) && count( $field_value ) > 1 ? true : false ),
277 'options' => ( is_array( $field_value ) ? $field_value : array() ),
278 );
279 break;
280 }
281
282 return $fields;
283
284 }
285 add_filter( 'gamipress_log_extra_data_fields', 'gamipress_bbforms_log_extra_data_fields', 10, 3 );