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
gamipress / integrations / buddyboss / includes / membership / includes / triggers.php

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

324 lines 12.9 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_bbmembership_activity_triggers( $triggers ) {
19
20 // BuddyBoss Courses
21
22 if ( class_exists( 'buddybossmembership\courses\models\Course' ) ) {
23 $triggers[__( 'BuddyBoss Courses', 'gamipress' )] = array(
24 'gamipress_bbmembership_complete_lesson' => __( 'Complete a lesson', 'gamipress' ),
25 'gamipress_bbmembership_complete_specific_lesson' => __( 'Complete a specific lesson', 'gamipress' ),
26 'gamipress_bbmembership_complete_section' => __( 'Complete a section', 'gamipress' ),
27 'gamipress_bbmembership_complete_specific_section' => __( 'Complete a specific section', 'gamipress' ),
28 'gamipress_bbmembership_complete_course' => __( 'Complete a course', 'gamipress' ),
29 'gamipress_bbmembership_complete_specific_course' => __( 'Complete a specific course', 'gamipress' ),
30
31 );
32 }
33
34 if ( class_exists( 'buddybossmembership\quizzes\models\Quiz' ) ) {
35 $triggers[__( 'BuddyBoss Courses', 'gamipress' )]['gamipress_bbmembership_complete_quiz'] = __( 'Complete a quiz', 'gamipress' );
36 $triggers[__( 'BuddyBoss Courses', 'gamipress' )]['gamipress_bbmembership_complete_specific_quiz'] = __( 'Complete a specific quiz', 'gamipress' );
37 }
38
39 // BuddyBoss Memberships
40 if ( function_exists( 'buddybossmembership' ) ) {
41 $triggers[__( 'BuddyBoss Memberships', 'gamipress' )] = array(
42 'gamipress_bbmembership_add_membership' => __( 'Get added to a membership', 'gamipress' ),
43 'gamipress_bbmembership_add_specific_membership' => __( 'Get added to a specific membership', 'gamipress' ),
44 'gamipress_bbmembership_suspend_membership' => __( 'Suspend a membership', 'gamipress' ),
45 'gamipress_bbmembership_suspend_specific_membership' => __( 'Suspend a specific membership', 'gamipress' ),
46 'gamipress_bbmembership_cancel_membership' => __( 'Cancel a membership', 'gamipress' ),
47 'gamipress_bbmembership_cancel_specific_membership' => __( 'Cancel a specific membership', 'gamipress' ),
48 );
49 }
50
51 return $triggers;
52
53 }
54 add_filter( 'gamipress_buddyboss_activity_triggers', 'gamipress_bbmembership_activity_triggers' );
55
56 /**
57 * Build custom activity trigger label
58 *
59 * @since 1.0.0
60 *
61 * @param string $title
62 * @param integer $requirement_id
63 * @param array $requirement
64 *
65 * @return string
66 */
67 function gamipress_bbmembership_activity_trigger_label( $title, $requirement_id, $requirement ) {
68
69 $bp_member_type = ( isset( $requirement['bp_member_type'] ) ) ? $requirement['bp_member_type'] : '';
70 $bp_field_value = ( isset( $requirement['bp_field_value'] ) ) ? $requirement['bp_field_value'] : '';
71
72 switch( $requirement['trigger_type'] ) {
73
74 case 'gamipress_bbmembership_set_member_type':
75
76 if( function_exists( 'bp_get_member_types' ) ) {
77 $member_types = bp_get_member_types( array(), 'objects' );
78 } else {
79 $member_types = array();
80 }
81
82 if( isset( $member_types[$bp_member_type] ) ) {
83 return sprintf( __( 'Get assigned to the %s type', 'gamipress' ), $member_types[$bp_member_type]->labels['singular_name'] );
84 }
85 break;
86
87 case 'gamipress_bbmembership_update_profile_specific_value':
88 $achievement_post_id = absint( $requirement['achievement_post'] );
89 $bp_field_name = gamipress_get_specific_activity_trigger_post_title( $achievement_post_id, $requirement['trigger_type'], get_current_blog_id() );
90 return sprintf( __( 'Update %s field with %s value', 'gamipress' ), $bp_field_name, $bp_field_value );
91
92 break;
93
94 }
95
96 return $title;
97 }
98 add_filter( 'gamipress_activity_trigger_label', 'gamipress_bbmembership_activity_trigger_label', 10, 3 );
99
100 /**
101 * Register BuddyPress specific activity triggers
102 *
103 * @since 1.0.0
104 *
105 * @param array $specific_activity_triggers
106 * @return array
107 */
108 function gamipress_bbmembership_specific_activity_triggers( $specific_activity_triggers ) {
109
110 $specific_activity_triggers['gamipress_bbmembership_complete_specific_lesson'] = array( 'bbcs-lesson' );
111 $specific_activity_triggers['gamipress_bbmembership_complete_specific_section'] = array( 'bbcs-section' ); // To add function
112 $specific_activity_triggers['gamipress_bbmembership_complete_specific_course'] = array( 'bbcs-course' );
113 $specific_activity_triggers['gamipress_bbmembership_complete_specific_quiz'] = array( 'bbcs-quiz' );
114 $specific_activity_triggers['gamipress_bbmembership_add_specific_membership'] = array( 'bm-product' );
115 $specific_activity_triggers['gamipress_bbmembership_suspend_specific_membership'] = array( 'bm-product' );
116 $specific_activity_triggers['gamipress_bbmembership_cancel_specific_membership'] = array( 'bm-product' );
117
118
119 return $specific_activity_triggers;
120 }
121 add_filter( 'gamipress_specific_activity_triggers', 'gamipress_bbmembership_specific_activity_triggers' );
122
123 /**
124 * Register BuddyPress specific activity triggers labels
125 *
126 * @since 1.0.0
127 *
128 * @param array $specific_activity_trigger_labels
129 * @return array
130 */
131 function gamipress_bbmembership_specific_activity_trigger_label( $specific_activity_trigger_labels ) {
132
133 $specific_activity_trigger_labels['gamipress_bbmembership_complete_specific_lesson'] = __( 'Complete %s lesson', 'gamipress' );
134 $specific_activity_trigger_labels['gamipress_bbmembership_complete_specific_section'] = __( 'Complete %s section', 'gamipress' );
135 $specific_activity_trigger_labels['gamipress_bbmembership_complete_specific_course'] = __( 'Complete %s course', 'gamipress' );
136 $specific_activity_trigger_labels['gamipress_bbmembership_complete_specific_quiz'] = __( 'Complete %s quiz', 'gamipress' );
137 $specific_activity_trigger_labels['gamipress_bbmembership_add_specific_membership'] = __( 'Get added to %s membership', 'gamipress' );
138 $specific_activity_trigger_labels['gamipress_bbmembership_suspend_specific_membership'] = __( 'Suspend %s membership', 'gamipress' );
139 $specific_activity_trigger_labels['gamipress_bbmembership_cancel_specific_membership'] = __( 'Cancel %s membership', 'gamipress' );
140
141 return $specific_activity_trigger_labels;
142 }
143 add_filter( 'gamipress_specific_activity_trigger_label', 'gamipress_bbmembership_specific_activity_trigger_label' );
144
145 /**
146 * Get specific activity trigger post title
147 *
148 * @since 1.2.1
149 *
150 * @param string $post_title
151 * @param integer $specific_id
152 * @param string $trigger_type
153 * @param int $site_id
154 * @return string
155 */
156 function gamipress_bbmembership_specific_activity_trigger_post_title( $post_title, $specific_id, $trigger_type, $site_id ) {
157
158 switch( $trigger_type ) {
159 case 'gamipress_bbmembership_complete_specific_section':
160 if( absint( $specific_id ) !== 0 ) {
161 // Get the section title
162 $section_title = gamipress_bbmembership_get_section_title( $specific_id );
163
164 $post_title = $section_title;
165 }
166 break;
167
168 }
169
170 return $post_title;
171
172 }
173 add_filter( 'gamipress_specific_activity_trigger_post_title', 'gamipress_bbmembership_specific_activity_trigger_post_title', 10, 4 );
174
175 /**
176 * Get plugin specific activity trigger permalink
177 *
178 * @since 1.0.0
179 *
180 * @param string $permalink
181 * @param integer $specific_id
182 * @param string $trigger_type
183 * @param integer $site_id
184 *
185 * @return string
186 */
187 function gamipress_bbmembership_specific_activity_trigger_permalink( $permalink, $specific_id, $trigger_type, $site_id ) {
188
189 switch( $trigger_type ) {
190 case 'gamipress_bbmembership_complete_specific_section':
191 $permalink = '';
192 break;
193 }
194
195 return $permalink;
196
197 }
198 add_filter( 'gamipress_specific_activity_trigger_permalink', 'gamipress_bbmembership_specific_activity_trigger_permalink', 10, 4 );
199
200 /**
201 * Get user for a given trigger action.
202 *
203 * @since 1.0.0
204 *
205 * @param integer $user_id user ID to override.
206 * @param string $trigger Trigger name.
207 * @param array $args Passed trigger args.
208 * @return integer User ID.
209 */
210 function gamipress_bbmembership_trigger_get_user_id( $user_id, $trigger, $args ) {
211
212 switch ( $trigger ) {
213 case 'gamipress_bbmembership_complete_lesson':
214 case 'gamipress_bbmembership_complete_specific_lesson':
215 case 'gamipress_bbmembership_complete_section':
216 case 'gamipress_bbmembership_complete_specific_section':
217 case 'gamipress_bbmembership_complete_course':
218 case 'gamipress_bbmembership_complete_specific_course':
219 case 'gamipress_bbmembership_complete_quiz':
220 case 'gamipress_bbmembership_complete_specific_quiz':
221 case 'gamipress_bbmembership_add_membership':
222 case 'gamipress_bbmembership_add_specific_membership':
223 case 'gamipress_bbmembership_suspend_membership':
224 case 'gamipress_bbmembership_suspend_specific_membership':
225 case 'gamipress_bbmembership_cancel_membership':
226 case 'gamipress_bbmembership_cancel_specific_membership':
227 $user_id = $args[0];
228 break;
229 }
230
231 return $user_id;
232
233 }
234
235 add_filter( 'gamipress_trigger_get_user_id', 'gamipress_bbmembership_trigger_get_user_id', 10, 3);
236
237 /**
238 * Get the id for a given specific trigger action.
239 *
240 * @since 1.0.5
241 *
242 * @param integer $specific_id Specific ID.
243 * @param string $trigger Trigger name.
244 * @param array $args Passed trigger args.
245 *
246 * @return integer Specific ID.
247 */
248 function gamipress_bbmembership_specific_trigger_get_id( $specific_id, $trigger = '', $args = array() ) {
249
250 switch ( $trigger ) {
251 case 'gamipress_bbmembership_complete_lesson':
252 case 'gamipress_bbmembership_complete_specific_lesson':
253 case 'gamipress_bbmembership_complete_section':
254 case 'gamipress_bbmembership_complete_specific_section':
255 case 'gamipress_bbmembership_complete_course':
256 case 'gamipress_bbmembership_complete_specific_course':
257 case 'gamipress_bbmembership_complete_quiz':
258 case 'gamipress_bbmembership_complete_specific_quiz':
259 case 'gamipress_bbmembership_add_membership':
260 case 'gamipress_bbmembership_add_specific_membership':
261 case 'gamipress_bbmembership_suspend_membership':
262 case 'gamipress_bbmembership_suspend_specific_membership':
263 case 'gamipress_bbmembership_cancel_membership':
264 case 'gamipress_bbmembership_cancel_specific_membership':
265 $specific_id = $args[1];
266 break;
267 }
268
269 return $specific_id;
270 }
271 add_filter( 'gamipress_specific_trigger_get_id', 'gamipress_bbmembership_specific_trigger_get_id', 10, 3 );
272
273 /**
274 * Extended meta data for event trigger logging
275 *
276 * @since 1.0.5
277 *
278 * @param array $log_meta
279 * @param integer $user_id
280 * @param string $trigger
281 * @param integer $site_id
282 * @param array $args
283 *
284 * @return array
285 */
286 function gamipress_bbmembership_log_event_trigger_meta_data( $log_meta, $user_id, $trigger, $site_id, $args ) {
287
288 switch ( $trigger ) {
289 // BuddyBoss reactions
290 case 'gamipress_bbmembership_complete_lesson':
291 case 'gamipress_bbmembership_complete_specific_lesson':
292 // Lesson ID
293 $log_meta['lesson_id'] = $args[1];
294 break;
295 case 'gamipress_bbmembership_complete_section':
296 case 'gamipress_bbmembership_complete_specific_section':
297 // Section ID
298 $log_meta['section_id'] = $args[1];
299 break;
300 case 'gamipress_bbmembership_complete_course':
301 case 'gamipress_bbmembership_complete_specific_course':
302 // Course ID
303 $log_meta['course_id'] = $args[1];
304 break;
305 case 'gamipress_bbmembership_complete_quiz':
306 case 'gamipress_bbmembership_complete_specific_quiz':
307 // Quiz ID
308 $log_meta['quiz_id'] = $args[1];
309 break;
310 case 'gamipress_bbmembership_add_membership':
311 case 'gamipress_bbmembership_add_specific_membership':
312 case 'gamipress_bbmembership_suspend_membership':
313 case 'gamipress_bbmembership_suspend_specific_membership':
314 case 'gamipress_bbmembership_cancel_membership':
315 case 'gamipress_bbmembership_cancel_specific_membership':
316 // Membership ID
317 $log_meta['membership_id'] = $args[1];
318 break;
319 }
320
321 return $log_meta;
322 }
323 add_filter( 'gamipress_log_event_trigger_meta_data', 'gamipress_bbmembership_log_event_trigger_meta_data', 10, 5 );
324