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 / advanced-custom-fields / includes / triggers.php

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

295 lines 11.0 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\Advanced_Custom_Fields\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_acf_activity_triggers( $triggers ) {
21
22 $triggers[__( 'Advanced Custom Fields', 'gamipress' )] = array(
23
24 // Post fields
25 'gamipress_acf_update_any_post_field_any_value' => __( 'Update any post field with any value','gamipress' ),
26 'gamipress_acf_update_any_post_field_specific_value' => __( 'Update any post field with specific value','gamipress' ),
27 'gamipress_acf_update_specific_post_field_any_value' => __( 'Update specific post field with any value','gamipress' ),
28 'gamipress_acf_update_specific_post_field_specific_value' => __( 'Update specific post field with specific value','gamipress' ),
29
30 // User fields
31 'gamipress_acf_update_any_user_field_any_value' => __( 'Update any user field with any value','gamipress' ),
32 'gamipress_acf_update_any_user_field_specific_value' => __( 'Update any user field with specific value','gamipress' ),
33 'gamipress_acf_update_specific_user_field_any_value' => __( 'Update specific user field with any value','gamipress' ),
34 'gamipress_acf_update_specific_user_field_specific_value' => __( 'Update specific user field with specific value','gamipress' ),
35 );
36
37 return $triggers;
38
39 }
40 add_filter( 'gamipress_activity_triggers', 'gamipress_acf_activity_triggers' );
41
42 /**
43 * Register plugin specific activity triggers
44 *
45 * @since 1.0.0
46 *
47 * @param array $specific_activity_triggers
48 * @return array
49 */
50 function gamipress_acf_specific_activity_triggers( $specific_activity_triggers ) {
51
52 // Post fields
53 $specific_activity_triggers['gamipress_acf_update_specific_post_field_any_value'] = array( 'acf_post_fields' );
54 $specific_activity_triggers['gamipress_acf_update_specific_post_field_specific_value'] = array( 'acf_post_fields' );
55
56 // User fields
57 $specific_activity_triggers['gamipress_acf_update_specific_user_field_any_value'] = array( 'acf_user_fields' );
58 $specific_activity_triggers['gamipress_acf_update_specific_user_field_specific_value'] = array( 'acf_user_fields' );
59
60 return $specific_activity_triggers;
61
62 }
63 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_acf_specific_activity_triggers' );
64
65 /**
66 * Register plugin specific activity triggers labels
67 *
68 * @since 1.0.0
69 *
70 * @param array $specific_activity_trigger_labels
71 * @return array
72 */
73 function gamipress_acf_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
74
75 // Post fields
76 $specific_activity_trigger_labels['gamipress_acf_update_specific_post_field_any_value'] = __( 'Update specific post field %s with any value', 'gamipress' );
77 $specific_activity_trigger_labels['gamipress_acf_update_specific_post_field_specific_value'] = __( 'Update specific post field %s with specific value', 'gamipress' );
78
79 // User fields
80 $specific_activity_trigger_labels['gamipress_acf_update_specific_user_field_any_value'] = __( 'Update specific user field %s with any value', 'gamipress' );
81 $specific_activity_trigger_labels['gamipress_acf_update_specific_user_field_specific_value'] = __( 'Update specific user field %s with specific value', 'gamipress' );
82
83 return $specific_activity_trigger_labels;
84 }
85 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_acf_specific_activity_trigger_label', 20 );
86
87 /**
88 * Build custom activity trigger label
89 *
90 * @since 1.0.0
91 *
92 * @param string $title
93 * @param integer $requirement_id
94 * @param array $requirement
95 *
96 * @return string
97 */
98 function gamipress_acf_activity_trigger_label( $title, $requirement_id, $requirement ) {
99
100 $field_value = ( isset( $requirement['acf_field_value'] ) ) ? $requirement['acf_field_value'] : '';
101 $value_condition = ( isset( $requirement['acf_field_value_condition'] ) ) ? $requirement['acf_field_value_condition'] : '';
102 $value_conditions = gamipress_acf_get_value_conditions();
103
104 switch( $requirement['trigger_type'] ) {
105 // Post fields
106 case 'gamipress_acf_update_any_post_field_specific_value':
107 return sprintf( __( 'Update any post field with value that matches with "%s"', 'gamipress' ), $field_value );
108 break;
109 case 'gamipress_acf_update_specific_post_field_specific_value':
110 $achievement_post_id = absint( $requirement['achievement_post'] );
111 $acf_post_field_title = gamipress_acf_get_post_field_title( $achievement_post_id );
112 return sprintf( __( 'Update post field %s with a value %s %s', 'gamipress' ), $acf_post_field_title, $value_conditions[$value_condition], $field_value );
113 break;
114
115 // User fields
116 case 'gamipress_acf_update_any_user_field_specific_value':
117 return sprintf( __( 'Update any user field with value that matches with "%s"', 'gamipress' ), $field_value );
118 break;
119 case 'gamipress_acf_update_specific_user_field_specific_value':
120 $achievement_post_id = absint( $requirement['achievement_post'] );
121 $acf_post_field_title = gamipress_acf_get_post_field_title( $achievement_post_id );
122 return sprintf( __( 'Update user field %s with a value %s %s', 'gamipress' ), $acf_post_field_title, $value_conditions[$value_condition], $field_value );
123 break;
124
125 }
126
127 return $title;
128 }
129 add_filter( 'gamipress_activity_trigger_label', 'gamipress_acf_activity_trigger_label', 10, 3 );
130
131 /**
132 * Get plugin specific activity trigger post title
133 *
134 * @since 1.0.0
135 *
136 * @param string $post_title
137 * @param integer $specific_id
138 * @param string $trigger_type
139 *
140 * @return string
141 */
142 function gamipress_acf_specific_activity_trigger_post_title( $post_title, $specific_id, $trigger_type ) {
143
144 switch( $trigger_type ) {
145 case 'gamipress_acf_update_specific_post_field_any_value':
146
147 if( absint( $specific_id ) !== 0 ) {
148 // Get the post field title
149 $acf_post_field_title = gamipress_acf_get_post_field_title( $specific_id );
150
151 $post_title = $acf_post_field_title;
152 }
153 break;
154
155 case 'gamipress_acf_update_specific_user_field_any_value':
156 if( absint( $specific_id ) !== 0 ) {
157 // Get the user field title
158 $acf_user_field_title = gamipress_acf_get_post_field_title( $specific_id );
159
160 $post_title = $acf_user_field_title;
161 }
162 break;
163 }
164
165 return $post_title;
166
167 }
168 add_filter( 'gamipress_specific_activity_trigger_post_title', 'gamipress_acf_specific_activity_trigger_post_title', 10, 3 );
169
170 /**
171 * Get plugin specific activity trigger permalink
172 *
173 * @since 1.0.0
174 *
175 * @param string $permalink
176 * @param integer $specific_id
177 * @param string $trigger_type
178 * @param integer $site_id
179 *
180 * @return string
181 */
182 function gamipress_acf_specific_activity_trigger_permalink( $permalink, $specific_id, $trigger_type, $site_id ) {
183
184 switch( $trigger_type ) {
185 case 'gamipress_acf_update_specific_post_field_any_value':
186 case 'gamipress_acf_update_specific_user_field_any_value':
187 $permalink = '';
188 break;
189 }
190
191 return $permalink;
192
193 }
194 add_filter( 'gamipress_specific_activity_trigger_permalink', 'gamipress_acf_specific_activity_trigger_permalink', 10, 4 );
195
196 /**
197 * Get user for an acf trigger action.
198 *
199 * @since 1.0.0
200 *
201 * @param integer $user_id user ID to override.
202 * @param string $trigger Trigger name.
203 * @param array $args Passed trigger args.
204 * @return integer User ID.
205 */
206 function gamipress_acf_trigger_get_user_id( $user_id, $trigger, $args ) {
207
208 switch ( $trigger ) {
209 // Posts
210 case 'gamipress_acf_update_any_post_field_any_value':
211 case 'gamipress_acf_update_specific_post_field_any_value':
212 case 'gamipress_acf_update_any_post_field_specific_value':
213 case 'gamipress_acf_update_specific_post_field_specific_value':
214 // Users
215 case 'gamipress_acf_update_any_user_field_any_value':
216 case 'gamipress_acf_update_any_user_field_specific_value':
217 case 'gamipress_acf_update_specific_user_field_any_value':
218 case 'gamipress_acf_update_specific_user_field_specific_value':
219 $user_id = $args[0];
220 break;
221 }
222
223 return $user_id;
224
225 }
226 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_acf_trigger_get_user_id', 10, 3 );
227
228 /**
229 * Get the id for an acf specific trigger action.
230 *
231 * @since 1.0.0
232 *
233 * @param integer $specific_id Specific ID.
234 * @param string $trigger Trigger name.
235 * @param array $args Passed trigger args.
236 *
237 * @return integer Specific ID.
238 */
239 function gamipress_acf_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
240
241 global $wpdb;
242
243 switch ( $trigger ) {
244 // Posts
245 case 'gamipress_acf_update_specific_post_field_any_value':
246 case 'gamipress_acf_update_specific_post_field_specific_value':
247 $specific_id = $args[2];
248 break;
249 // Users
250 case 'gamipress_acf_update_specific_user_field_any_value':
251 case 'gamipress_acf_update_specific_user_field_specific_value':
252 $specific_id = $args[2];
253 break;
254 }
255
256 return $specific_id;
257 }
258 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_acf_specific_trigger_get_id', 10, 3 );
259
260 /**
261 * Extended meta data for event trigger logging
262 *
263 * @since 1.0.0
264 *
265 * @param array $log_meta
266 * @param integer $user_id
267 * @param string $trigger
268 * @param integer $site_id
269 * @param array $args
270 *
271 * @return array
272 */
273 function gamipress_acf_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
274
275 switch ( $trigger ) {
276 // Posts
277 case 'gamipress_acf_update_any_post_field_any_value':
278 case 'gamipress_acf_update_specific_post_field_any_value':
279 case 'gamipress_acf_update_any_post_field_specific_value':
280 case 'gamipress_acf_update_specific_post_field_specific_value':
281 // Users
282 case 'gamipress_acf_update_any_user_field_any_value':
283 case 'gamipress_acf_update_any_user_field_specific_value':
284 case 'gamipress_acf_update_specific_user_field_any_value':
285 case 'gamipress_acf_update_specific_user_field_specific_value':
286 // Add the user ID, field name and value
287 $log_meta['user_id'] = $args[0];
288 $log_meta['field_name'] = $args[2];
289 $log_meta['field_value'] = $args[3];
290 break;
291 }
292
293 return $log_meta;
294 }
295 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_acf_log_event_trigger_meta_data', 10, 5 );