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/advanced-custom-fields/includes/triggers.php +295 -0 7.9.9.2 → 8.0.5 View file →
@@ -1,0 +1,295 @@
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 );