PluginProbe
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI / 8.0.6
GamiPress – Gamification plugin to reward points, badges & ranks in WordPress, now with AI v8.0.6
8.0.6 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 All 48 releases
← All changes | integrations/buddyboss/includes/community/includes/triggers.php +695 -0 7.9.4 → 8.0.6 View file →
@@ -1,0 +1,695 @@
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 + // BuddyBoss
21 +// $triggers[__( 'BuddyBoss', '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 + // BuddyBoss Profile
27 + if ( gamipress_bp_is_active( 'xprofile' ) ) {
28 + $triggers[__( 'BuddyBoss 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 + // BuddyBoss Friendships
38 + if ( gamipress_bp_is_active( 'friends' ) ) {
39 + $triggers[__( 'BuddyBoss 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 + // BuddyBoss Messages
51 + if ( gamipress_bp_is_active( 'messages' ) ) {
52 + $triggers[__( 'BuddyBoss Messages', 'gamipress' )] = array(
53 + 'gamipress_bp_send_message' => __( 'Send/Reply to a private message', 'gamipress' ),
54 + );
55 + }
56 +
57 + // BuddyBoss Activity
58 + if ( gamipress_bp_is_active( 'activity' ) ) {
59 + $triggers[__( 'BuddyBoss Activity', 'gamipress' )] = array(
60 + 'gamipress_bp_publish_activity' => __( 'Publish an activity post', 'gamipress' ),
61 + 'gamipress_bp_publish_text_activity' => __( 'Publish only text in an activity post', 'gamipress' ),
62 + 'gamipress_bp_delete_activity' => __( 'Remove an activity post', 'gamipress' ),
63 + 'gamipress_bp_new_activity_comment' => __( 'Reply to an activity post', 'gamipress' ),
64 + 'gamipress_bp_get_new_activity_comment' => __( 'Get a reply on an activity post', 'gamipress' ),
65 + 'gamipress_bp_delete_activity_comment' => __( 'Delete a reply from an activity post', 'gamipress' ),
66 + 'gamipress_bp_get_delete_activity_comment' => __( 'Get a reply deleted from an activity post', 'gamipress' ),
67 + 'gamipress_bp_favorite_activity' => __( 'Like an activity post', 'gamipress' ),
68 + 'gamipress_bp_remove_favorite_activity' => __( 'Remove a like on an activity post', 'gamipress' ),
69 + 'gamipress_bp_user_favorite_activity' => __( 'Get a like on an activity post', 'gamipress' ),
70 + 'gamipress_bp_user_remove_favorite_activity' => __( 'Get a like removed on an activity post', 'gamipress' ),
71 + 'gamipress_bp_user_get_spam_activity' => __( 'Get an activity marked as spam', 'gamipress' ),
72 + 'gamipress_bp_publish_media_activity' => __( 'Publish an image in an activity post', 'gamipress' ),
73 + 'gamipress_bp_publish_video_activity' => __( 'Publish a video in an activity post', 'gamipress' ),
74 + 'gamipress_bp_publish_document_activity' => __( 'Publish a document in an activity post', 'gamipress' ),
75 + // Reactions
76 + 'gamipress_bp_user_react_activity' => __( 'React an activity post', 'gamipress' ),
77 + 'gamipress_bp_user_specific_react_activity' => __( 'React with specific reaction an activity post', 'gamipress' ),
78 + 'gamipress_bp_user_get_react_activity' => __( 'Get a reaction on an activity post', 'gamipress' ),
79 + 'gamipress_bp_user_get_specific_react_activity' => __( 'Get a specific reaction on an activity post', 'gamipress' ),
80 + 'gamipress_bp_user_remove_react_activity' => __( 'Remove a reaction from an activity post', 'gamipress' ),
81 + 'gamipress_bp_user_remove_specific_react_activity' => __( 'Remove a specific reaction from an activity post', 'gamipress' ),
82 + 'gamipress_bp_user_get_remove_react_activity' => __( 'Get a reaction removed from an activity post', 'gamipress' ),
83 + 'gamipress_bp_user_get_remove_specific_react_activity' => __( 'Get a specific reaction removed from an activity post', 'gamipress' ),
84 + );
85 + }
86 +
87 + // BuddyBoss Groups
88 + if ( gamipress_bp_is_active( 'groups' ) ) {
89 + $triggers[__( 'BuddyBoss Groups', 'gamipress' )] = array(
90 + 'gamipress_bp_group_publish_activity' => __( 'Publish an activity post in a group', 'gamipress' ),
91 + 'gamipress_bp_specific_group_publish_activity' => __( 'Publish an activity post in a specific group', 'gamipress' ),
92 + 'gamipress_bp_group_reply_comment' => __( 'Reply a comment in a group', 'gamipress' ),
93 + 'gamipress_bp_specific_group_reply_comment' => __( 'Reply a comment in a specific group', 'gamipress' ),
94 + 'gamipress_bp_group_get_reply_comment' => __( 'Get a reply on a comment in a group', 'gamipress' ),
95 + 'gamipress_bp_specific_group_get_reply_comment' => __( 'Get a reply on a comment in a specific group', 'gamipress' ),
96 + 'gamipress_bp_group_delete_comment' => __( 'Delete a reply in a comment in a group', 'gamipress' ),
97 + 'gamipress_bp_specific_group_delete_comment' => __( 'Delete a reply in a comment in a specific group', 'gamipress' ),
98 + 'gamipress_bp_group_get_delete_comment' => __( 'Get a reply in a comment deleted in a group', 'gamipress' ),
99 + 'gamipress_bp_specific_group_get_delete_comment' => __( 'Get a reply in a comment deleted in a specific group', 'gamipress' ),
100 + 'gamipress_bp_group_delete_activity' => __( 'Remove an activity post from a group', 'gamipress' ),
101 + 'gamipress_bp_specific_group_delete_activity' => __( 'Remove an activity post from a specific group', 'gamipress' ),
102 + 'gamipress_bp_new_group' => __( 'Create a group', 'gamipress' ),
103 + 'gamipress_bp_delete_group' => __( 'Delete a group', 'gamipress' ),
104 + 'gamipress_bp_delete_specific_group' => __( 'Delete a specific group', 'gamipress' ),
105 + 'gamipress_bp_join_group' => __( 'Join a group', 'gamipress' ),
106 + 'gamipress_bp_join_specific_group' => __( 'Join a specific group', 'gamipress' ),
107 + 'gamipress_bp_leave_group' => __( 'Leave a group', 'gamipress' ),
108 + 'gamipress_bp_leave_specific_group' => __( 'Leave a specific group', 'gamipress' ),
109 + 'gamipress_bp_request_join_private_group' => __( 'Request to join a private group', 'gamipress' ),
110 + 'gamipress_bp_request_join_specific_private_group' => __( 'Request to join a specific private group', 'gamipress' ),
111 + 'gamipress_bp_join_private_group' => __( 'Get accepted on a private group', 'gamipress' ),
112 + 'gamipress_bp_join_specific_private_group' => __( 'Get accepted on a specific private group', 'gamipress' ),
113 + 'gamipress_bp_invite_user' => __( 'Invite someone to join a group', 'gamipress' ),
114 + 'gamipress_bp_invite_user_specific_group' => __( 'Invite someone to join a specific group', 'gamipress' ),
115 + 'gamipress_bp_promote_member' => __( 'Get promoted as moderator/administrator of a group', 'gamipress' ),
116 + 'gamipress_bp_promote_member_specific_group' => __( 'Get promoted as moderator/administrator of a specific group', 'gamipress' ),
117 + 'gamipress_bp_promoted_member' => __( 'Promote another member to moderator/administrator of a group', 'gamipress' ),
118 + 'gamipress_bp_promoted_member_specific_group' => __( 'Promote another member to moderator/administrator of a specific group', 'gamipress' ),
119 + );
120 + }
121 +
122 + return $triggers;
123 +
124 +}
125 +add_filter( 'gamipress_buddyboss_activity_triggers', 'gamipress_bp_activity_triggers' );
126 +
127 +/**
128 + * Build custom activity trigger label
129 + *
130 + * @since 1.0.0
131 + *
132 + * @param string $title
133 + * @param integer $requirement_id
134 + * @param array $requirement
135 + *
136 + * @return string
137 + */
138 +function gamipress_bp_activity_trigger_label( $title, $requirement_id, $requirement ) {
139 +
140 + $bp_member_type = ( isset( $requirement['bp_member_type'] ) ) ? $requirement['bp_member_type'] : '';
141 + $bp_field_value = ( isset( $requirement['bp_field_value'] ) ) ? $requirement['bp_field_value'] : '';
142 +
143 + switch( $requirement['trigger_type'] ) {
144 +
145 + case 'gamipress_bp_set_member_type':
146 +
147 + if( function_exists( 'bp_get_member_types' ) ) {
148 + $member_types = bp_get_member_types( array(), 'objects' );
149 + } else {
150 + $member_types = array();
151 + }
152 +
153 + if( isset( $member_types[$bp_member_type] ) ) {
154 + return sprintf( __( 'Get assigned to the %s type', 'gamipress' ), $member_types[$bp_member_type]->labels['singular_name'] );
155 + }
156 + break;
157 +
158 + case 'gamipress_bp_update_profile_specific_value':
159 + $achievement_post_id = absint( $requirement['achievement_post'] );
160 + $bp_field_name = gamipress_get_specific_activity_trigger_post_title( $achievement_post_id, $requirement['trigger_type'], get_current_blog_id() );
161 + return sprintf( __( 'Update %s field with %s value', 'gamipress' ), $bp_field_name, $bp_field_value );
162 +
163 + break;
164 +
165 + }
166 +
167 + return $title;
168 +}
169 +add_filter( 'gamipress_activity_trigger_label', 'gamipress_bp_activity_trigger_label', 10, 3 );
170 +
171 +/**
172 + * Register BuddyPress specific activity triggers
173 + *
174 + * @since 1.0.0
175 + *
176 + * @param array $specific_activity_triggers
177 + * @return array
178 + */
179 +function gamipress_bp_specific_activity_triggers( $specific_activity_triggers ) {
180 +
181 + $specific_activity_triggers['gamipress_bp_specific_group_publish_activity'] = array( 'bp_groups' );
182 + $specific_activity_triggers['gamipress_bp_specific_group_delete_activity'] = array( 'bp_groups' );
183 + $specific_activity_triggers['gamipress_bp_specific_group_reply_comment'] = array( 'bp_groups' );
184 + $specific_activity_triggers['gamipress_bp_specific_group_get_reply_comment'] = array( 'bp_groups' );
185 + $specific_activity_triggers['gamipress_bp_specific_group_delete_comment'] = array( 'bp_groups' );
186 + $specific_activity_triggers['gamipress_bp_specific_group_get_delete_comment'] = array( 'bp_groups' );
187 + $specific_activity_triggers['gamipress_bp_join_specific_group'] = array( 'bp_groups' );
188 + $specific_activity_triggers['gamipress_bp_delete_specific_group'] = array( 'bp_groups' );
189 + $specific_activity_triggers['gamipress_bp_leave_specific_group'] = array( 'bp_groups' );
190 + $specific_activity_triggers['gamipress_bp_request_join_specific_private_group'] = array( 'bp_groups' );
191 + $specific_activity_triggers['gamipress_bp_join_specific_private_group'] = array( 'bp_groups' );
192 + $specific_activity_triggers['gamipress_bp_invite_user_specific_group'] = array( 'bp_groups' );
193 + $specific_activity_triggers['gamipress_bp_promote_member_specific_group'] = array( 'bp_groups' );
194 + $specific_activity_triggers['gamipress_bp_promoted_member_specific_group'] = array( 'bp_groups' );
195 + $specific_activity_triggers['gamipress_bp_update_profile_any_value'] = array( 'bp_fields' );
196 + $specific_activity_triggers['gamipress_bp_update_profile_specific_value'] = array( 'bp_fields' );
197 + //Reactions
198 + $specific_activity_triggers['gamipress_bp_user_specific_react_activity'] = array( 'bp_reactions' );
199 + $specific_activity_triggers['gamipress_bp_user_get_specific_react_activity'] = array( 'bp_reactions' );
200 + $specific_activity_triggers['gamipress_bp_user_remove_specific_react_activity'] = array( 'bp_reactions' );
201 + $specific_activity_triggers['gamipress_bp_user_get_remove_specific_react_activity'] = array( 'bp_reactions' );
202 +
203 + return $specific_activity_triggers;
204 +}
205 +add_filter( 'gamipress_specific_activity_triggers', 'gamipress_bp_specific_activity_triggers' );
206 +
207 +/**
208 + * Register BuddyPress specific activity triggers labels
209 + *
210 + * @since 1.0.0
211 + *
212 + * @param array $specific_activity_trigger_labels
213 + * @return array
214 + */
215 +function gamipress_bp_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
216 +
217 + $specific_activity_trigger_labels['gamipress_bp_specific_group_publish_activity'] = __( 'Publish an activity post on %s group', 'gamipress' );
218 + $specific_activity_trigger_labels['gamipress_bp_specific_group_delete_activity'] = __( 'Remove an activity post from %s group', 'gamipress' );
219 + $specific_activity_trigger_labels['gamipress_bp_specific_group_reply_comment'] = __( 'Reply a comment on %s group', 'gamipress' );
220 + $specific_activity_trigger_labels['gamipress_bp_specific_group_get_reply_comment'] = __( 'Get a reply in a comment on %s group', 'gamipress' );
221 + $specific_activity_trigger_labels['gamipress_bp_specific_group_delete_comment'] = __( 'Delete a comment on %s group', 'gamipress' );
222 + $specific_activity_trigger_labels['gamipress_bp_specific_group_get_delete_comment'] = __( 'Get a comment deleted on %s group', 'gamipress' );
223 + $specific_activity_trigger_labels['gamipress_bp_join_specific_group'] = __( 'Join %s group', 'gamipress' );
224 + $specific_activity_trigger_labels['gamipress_bp_leave_specific_group'] = __( 'Leave %s group', 'gamipress' );
225 + $specific_activity_trigger_labels['gamipress_bp_request_join_specific_private_group'] = __( 'Request to join %s group', 'gamipress' );
226 + $specific_activity_trigger_labels['gamipress_bp_join_specific_private_group'] = __( 'Get accepted on %s group', 'gamipress' );
227 + $specific_activity_trigger_labels['gamipress_bp_delete_specific_group'] = __( 'Delete %s group', 'gamipress' );
228 + $specific_activity_trigger_labels['gamipress_bp_invite_user_specific_group'] = __( 'Invite someone to join %s group', 'gamipress' );
229 + $specific_activity_trigger_labels['gamipress_bp_promote_member_specific_group'] = __( 'Get promoted as moderator/administrator of %s group', 'gamipress' );
230 + $specific_activity_trigger_labels['gamipress_bp_update_profile_any_value'] = __( 'Update %s field with any value', 'gamipress' );
231 + $specific_activity_trigger_labels['gamipress_bp_update_profile_specific_value'] = __( 'Update %s field with specific value', 'gamipress' );
232 + // Reactions
233 + $specific_activity_trigger_labels['gamipress_bp_user_specific_react_activity'] = __( 'React with %s reaction an activity post', 'gamipress' );
234 + $specific_activity_trigger_labels['gamipress_bp_user_get_specific_react_activity'] = __( 'Get a %s reaction on an activity post', 'gamipress' );
235 + $specific_activity_trigger_labels['gamipress_bp_user_remove_specific_react_activity'] = __( 'Remove a %s reaction from an activity post', 'gamipress' );
236 + $specific_activity_trigger_labels['gamipress_bp_user_get_remove_specific_react_activity'] = __( 'Get a %s reaction removed from an activity post', 'gamipress' );
237 +
238 +
239 + return $specific_activity_trigger_labels;
240 +}
241 +add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_bp_specific_activity_trigger_label' );
242 +
243 +/**
244 + * Get specific activity trigger post title
245 + *
246 + * @since 1.2.1
247 + *
248 + * @param string $post_title
249 + * @param integer $specific_id
250 + * @param string $trigger_type
251 + * @param int $site_id
252 + * @return string
253 + */
254 +function gamipress_bp_specific_activity_trigger_post_title( $post_title, $specific_id, $trigger_type, $site_id ) {
255 +
256 + switch( $trigger_type ) {
257 + case 'gamipress_bp_specific_group_publish_activity':
258 + case 'gamipress_bp_specific_group_delete_activity':
259 + case 'gamipress_bp_specific_group_reply_comment':
260 + case 'gamipress_bp_specific_group_get_reply_comment':
261 + case 'gamipress_bp_specific_group_delete_comment':
262 + case 'gamipress_bp_specific_group_get_delete_comment':
263 + case 'gamipress_bp_join_specific_group':
264 + case 'gamipress_bp_delete_specific_group':
265 + case 'gamipress_bp_leave_specific_group':
266 + case 'gamipress_bp_request_join_specific_private_group':
267 + case 'gamipress_bp_join_specific_private_group':
268 + case 'gamipress_bp_invite_user_specific_group':
269 + case 'gamipress_bp_promote_member_specific_group':
270 + case 'gamipress_bp_promoted_member_specific_group':
271 + if( absint( $specific_id ) !== 0 && class_exists( 'BuddyPress' ) ) {
272 +
273 + $group = groups_get_group( $specific_id );
274 +
275 + // Return the group name as post title
276 + $post_title = $group->name;
277 + }
278 + break;
279 + case 'gamipress_bp_update_profile_any_value':
280 + case 'gamipress_bp_update_profile_specific_value':
281 + if( absint( $specific_id ) !== 0 ) {
282 + // Get the service title
283 + $field_title = gamipress_bp_get_profile_field_name( $specific_id );
284 +
285 + $post_title = $field_title;
286 + }
287 + break;
288 + case 'gamipress_bp_user_specific_react_activity':
289 + case 'gamipress_bp_user_get_specific_react_activity':
290 + case 'gamipress_bp_user_remove_specific_react_activity':
291 + case 'gamipress_bp_user_get_remove_specific_react_activity':
292 + if( absint( $specific_id ) !== 0 ) {
293 + // Get the reaction title
294 + $reaction_title = gamipress_buddyboss_get_reaction_title( $specific_id );
295 +
296 + $post_title = $reaction_title;
297 + }
298 + break;
299 +
300 + }
301 +
302 + return $post_title;
303 +
304 +}
305 +add_filter( 'gamipress_specific_activity_trigger_post_title', 'gamipress_bp_specific_activity_trigger_post_title', 10, 4 );
306 +
307 +/**
308 + * Get plugin specific activity trigger permalink
309 + *
310 + * @since 1.0.0
311 + *
312 + * @param string $permalink
313 + * @param integer $specific_id
314 + * @param string $trigger_type
315 + * @param integer $site_id
316 + *
317 + * @return string
318 + */
319 +function gamipress_bp_specific_activity_trigger_permalink( $permalink, $specific_id, $trigger_type, $site_id ) {
320 +
321 + switch( $trigger_type ) {
322 + case 'gamipress_bp_specific_group_publish_activity':
323 + case 'gamipress_bp_specific_group_delete_activity':
324 + case 'gamipress_bp_specific_group_reply_comment':
325 + case 'gamipress_bp_specific_group_get_reply_comment':
326 + case 'gamipress_bp_specific_group_delete_comment':
327 + case 'gamipress_bp_specific_group_get_delete_comment':
328 + case 'gamipress_bp_join_specific_group':
329 + case 'gamipress_bp_delete_specific_group':
330 + case 'gamipress_bp_leave_specific_group':
331 + case 'gamipress_bp_request_join_specific_private_group':
332 + case 'gamipress_bp_join_specific_private_group':
333 + case 'gamipress_bp_invite_user_specific_group':
334 + case 'gamipress_bp_promote_member_specific_group':
335 + case 'gamipress_bp_promoted_member_specific_group':
336 +
337 + // Init permalink to blank to override GamiPress workflow
338 + $permalink = '';
339 +
340 + if( absint( $specific_id ) !== 0 && class_exists( 'BuddyPress' ) ) {
341 +
342 + $group = groups_get_group( $specific_id );
343 +
344 + // Setup the group permalink
345 + $permalink = bp_get_group_permalink( $group );
346 + }
347 + break;
348 + case 'gamipress_bp_update_profile_any_value':
349 + case 'gamipress_bp_update_profile_specific_value':
350 + $permalink = '';
351 + break;
352 + case 'gamipress_bp_user_specific_react_activity':
353 + case 'gamipress_bp_user_get_specific_react_activity':
354 + case 'gamipress_bp_user_remove_specific_react_activity':
355 + case 'gamipress_bp_user_get_remove_specific_react_activity':
356 + $permalink = '';
357 + break;
358 + }
359 +
360 + return $permalink;
361 +
362 +}
363 +add_filter( 'gamipress_specific_activity_trigger_permalink', 'gamipress_bp_specific_activity_trigger_permalink', 10, 4 );
364 +
365 +/**
366 + * Get user for a given trigger action.
367 + *
368 + * @since 1.0.0
369 + *
370 + * @param integer $user_id user ID to override.
371 + * @param string $trigger Trigger name.
372 + * @param array $args Passed trigger args.
373 + * @return integer User ID.
374 + */
375 +function gamipress_bp_trigger_get_user_id( $user_id, $trigger, $args ) {
376 +
377 + switch ( $trigger ) {
378 + // BuddyPress
379 + case 'gamipress_bp_set_member_type':
380 + // BuddyPress Profile
381 + case 'gamipress_bp_upload_avatar':
382 + case 'gamipress_bp_upload_cover_image':
383 + case 'gamipress_bp_update_profile':
384 + case 'gamipress_bp_update_profile_any_value':
385 + case 'gamipress_bp_update_profile_specific_value':
386 + $user_id = $args[0];
387 + break;
388 + // BuddyPress
389 + case 'gamipress_bp_activate_user':
390 + // BuddyPress Friendships
391 + case 'gamipress_bp_friendship_request':
392 + case 'gamipress_bp_friendship_accepted':
393 + case 'gamipress_bp_get_friendship_accepted':
394 + case 'gamipress_bp_friendship_rejected':
395 + case 'gamipress_bp_get_friendship_rejected':
396 + case 'gamipress_bp_friendship_deleted':
397 + case 'gamipress_bp_get_friendship_deleted':
398 + // BuddyPress Messages
399 + case 'gamipress_bp_send_message':
400 + // BuddyPress Activity
401 + case 'gamipress_bp_publish_activity':
402 + case 'gamipress_bp_publish_text_activity':
403 + case 'gamipress_bp_delete_activity':
404 + case 'gamipress_bp_new_activity_comment':
405 + case 'gamipress_bp_get_new_activity_comment':
406 + case 'gamipress_bp_delete_activity_comment':
407 + case 'gamipress_bp_get_delete_activity_comment':
408 + case 'gamipress_bp_favorite_activity':
409 + case 'gamipress_bp_remove_favorite_activity':
410 + case 'gamipress_bp_user_favorite_activity':
411 + case 'gamipress_bp_user_remove_favorite_activity':
412 + case 'gamipress_bp_user_get_spam_activity':
413 + case 'gamipress_bp_publish_media_activity':
414 + case 'gamipress_bp_publish_video_activity':
415 + case 'gamipress_bp_publish_document_activity':
416 + // BuddyPress Groups
417 + case 'gamipress_bp_group_publish_activity':
418 + case 'gamipress_bp_specific_group_publish_activity':
419 + case 'gamipress_bp_group_reply_comment':
420 + case 'gamipress_bp_specific_group_reply_comment':
421 + case 'gamipress_bp_group_get_reply_comment':
422 + case 'gamipress_bp_specific_group_get_reply_comment':
423 + case 'gamipress_bp_group_delete_comment':
424 + case 'gamipress_bp_specific_group_delete_comment':
425 + case 'gamipress_bp_group_get_delete_comment':
426 + case 'gamipress_bp_specific_group_get_delete_comment':
427 + case 'gamipress_bp_group_delete_activity':
428 + case 'gamipress_bp_specific_group_delete_activity':
429 + case 'gamipress_bp_join_group':
430 + case 'gamipress_bp_join_specific_group':
431 + case 'gamipress_bp_delete_group':
432 + case 'gamipress_bp_delete_specific_group':
433 + case 'gamipress_bp_leave_group':
434 + case 'gamipress_bp_leave_specific_group':
435 + case 'gamipress_bp_request_join_private_group':
436 + case 'gamipress_bp_request_join_specific_private_group':
437 + case 'gamipress_bp_join_private_group':
438 + case 'gamipress_bp_join_specific_private_group':
439 + case 'gamipress_bp_invite_user':
440 + case 'gamipress_bp_invite_user_specific_group':
441 + case 'gamipress_bp_promote_member':
442 + case 'gamipress_bp_promote_member_specific_group':
443 + case 'gamipress_bp_promoted_member':
444 + case 'gamipress_bp_promoted_member_specific_group':
445 + // BuddyBoss reactions
446 + case 'gamipress_bp_user_react_activity':
447 + case 'gamipress_bp_user_specific_react_activity':
448 + case 'gamipress_bp_user_get_react_activity':
449 + case 'gamipress_bp_user_get_specific_react_activity':
450 + case 'gamipress_bp_user_remove_react_activity':
451 + case 'gamipress_bp_user_remove_specific_react_activity':
452 + case 'gamipress_bp_user_get_remove_react_activity':
453 + case 'gamipress_bp_user_get_remove_specific_react_activity':
454 + $user_id = $args[1];
455 + break;
456 + }
457 +
458 + return $user_id;
459 +
460 +}
461 +
462 +add_filter( 'gamipress_trigger_get_user_id', 'gamipress_bp_trigger_get_user_id', 10, 3);
463 +
464 +/**
465 + * Get the id for a given specific trigger action.
466 + *
467 + * @since 1.0.5
468 + *
469 + * @param integer $specific_id Specific ID.
470 + * @param string $trigger Trigger name.
471 + * @param array $args Passed trigger args.
472 + *
473 + * @return integer Specific ID.
474 + */
475 +function gamipress_bp_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
476 +
477 + switch ( $trigger ) {
478 + case 'gamipress_bp_specific_group_publish_activity':
479 + case 'gamipress_bp_specific_group_delete_activity':
480 + case 'gamipress_bp_specific_group_reply_comment':
481 + case 'gamipress_bp_specific_group_delete_comment':
482 + $specific_id = $args[2];
483 + break;
484 + case 'gamipress_bp_specific_group_get_reply_comment':
485 + case 'gamipress_bp_specific_group_get_delete_comment':
486 + $specific_id = $args[3];
487 + break;
488 + case 'gamipress_bp_join_specific_group':
489 + case 'gamipress_bp_leave_specific_group':
490 + case 'gamipress_bp_request_join_specific_private_group':
491 + case 'gamipress_bp_join_specific_private_group':
492 + case 'gamipress_bp_invite_user_specific_group':
493 + case 'gamipress_bp_promote_member_specific_group':
494 + case 'gamipress_bp_promoted_member_specific_group':
495 + case 'gamipress_bp_delete_specific_group':
496 + // BuddyBoss reactions
497 + case 'gamipress_bp_user_specific_react_activity':
498 + case 'gamipress_bp_user_get_specific_react_activity':
499 + case 'gamipress_bp_user_remove_specific_react_activity':
500 + case 'gamipress_bp_user_get_remove_specific_react_activity':
501 + $specific_id = $args[0];
502 + break;
503 + case 'gamipress_bp_update_profile_any_value':
504 + case 'gamipress_bp_update_profile_specific_value':
505 + $specific_id = $args[1];
506 + break;
507 + }
508 +
509 + return $specific_id;
510 +}
511 +add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_bp_specific_trigger_get_id', 10, 3 );
512 +
513 +/**
514 + * Extended meta data for event trigger logging
515 + *
516 + * @since 1.0.5
517 + *
518 + * @param array $log_meta
519 + * @param integer $user_id
520 + * @param string $trigger
521 + * @param integer $site_id
522 + * @param array $args
523 + *
524 + * @return array
525 + */
526 +function gamipress_bp_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
527 +
528 + switch ( $trigger ) {
529 + case 'gamipress_bp_set_member_type':
530 + // Add the member type ID
531 + $log_meta['member_type'] = $args[1];
532 + break;
533 + case 'gamipress_bp_friendship_request':
534 + case 'gamipress_bp_friendship_accepted':
535 + case 'gamipress_bp_get_friendship_accepted':
536 + case 'gamipress_bp_friendship_rejected':
537 + case 'gamipress_bp_get_friendship_rejected':
538 + case 'gamipress_bp_friendship_deleted':
539 + case 'gamipress_bp_get_friendship_deleted':
540 + // Add the friendship ID
541 + $log_meta['friendship_id'] = $args[0];
542 + break;
543 + case 'gamipress_bp_publish_activity':
544 + case 'gamipress_bp_publish_text_activity':
545 + case 'gamipress_bp_delete_activity':
546 + case 'gamipress_bp_favorite_activity':
547 + case 'gamipress_bp_remove_favorite_activity':
548 + case 'gamipress_bp_user_get_spam_activity':
549 + case 'gamipress_bp_publish_media_activity':
550 + case 'gamipress_bp_publish_video_activity':
551 + case 'gamipress_bp_publish_document_activity':
552 + // Add the activity ID
553 + $log_meta['activity_id'] = $args[0];
554 + break;
555 + case 'gamipress_bp_user_favorite_activity':
556 + case 'gamipress_bp_user_remove_favorite_activity':
557 + // Add the activity and user that performs the favorite ID (activity author is stored by default on user_id)
558 + $log_meta['activity_id'] = $args[0];
559 + $log_meta['favorites_id'] = $args[2];
560 + break;
561 + case 'gamipress_bp_new_activity_comment':
562 + case 'gamipress_bp_get_new_activity_comment':
563 + case 'gamipress_bp_delete_activity_comment':
564 + case 'gamipress_bp_get_delete_activity_comment':
565 + // Add the comment ID
566 + $log_meta['comment_id'] = $args[0];
567 + break;
568 + case 'gamipress_bp_group_publish_activity':
569 + case 'gamipress_bp_specific_group_publish_activity':
570 + case 'gamipress_bp_group_delete_activity':
571 + case 'gamipress_bp_specific_group_delete_activity':
572 + case 'gamipress_bp_group_reply_comment':
573 + case 'gamipress_bp_specific_group_reply_comment':
574 + case 'gamipress_bp_group_delete_comment':
575 + case 'gamipress_bp_specific_group_delete_comment':
576 + // Add the activity and group IDs
577 + $log_meta['activity_id'] = $args[0];
578 + $log_meta['group_id'] = $args[2];
579 + break;
580 + case 'gamipress_bp_group_get_reply_comment':
581 + case 'gamipress_bp_specific_group_get_reply_comment':
582 + case 'gamipress_bp_group_get_delete_comment':
583 + case 'gamipress_bp_specific_group_get_delete_comment':
584 + // Add the activity and group IDs
585 + $log_meta['activity_id'] = $args[0];
586 + $log_meta['group_id'] = $args[3];
587 + break;
588 + case 'gamipress_bp_new_group':
589 + case 'gamipress_bp_delete_group':
590 + case 'gamipress_bp_delete_specific_group':
591 + case 'gamipress_bp_join_group':
592 + case 'gamipress_bp_join_specific_group':
593 + case 'gamipress_bp_leave_group':
594 + case 'gamipress_bp_leave_specific_group':
595 + case 'gamipress_bp_invite_user':
596 + case 'gamipress_bp_invite_user_specific_group':
597 + case 'gamipress_bp_promote_member':
598 + case 'gamipress_bp_promote_member_specific_group':
599 + case 'gamipress_bp_promoted_member':
600 + case 'gamipress_bp_promoted_member_specific_group':
601 + case 'gamipress_bp_request_join_private_group':
602 + case 'gamipress_bp_request_join_specific_private_group':
603 + // Add the group ID
604 + $log_meta['group_id'] = $args[0];
605 + break;
606 + case 'gamipress_bp_join_private_group':
607 + case 'gamipress_bp_join_specific_private_group':
608 + // Add the group and inviter ID (User who invited this user to the group)
609 + $log_meta['group_id'] = $args[0];
610 + $log_meta['inviter_id'] = $args[2];
611 + break;
612 + // BuddyBoss reactions
613 + case 'gamipress_bp_user_react_activity':
614 + case 'gamipress_bp_user_specific_react_activity':
615 + case 'gamipress_bp_user_get_react_activity':
616 + case 'gamipress_bp_user_get_specific_react_activity':
617 + case 'gamipress_bp_user_remove_react_activity':
618 + case 'gamipress_bp_user_remove_specific_react_activity':
619 + case 'gamipress_bp_user_get_remove_react_activity':
620 + case 'gamipress_bp_user_get_remove_specific_react_activity':
621 + // Reactions ID
622 + $log_meta['reaction_id'] = $args[0];
623 + break;
624 + }
625 +
626 + return $log_meta;
627 +}
628 +add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_bp_log_event_trigger_meta_data', 10, 5 );
629 +
630 +/**
631 + * Extra filter to check duplicated activity
632 + *
633 + * @since 1.0.5
634 + *
635 + * @param bool $return
636 + * @param integer $user_id
637 + * @param string $trigger
638 + * @param integer $site_id
639 + * @param array $args
640 + *
641 + * @return bool True if user deserves trigger, else false
642 + */
643 +function gamipress_bp_trigger_duplicity_check( $return, $user_id, $trigger, $site_id, $args ) {
644 +
645 + // If user doesn't deserves trigger, then bail to prevent grant access
646 + if( ! $return )
647 + return $return;
648 +
649 + $log_meta = array(
650 + 'type' => 'event_trigger',
651 + 'trigger_type' => $trigger,
652 + );
653 +
654 + switch ( $trigger ) {
655 + case 'gamipress_bp_activate_user':
656 + $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
657 + break;
658 + case 'gamipress_bp_publish_activity':
659 + case 'gamipress_bp_publish_text_activity':
660 + case 'gamipress_bp_delete_activity':
661 + case 'gamipress_bp_publish_media_activity':
662 + case 'gamipress_bp_publish_video_activity':
663 + case 'gamipress_bp_publish_document_activity':
664 + // User can not create same activity more times, so check it
665 + $log_meta['activity_id'] = $args[0];
666 + $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
667 + break;
668 + case 'gamipress_bp_new_activity_comment':
669 + case 'gamipress_bp_get_new_activity_comment':
670 + case 'gamipress_bp_delete_activity_comment':
671 + case 'gamipress_bp_get_delete_activity_comment':
672 + // User can not create same activity comment more times, so check it
673 + $log_meta['comment_id'] = $args[0];
674 + $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
675 + break;
676 + case 'gamipress_bp_group_publish_activity':
677 + case 'gamipress_bp_specific_group_publish_activity':
678 + case 'gamipress_bp_group_delete_activity':
679 + case 'gamipress_bp_specific_group_delete_activity':
680 + // User can not create same activity in a group more times, so check it
681 + $log_meta['activity_id'] = $args[0];
682 + $log_meta['group_id'] = $args[2];
683 + $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
684 + break;
685 + case 'gamipress_bp_new_group':
686 + // User can not create same group more times, so check it
687 + $log_meta['group_id'] = $args[0];
688 + $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
689 + break;
690 + }
691 +
692 + return $return;
693 +
694 +}
695 +add_filter( 'gamipress_user_deserves_trigger', 'gamipress_bp_trigger_duplicity_check', 10, 5 );