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

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

593 lines 27.5 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\BuddyPress\Triggers
6 * @since 1.0.0
7 */
8
9 // Exit if accessed directly
10 if( !defined( 'ABSPATH' ) ) exit;
11
12 /**
13 * Register BuddyPress specific triggers
14 *
15 * @param array $triggers
16 * @return mixed
17 */
18 function gamipress_bp_activity_triggers( $triggers ) {
19
20 // BuddyPress
21 $triggers[__( 'BuddyPress', 'gamipress' )] = array(
22 'gamipress_bp_activate_user' => __( 'Activated account', 'gamipress' ),
23 'gamipress_bp_set_member_type' => __( 'Get assigned to a specific profile type', 'gamipress' ),
24 );
25
26 // BuddyPress Profile
27 if ( gamipress_bp_is_active( 'xprofile' ) ) {
28 $triggers[__( 'BuddyPress Profile', 'gamipress' )] = array(
29 'gamipress_bp_upload_avatar' => __( 'Change profile avatar', 'gamipress' ),
30 'gamipress_bp_upload_cover_image' => __( 'Change cover image', 'gamipress' ),
31 'gamipress_bp_update_profile' => __( 'Update profile information', 'gamipress' ),
32 'gamipress_bp_update_profile_any_value' => __( 'Update profile field with any value', 'gamipress' ),
33 'gamipress_bp_update_profile_specific_value' => __( 'Update profile field with specific value', 'gamipress' ),
34 );
35 }
36
37 // BuddyPress Friendships
38 if ( gamipress_bp_is_active( 'friends' ) ) {
39 $triggers[__( 'BuddyPress Friendships', 'gamipress' )] = array(
40 'gamipress_bp_friendship_request' => __( 'Send a friendship request', 'gamipress' ),
41 'gamipress_bp_friendship_accepted' => __( 'Accept a friendship request', 'gamipress' ),
42 'gamipress_bp_get_friendship_accepted' => __( 'Get a friendship request accepted', 'gamipress' ),
43 'gamipress_bp_friendship_rejected' => __( 'Reject a friendship request', 'gamipress' ),
44 'gamipress_bp_get_friendship_rejected' => __( 'Get a friendship request rejected', 'gamipress' ),
45 'gamipress_bp_friendship_deleted' => __( 'Remove a friendship', 'gamipress' ),
46 'gamipress_bp_get_friendship_deleted' => __( 'Get a friendship removed', 'gamipress' ),
47 );
48 }
49
50 // BuddyPress Messages
51 if ( gamipress_bp_is_active( 'messages' ) ) {
52 $triggers[__( 'BuddyPress Messages', 'gamipress' )] = array(
53 'gamipress_bp_send_message' => __( 'Send/Reply to a private message', 'gamipress' ),
54 );
55 }
56
57 // BuddyPress Activity
58 if ( gamipress_bp_is_active( 'activity' ) ) {
59 $triggers[__( 'BuddyPress Activity', 'gamipress' )] = array(
60 'gamipress_bp_publish_activity' => __( 'Publish an activity post', 'gamipress' ),
61 'gamipress_bp_delete_activity' => __( 'Remove an activity post', 'gamipress' ),
62 'gamipress_bp_new_activity_comment' => __( 'Reply to an activity post', 'gamipress' ),
63 'gamipress_bp_get_new_activity_comment' => __( 'Get a reply on an activity post', 'gamipress' ),
64 'gamipress_bp_delete_activity_comment' => __( 'Delete a reply from an activity post', 'gamipress' ),
65 'gamipress_bp_favorite_activity' => __( 'Favorite an activity post', 'gamipress' ),
66 'gamipress_bp_remove_favorite_activity' => __( 'Remove a favorite on an activity post', 'gamipress' ),
67 'gamipress_bp_user_favorite_activity' => __( 'Get a favorite on an activity post', 'gamipress' ),
68 'gamipress_bp_user_remove_favorite_activity' => __( 'Get a favorite removed on an activity post', 'gamipress' ),
69 'gamipress_bp_user_get_spam_activity' => __( 'Get an activity marked as spam', 'gamipress' ),
70 );
71 }
72
73 // BuddyPress Groups
74 if ( gamipress_bp_is_active( 'groups' ) ) {
75 $triggers[__( 'BuddyPress Groups', 'gamipress' )] = array(
76 'gamipress_bp_group_publish_activity' => __( 'Publish an activity post in a group', 'gamipress' ),
77 'gamipress_bp_specific_group_publish_activity' => __( 'Publish an activity post in a specific group', 'gamipress' ),
78 'gamipress_bp_group_reply_comment' => __( 'Reply a comment in a group', 'gamipress' ),
79 'gamipress_bp_specific_group_reply_comment' => __( 'Reply a comment in a specific group', 'gamipress' ),
80 'gamipress_bp_group_get_reply_comment' => __( 'Get a reply on a comment in a group', 'gamipress' ),
81 'gamipress_bp_specific_group_get_reply_comment' => __( 'Get a reply on a comment in a specific group', 'gamipress' ),
82 'gamipress_bp_group_delete_activity' => __( 'Remove an activity post from a group', 'gamipress' ),
83 'gamipress_bp_specific_group_delete_activity' => __( 'Remove an activity post from a specific group', 'gamipress' ),
84 'gamipress_bp_new_group' => __( 'Create a group', 'gamipress' ),
85 'gamipress_bp_delete_group' => __( 'Delete a group', 'gamipress' ),
86 'gamipress_bp_delete_specific_group' => __( 'Delete a specific group', 'gamipress' ),
87 'gamipress_bp_join_group' => __( 'Join a group', 'gamipress' ),
88 'gamipress_bp_join_specific_group' => __( 'Join a specific group', 'gamipress' ),
89 'gamipress_bp_leave_group' => __( 'Leave a group', 'gamipress' ),
90 'gamipress_bp_leave_specific_group' => __( 'Leave a specific group', 'gamipress' ),
91 'gamipress_bp_request_join_private_group' => __( 'Request to join a private group', 'gamipress' ),
92 'gamipress_bp_request_join_specific_private_group' => __( 'Request to join a specific private group', 'gamipress' ),
93 'gamipress_bp_join_private_group' => __( 'Get accepted on a private group', 'gamipress' ),
94 'gamipress_bp_join_specific_private_group' => __( 'Get accepted on a specific private group', 'gamipress' ),
95 'gamipress_bp_invite_user' => __( 'Invite someone to join a group', 'gamipress' ),
96 'gamipress_bp_invite_user_specific_group' => __( 'Invite someone to join a specific group', 'gamipress' ),
97 'gamipress_bp_promote_member' => __( 'Get promoted as moderator/administrator of a group', 'gamipress' ),
98 'gamipress_bp_promote_member_specific_group' => __( 'Get promoted as moderator/administrator of a specific group', 'gamipress' ),
99 'gamipress_bp_promoted_member' => __( 'Promote another member to moderator/administrator of a group', 'gamipress' ),
100 'gamipress_bp_promoted_member_specific_group' => __( 'Promote another member to moderator/administrator of a specific group', 'gamipress' ),
101 );
102 }
103
104 return $triggers;
105
106 }
107 add_filter( 'gamipress_activity_triggers', 'gamipress_bp_activity_triggers' );
108
109 /**
110 * Build custom activity trigger label
111 *
112 * @since 1.0.0
113 *
114 * @param string $title
115 * @param integer $requirement_id
116 * @param array $requirement
117 *
118 * @return string
119 */
120 function gamipress_bp_activity_trigger_label( $title, $requirement_id, $requirement ) {
121
122 $bp_member_type = ( isset( $requirement['bp_member_type'] ) ) ? $requirement['bp_member_type'] : '';
123 $bp_field_value = ( isset( $requirement['bp_field_value'] ) ) ? $requirement['bp_field_value'] : '';
124
125 switch( $requirement['trigger_type'] ) {
126
127 case 'gamipress_bp_set_member_type':
128
129 if( function_exists( 'bp_get_member_types' ) ) {
130 $member_types = bp_get_member_types( array(), 'objects' );
131 } else {
132 $member_types = array();
133 }
134
135 if( isset( $member_types[$bp_member_type] ) ) {
136 return sprintf( __( 'Get assigned to the %s type', 'gamipress' ), $member_types[$bp_member_type]->labels['singular_name'] );
137 }
138 break;
139
140 case 'gamipress_bp_update_profile_specific_value':
141 $achievement_post_id = absint( $requirement['achievement_post'] );
142 $bp_field_name = gamipress_get_specific_activity_trigger_post_title( $achievement_post_id, $requirement['trigger_type'], get_current_blog_id() );
143 return sprintf( __( 'Update %s field with %s value', 'gamipress' ), $bp_field_name, $bp_field_value );
144
145 break;
146
147 }
148
149 return $title;
150 }
151 add_filter( 'gamipress_activity_trigger_label', 'gamipress_bp_activity_trigger_label', 10, 3 );
152
153 /**
154 * Register BuddyPress specific activity triggers
155 *
156 * @since 1.0.0
157 *
158 * @param array $specific_activity_triggers
159 * @return array
160 */
161 function gamipress_bp_specific_activity_triggers( $specific_activity_triggers ) {
162
163 $specific_activity_triggers['gamipress_bp_specific_group_publish_activity'] = array( 'bp_groups' );
164 $specific_activity_triggers['gamipress_bp_specific_group_delete_activity'] = array( 'bp_groups' );
165 $specific_activity_triggers['gamipress_bp_specific_group_reply_comment'] = array( 'bp_groups' );
166 $specific_activity_triggers['gamipress_bp_specific_group_get_reply_comment'] = array( 'bp_groups' );
167 $specific_activity_triggers['gamipress_bp_delete_specific_group'] = array( 'bp_groups' );
168 $specific_activity_triggers['gamipress_bp_join_specific_group'] = array( 'bp_groups' );
169 $specific_activity_triggers['gamipress_bp_leave_specific_group'] = array( 'bp_groups' );
170 $specific_activity_triggers['gamipress_bp_request_join_specific_private_group'] = array( 'bp_groups' );
171 $specific_activity_triggers['gamipress_bp_join_specific_private_group'] = array( 'bp_groups' );
172 $specific_activity_triggers['gamipress_bp_invite_user_specific_group'] = array( 'bp_groups' );
173 $specific_activity_triggers['gamipress_bp_promote_member_specific_group'] = array( 'bp_groups' );
174 $specific_activity_triggers['gamipress_bp_promoted_member_specific_group'] = array( 'bp_groups' );
175 $specific_activity_triggers['gamipress_bp_update_profile_any_value'] = array( 'bp_fields' );
176 $specific_activity_triggers['gamipress_bp_update_profile_specific_value'] = array( 'bp_fields' );
177
178 return $specific_activity_triggers;
179 }
180 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_bp_specific_activity_triggers' );
181
182 /**
183 * Register BuddyPress specific activity triggers labels
184 *
185 * @since 1.0.0
186 *
187 * @param array $specific_activity_trigger_labels
188 * @return array
189 */
190 function gamipress_bp_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
191
192 $specific_activity_trigger_labels['gamipress_bp_specific_group_publish_activity'] = __( 'Publish an activity post on %s group', 'gamipress' );
193 $specific_activity_trigger_labels['gamipress_bp_specific_group_delete_activity'] = __( 'Remove an activity post from %s group', 'gamipress' );
194 $specific_activity_trigger_labels['gamipress_bp_specific_group_reply_comment'] = __( 'Reply a comment on %s group', 'gamipress' );
195 $specific_activity_trigger_labels['gamipress_bp_specific_group_get_reply_comment'] = __( 'Get a reply in a comment on %s group', 'gamipress' );
196 $specific_activity_trigger_labels['gamipress_bp_join_specific_group'] = __( 'Join %s group', 'gamipress' );
197 $specific_activity_trigger_labels['gamipress_bp_leave_specific_group'] = __( 'Leave %s group', 'gamipress' );
198 $specific_activity_trigger_labels['gamipress_bp_request_join_specific_private_group'] = __( 'Request to join %s group', 'gamipress' );
199 $specific_activity_trigger_labels['gamipress_bp_join_specific_private_group'] = __( 'Get accepted on %s group', 'gamipress' );
200 $specific_activity_trigger_labels['gamipress_bp_delete_specific_group'] = __( 'Delete %s group', 'gamipress' );
201 $specific_activity_trigger_labels['gamipress_bp_invite_user_specific_group'] = __( 'Invite someone to join %s group', 'gamipress' );
202 $specific_activity_trigger_labels['gamipress_bp_promote_member_specific_group'] = __( 'Get promoted as moderator/administrator of %s group', 'gamipress' );
203 $specific_activity_trigger_labels['gamipress_bp_promoted_member_specific_group'] = __( 'Promote another member to moderator/administrator of %s group', 'gamipress' );
204 $specific_activity_trigger_labels['gamipress_bp_update_profile_any_value'] = __( 'Update %s field with any value', 'gamipress' );
205 $specific_activity_trigger_labels['gamipress_bp_update_profile_specific_value'] = __( 'Update %s field with specific value', 'gamipress' );
206
207
208 return $specific_activity_trigger_labels;
209 }
210 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_bp_specific_activity_trigger_label' );
211
212 /**
213 * Get specific activity trigger post title
214 *
215 * @since 1.2.1
216 *
217 * @param string $post_title
218 * @param integer $specific_id
219 * @param string $trigger_type
220 * @param int $site_id
221 * @return string
222 */
223 function gamipress_bp_specific_activity_trigger_post_title( $post_title, $specific_id, $trigger_type, $site_id ) {
224
225 switch( $trigger_type ) {
226 case 'gamipress_bp_specific_group_publish_activity':
227 case 'gamipress_bp_specific_group_delete_activity':
228 case 'gamipress_bp_specific_group_reply_comment':
229 case 'gamipress_bp_specific_group_get_reply_comment':
230 case 'gamipress_bp_join_specific_group':
231 case 'gamipress_bp_delete_specific_group':
232 case 'gamipress_bp_leave_specific_group':
233 case 'gamipress_bp_request_join_specific_private_group':
234 case 'gamipress_bp_join_specific_private_group':
235 case 'gamipress_bp_invite_user_specific_group':
236 case 'gamipress_bp_promote_member_specific_group':
237 case 'gamipress_bp_promoted_member_specific_group':
238 if( absint( $specific_id ) !== 0 && class_exists( 'BuddyPress' ) ) {
239
240 $group = groups_get_group( $specific_id );
241
242 // Return the group name as post title
243 $post_title = $group->name;
244 }
245 break;
246
247 case 'gamipress_bp_update_profile_any_value':
248 case 'gamipress_bp_update_profile_specific_value':
249 if( absint( $specific_id ) !== 0 ) {
250 // Get the service title
251 $field_title = gamipress_bp_get_profile_field_name( $specific_id );
252
253 $post_title = $field_title;
254 }
255 break;
256 }
257
258 return $post_title;
259
260 }
261 add_filter( 'gamipress_specific_activity_trigger_post_title', 'gamipress_bp_specific_activity_trigger_post_title', 10, 4 );
262
263 /**
264 * Get plugin specific activity trigger permalink
265 *
266 * @since 1.0.0
267 *
268 * @param string $permalink
269 * @param integer $specific_id
270 * @param string $trigger_type
271 * @param integer $site_id
272 *
273 * @return string
274 */
275 function gamipress_bp_specific_activity_trigger_permalink( $permalink, $specific_id, $trigger_type, $site_id ) {
276
277 switch( $trigger_type ) {
278 case 'gamipress_bp_specific_group_publish_activity':
279 case 'gamipress_bp_specific_group_delete_activity':
280 case 'gamipress_bp_specific_group_reply_comment':
281 case 'gamipress_bp_specific_group_get_reply_comment':
282 case 'gamipress_bp_join_specific_group':
283 case 'gamipress_bp_leave_specific_group':
284 case 'gamipress_bp_delete_specific_group':
285 case 'gamipress_bp_request_join_specific_private_group':
286 case 'gamipress_bp_join_specific_private_group':
287 case 'gamipress_bp_invite_user_specific_group':
288 case 'gamipress_bp_promote_member_specific_group':
289 case 'gamipress_bp_promoted_member_specific_group':
290
291 // Init permalink to blank to override GamiPress workflow
292 $permalink = '';
293
294 if( absint( $specific_id ) !== 0 && class_exists( 'BuddyPress' ) ) {
295
296 $group = groups_get_group( $specific_id );
297
298 // Setup the group permalink
299 $permalink = bp_get_group_permalink( $group );
300 }
301 break;
302
303 case 'gamipress_bp_update_profile_any_value':
304 case 'gamipress_bp_update_profile_specific_value':
305 $permalink = '';
306 break;
307 }
308
309 return $permalink;
310
311 }
312 add_filter( 'gamipress_specific_activity_trigger_permalink', 'gamipress_bp_specific_activity_trigger_permalink', 10, 4 );
313
314 /**
315 * Get user for a given trigger action.
316 *
317 * @since 1.0.0
318 *
319 * @param integer $user_id user ID to override.
320 * @param string $trigger Trigger name.
321 * @param array $args Passed trigger args.
322 * @return integer User ID.
323 */
324 function gamipress_bp_trigger_get_user_id( $user_id, $trigger, $args ) {
325
326 switch ( $trigger ) {
327 // BuddyPress
328 case 'gamipress_bp_set_member_type':
329 // BuddyPress Profile
330 case 'gamipress_bp_upload_avatar':
331 case 'gamipress_bp_upload_cover_image':
332 case 'gamipress_bp_update_profile':
333 case 'gamipress_bp_update_profile_any_value':
334 case 'gamipress_bp_update_profile_specific_value':
335 $user_id = $args[0];
336 break;
337 // BuddyPress
338 case 'gamipress_bp_activate_user':
339 // BuddyPress Friendships
340 case 'gamipress_bp_friendship_request':
341 case 'gamipress_bp_friendship_accepted':
342 case 'gamipress_bp_get_friendship_accepted':
343 case 'gamipress_bp_friendship_rejected':
344 case 'gamipress_bp_get_friendship_rejected':
345 case 'gamipress_bp_friendship_deleted':
346 case 'gamipress_bp_get_friendship_deleted':
347 // BuddyPress Messages
348 case 'gamipress_bp_send_message':
349 // BuddyPress Activity
350 case 'gamipress_bp_publish_activity':
351 case 'gamipress_bp_delete_activity':
352 case 'gamipress_bp_new_activity_comment':
353 case 'gamipress_bp_get_new_activity_comment':
354 case 'gamipress_bp_delete_activity_comment':
355 case 'gamipress_bp_favorite_activity':
356 case 'gamipress_bp_remove_favorite_activity':
357 case 'gamipress_bp_user_favorite_activity':
358 case 'gamipress_bp_user_remove_favorite_activity':
359 case 'gamipress_bp_user_get_spam_activity':
360 // BuddyPress Groups
361 case 'gamipress_bp_group_publish_activity':
362 case 'gamipress_bp_specific_group_publish_activity':
363 case 'gamipress_bp_group_reply_comment':
364 case 'gamipress_bp_specific_group_reply_comment':
365 case 'gamipress_bp_group_get_reply_comment':
366 case 'gamipress_bp_specific_group_get_reply_comment':
367 case 'gamipress_bp_group_delete_activity':
368 case 'gamipress_bp_specific_group_delete_activity':
369 case 'gamipress_bp_join_group':
370 case 'gamipress_bp_join_specific_group':
371 case 'gamipress_bp_delete_group':
372 case 'gamipress_bp_delete_specific_group':
373 case 'gamipress_bp_leave_group':
374 case 'gamipress_bp_leave_specific_group':
375 case 'gamipress_bp_request_join_private_group':
376 case 'gamipress_bp_request_join_specific_private_group':
377 case 'gamipress_bp_join_private_group':
378 case 'gamipress_bp_join_specific_private_group':
379 case 'gamipress_bp_invite_user':
380 case 'gamipress_bp_invite_user_specific_group':
381 case 'gamipress_bp_promote_member':
382 case 'gamipress_bp_promote_member_specific_group':
383 case 'gamipress_bp_promoted_member':
384 case 'gamipress_bp_promoted_member_specific_group':
385 $user_id = $args[1];
386 break;
387 }
388
389 return $user_id;
390
391 }
392
393 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_bp_trigger_get_user_id', 10, 3);
394
395 /**
396 * Get the id for a given specific trigger action.
397 *
398 * @since 1.0.5
399 *
400 * @param integer $specific_id Specific ID.
401 * @param string $trigger Trigger name.
402 * @param array $args Passed trigger args.
403 *
404 * @return integer Specific ID.
405 */
406 function gamipress_bp_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
407
408 switch ( $trigger ) {
409 case 'gamipress_bp_specific_group_publish_activity':
410 case 'gamipress_bp_specific_group_delete_activity':
411 case 'gamipress_bp_specific_group_reply_comment':
412 $specific_id = $args[2];
413 break;
414 case 'gamipress_bp_specific_group_get_reply_comment':
415 $specific_id = $args[3];
416 break;
417 case 'gamipress_bp_join_specific_group':
418 case 'gamipress_bp_leave_specific_group':
419 case 'gamipress_bp_request_join_specific_private_group':
420 case 'gamipress_bp_join_specific_private_group':
421 case 'gamipress_bp_invite_user_specific_group':
422 case 'gamipress_bp_promote_member_specific_group':
423 case 'gamipress_bp_promoted_member_specific_group':
424 case 'gamipress_bp_delete_specific_group':
425 $specific_id = $args[0];
426 break;
427 case 'gamipress_bp_update_profile_any_value':
428 case 'gamipress_bp_update_profile_specific_value':
429 $specific_id = $args[1];
430 break;
431 }
432
433 return $specific_id;
434 }
435 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_bp_specific_trigger_get_id', 10, 3 );
436
437 /**
438 * Extended meta data for event trigger logging
439 *
440 * @since 1.0.5
441 *
442 * @param array $log_meta
443 * @param integer $user_id
444 * @param string $trigger
445 * @param integer $site_id
446 * @param array $args
447 *
448 * @return array
449 */
450 function gamipress_bp_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
451
452 switch ( $trigger ) {
453 case 'gamipress_bp_set_member_type':
454 // Add the member type ID
455 $log_meta['member_type'] = $args[1];
456 break;
457 case 'gamipress_bp_friendship_request':
458 case 'gamipress_bp_friendship_accepted':
459 case 'gamipress_bp_get_friendship_accepted':
460 case 'gamipress_bp_friendship_rejected':
461 case 'gamipress_bp_get_friendship_rejected':
462 case 'gamipress_bp_friendship_deleted':
463 case 'gamipress_bp_get_friendship_deleted':
464 // Add the friendship ID
465 $log_meta['friendship_id'] = $args[0];
466 break;
467 case 'gamipress_bp_publish_activity':
468 case 'gamipress_bp_delete_activity':
469 case 'gamipress_bp_favorite_activity':
470 case 'gamipress_bp_remove_favorite_activity':
471 case 'gamipress_bp_user_get_spam_activity':
472 // Add the activity ID
473 $log_meta['activity_id'] = $args[0];
474 break;
475 case 'gamipress_bp_user_favorite_activity':
476 case 'gamipress_bp_user_remove_favorite_activity':
477 // Add the activity and user that performs the favorite ID (activity author is stored by default on user_id)
478 $log_meta['activity_id'] = $args[0];
479 $log_meta['favorites_id'] = $args[2];
480 break;
481 case 'gamipress_bp_new_activity_comment':
482 case 'gamipress_bp_get_new_activity_comment':
483 case 'gamipress_bp_delete_activity_comment':
484 // Add the comment ID
485 $log_meta['comment_id'] = $args[0];
486 break;
487 case 'gamipress_bp_group_publish_activity':
488 case 'gamipress_bp_specific_group_publish_activity':
489 case 'gamipress_bp_group_delete_activity':
490 case 'gamipress_bp_specific_group_delete_activity':
491 case 'gamipress_bp_group_reply_comment':
492 case 'gamipress_bp_specific_group_reply_comment':
493 // Add the activity and group IDs
494 $log_meta['activity_id'] = $args[0];
495 $log_meta['group_id'] = $args[2];
496 break;
497 case 'gamipress_bp_group_get_reply_comment':
498 case 'gamipress_bp_specific_group_get_reply_comment':
499 // Add the activity and group IDs
500 $log_meta['activity_id'] = $args[0];
501 $log_meta['group_id'] = $args[3];
502 break;
503 case 'gamipress_bp_new_group':
504 case 'gamipress_bp_delete_group':
505 case 'gamipress_bp_delete_specific_group':
506 case 'gamipress_bp_join_group':
507 case 'gamipress_bp_join_specific_group':
508 case 'gamipress_bp_leave_group':
509 case 'gamipress_bp_leave_specific_group':
510 case 'gamipress_bp_invite_user':
511 case 'gamipress_bp_invite_user_specific_group':
512 case 'gamipress_bp_promote_member':
513 case 'gamipress_bp_promote_member_specific_group':
514 case 'gamipress_bp_promoted_member':
515 case 'gamipress_bp_promoted_member_specific_group':
516 case 'gamipress_bp_request_join_private_group':
517 case 'gamipress_bp_request_join_specific_private_group':
518 // Add the group ID
519 $log_meta['group_id'] = $args[0];
520 break;
521 case 'gamipress_bp_join_private_group':
522 case 'gamipress_bp_join_specific_private_group':
523 // Add the group and inviter ID (User who invited this user to the group)
524 $log_meta['group_id'] = $args[0];
525 $log_meta['inviter_id'] = $args[2];
526 break;
527 }
528
529 return $log_meta;
530 }
531 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_bp_log_event_trigger_meta_data', 10, 5 );
532
533 /**
534 * Extra filter to check duplicated activity
535 *
536 * @since 1.0.5
537 *
538 * @param bool $return
539 * @param integer $user_id
540 * @param string $trigger
541 * @param integer $site_id
542 * @param array $args
543 *
544 * @return bool True if user deserves trigger, else false
545 */
546 function gamipress_bp_trigger_duplicity_check( $return, $user_id, $trigger, $site_id, $args ) {
547
548 // If user doesn't deserves trigger, then bail to prevent grant access
549 if( ! $return )
550 return $return;
551
552 $log_meta = array(
553 'type' => 'event_trigger',
554 'trigger_type' => $trigger,
555 );
556
557 switch ( $trigger ) {
558 case 'gamipress_bp_activate_user':
559 $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
560 break;
561 case 'gamipress_bp_publish_activity':
562 case 'gamipress_bp_delete_activity':
563 // User can not create same activity more times, so check it
564 $log_meta['activity_id'] = $args[0];
565 $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
566 break;
567 case 'gamipress_bp_new_activity_comment':
568 case 'gamipress_bp_get_new_activity_comment':
569 case 'gamipress_bp_delete_activity_comment':
570 // User can not create same activity comment more times, so check it
571 $log_meta['comment_id'] = $args[0];
572 $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
573 break;
574 case 'gamipress_bp_group_publish_activity':
575 case 'gamipress_bp_specific_group_publish_activity':
576 case 'gamipress_bp_group_delete_activity':
577 case 'gamipress_bp_specific_group_delete_activity':
578 // User can not create same activity in a group more times, so check it
579 $log_meta['activity_id'] = $args[0];
580 $log_meta['group_id'] = $args[2];
581 $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
582 break;
583 case 'gamipress_bp_new_group':
584 // User can not create same group more times, so check it
585 $log_meta['group_id'] = $args[0];
586 $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
587 break;
588 }
589
590 return $return;
591
592 }
593 add_filter( 'gamipress_user_deserves_trigger', 'gamipress_bp_trigger_duplicity_check', 10, 5 );