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/buddyboss/includes/triggers.php +232 -0 7.9.2 → 8.0.5 View file →
@@ -1,0 +1,232 @@
1 +<?php
2 +/**
3 + * Triggers
4 + *
5 + * @package GamiPress\BuddyBoss\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_buddyboss_activity_triggers( $triggers ) {
19 +
20 + // BuddyBoss
21 + $triggers[__( 'BuddyBoss', 'gamipress' )] = array(
22 + // Triggers from BuddyPress
23 + 'gamipress_bp_activate_user' => __( 'Activated account', 'gamipress' ),
24 + 'gamipress_bp_set_member_type' => __( 'Get assigned to a specific profile type', 'gamipress' ),
25 + );
26 +
27 + // BuddyBoss Follow
28 + if ( function_exists( 'bp_is_activity_follow_active' ) && bp_is_activity_follow_active() ) {
29 + $triggers[__( 'BuddyBoss Follow', 'gamipress' )] = array(
30 + 'gamipress_buddyboss_start_following' => __( 'Start following someone', 'gamipress' ),
31 + 'gamipress_buddyboss_stop_following' => __( 'Stop following someone', 'gamipress' ),
32 + 'gamipress_buddyboss_get_follower' => __( 'Get a follower', 'gamipress' ),
33 + 'gamipress_buddyboss_lose_follower' => __( 'Lose a follower', 'gamipress' ),
34 + );
35 + }
36 +
37 + // BuddyBoss Email Invites
38 + if( gamipress_bp_is_active( 'invites' ) ) {
39 + $triggers[__( 'BuddyBoss Email Invites', 'gamipress' )] = array(
40 + 'gamipress_buddyboss_send_email_invite' => __( 'Send an email invitation', 'gamipress' ),
41 + 'gamipress_buddyboss_email_invited_registered' => __( 'Register from email invitation', 'gamipress' ),
42 + 'gamipress_buddyboss_get_email_invited_registered' => __( 'Get an invited user registered', 'gamipress' ),
43 + 'gamipress_buddyboss_email_invited_activated' => __( 'Account from email invitation gets activated', 'gamipress' ),
44 + 'gamipress_buddyboss_get_email_invited_activated' => __( 'Get an invited user account activated', 'gamipress' ),
45 + );
46 + }
47 +
48 + $triggers = apply_filters( 'gamipress_buddyboss_activity_triggers', $triggers );
49 +
50 + // BuddyBoss Profile
51 + if ( gamipress_bp_is_active( 'xprofile' ) ) {
52 + $triggers[__( 'BuddyBoss Profile', 'gamipress' )]['gamipress_buddyboss_profile_progress'] = __( 'Complete a minimum percent of your profile', 'gamipress' );
53 + }
54 +
55 + return $triggers;
56 +
57 +}
58 +add_filter( 'gamipress_activity_triggers', 'gamipress_buddyboss_activity_triggers' );
59 +
60 +/**
61 + * Build custom activity trigger label
62 + *
63 + * @since 1.0.0
64 + *
65 + * @param string $title
66 + * @param integer $requirement_id
67 + * @param array $requirement
68 + *
69 + * @return string
70 + */
71 +function gamipress_buddyboss_activity_trigger_label( $title, $requirement_id, $requirement ) {
72 +
73 + $buddyboss_percentage = ( isset( $requirement['buddyboss_percentage'] ) ) ? $requirement['buddyboss_percentage'] : 0;
74 +
75 + switch( $requirement['trigger_type'] ) {
76 +
77 + case 'gamipress_buddyboss_profile_progress':
78 + return sprintf( __( 'Complete the %s of your profile', 'gamipress' ), $buddyboss_percentage . '%' );
79 + break;
80 +
81 + }
82 +
83 + return $title;
84 +}
85 +add_filter( 'gamipress_activity_trigger_label', 'gamipress_buddyboss_activity_trigger_label', 10, 3 );
86 +
87 +/**
88 + * Get activity triggers excluded from activity time limits
89 + *
90 + * @since 1.0.0
91 + *
92 + * @param array $activities_excluded
93 + *
94 + * @return array
95 + */
96 +function gamipress_buddyboss_activity_triggers_excluded_from_activity_limit( $activities_excluded ) {
97 +
98 + $activities_excluded[] = 'gamipress_buddyboss_profile_progress';
99 +
100 + return $activities_excluded;
101 +
102 +}
103 +add_filter( 'gamipress_activity_triggers_excluded_from_activity_limit', 'gamipress_buddyboss_activity_triggers_excluded_from_activity_limit' );
104 +
105 +/**
106 + * Get user for a given trigger action.
107 + *
108 + * @since 1.0.0
109 + *
110 + * @param integer $user_id user ID to override.
111 + * @param string $trigger Trigger name.
112 + * @param array $args Passed trigger args.
113 + * @return integer User ID.
114 + */
115 +function gamipress_buddyboss_trigger_get_user_id( $user_id, $trigger, $args ) {
116 +
117 + switch ( $trigger ) {
118 + // Follow/unfollow
119 + case 'gamipress_buddyboss_start_following':
120 + case 'gamipress_buddyboss_stop_following':
121 + // Email invites
122 + case 'gamipress_buddyboss_get_email_invited_registered':
123 + case 'gamipress_buddyboss_get_email_invited_activated':
124 + $user_id = $args[1];
125 + break;
126 + // Get/lose a follower
127 + case 'gamipress_buddyboss_get_follower':
128 + case 'gamipress_buddyboss_lose_follower':
129 + // Email invites
130 + case 'gamipress_buddyboss_send_email_invite':
131 + case 'gamipress_buddyboss_email_invited_registered':
132 + case 'gamipress_buddyboss_email_invited_activated':
133 + // BuddyBoss Profile
134 + case 'gamipress_buddyboss_profile_progress':
135 + $user_id = $args[0];
136 + break;
137 + }
138 +
139 + return $user_id;
140 +
141 +}
142 +
143 +add_filter( 'gamipress_trigger_get_user_id', 'gamipress_buddyboss_trigger_get_user_id', 10, 3);
144 +
145 +/**
146 + * Extended meta data for event trigger logging
147 + *
148 + * @since 1.0.5
149 + *
150 + * @param array $log_meta
151 + * @param integer $user_id
152 + * @param string $trigger
153 + * @param integer $site_id
154 + * @param array $args
155 + *
156 + * @return array
157 + */
158 +function gamipress_buddyboss_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
159 +
160 + switch ( $trigger ) {
161 + // Follow/unfollow
162 + case 'gamipress_buddyboss_start_following':
163 + case 'gamipress_buddyboss_stop_following':
164 + // Add the leader ID
165 + $log_meta['leader_id'] = $args[0];
166 + break;
167 + // Get/lose a follower
168 + case 'gamipress_buddyboss_get_follower':
169 + case 'gamipress_buddyboss_lose_follower':
170 + // Add the follower ID
171 + $log_meta['follower_id'] = $args[1];
172 + break;
173 + // Email invites
174 + case 'gamipress_buddyboss_send_email_invite':
175 + // Add the invitation ID
176 + $log_meta['post_id'] = $args[1];
177 + break;
178 + case 'gamipress_buddyboss_get_email_invited_registered':
179 + case 'gamipress_buddyboss_get_email_invited_activated':
180 + case 'gamipress_buddyboss_email_invited_registered':
181 + case 'gamipress_buddyboss_email_invited_activated':
182 + // Add the inviter and invitation ID
183 + $log_meta['inviter_id'] = $args[1];
184 + $log_meta['post_id'] = $args[2];
185 + break;
186 + // BuddyBoss Profile
187 + case 'gamipress_buddyboss_profile_progress':
188 + // Add the percentage completed
189 + $log_meta['percentage'] = $args[1];
190 + break;
191 + }
192 +
193 + return $log_meta;
194 +}
195 +add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_buddyboss_log_event_trigger_meta_data', 10, 5 );
196 +
197 +/**
198 + * Extra filter to check duplicated activity
199 + *
200 + * @since 1.0.2
201 + *
202 + * @param bool $return
203 + * @param integer $user_id
204 + * @param string $trigger
205 + * @param integer $site_id
206 + * @param array $args
207 + *
208 + * @return bool True if user deserves trigger, else false
209 + */
210 +function gamipress_buddyboss_trigger_duplicity_check( $return, $user_id, $trigger, $site_id, $args ) {
211 +
212 + // If user doesn't deserves trigger, then bail to prevent grant access
213 + if( ! $return )
214 + return $return;
215 +
216 + $log_meta = array(
217 + 'type' => 'event_trigger',
218 + 'trigger_type' => $trigger,
219 + );
220 +
221 + switch ( $trigger ) {
222 + case 'gamipress_buddyboss_profile_progress':
223 + // Prevent to reward the user for complete the same percentage
224 + $log_meta['percentage'] = $args[1];
225 + $return = (bool) ( gamipress_get_user_last_log( $user_id, $log_meta ) === false );
226 + break;
227 + }
228 +
229 + return $return;
230 +
231 +}
232 +add_filter( 'gamipress_user_deserves_trigger', 'gamipress_buddyboss_trigger_duplicity_check', 10, 5 );