PluginProbe
bbPress / 2.2
bbPress v2.2
trunk 2.0 2.0-beta-1 2.0-beta-2b 2.0-beta-3 2.0-beta-3b 2.0-rc-2 2.0-rc-3 2.0-rc-4 2.0-rc-5 2.0.1 2.0.2 2.0.3 2.1 2.1-beta-1 2.1-rc1 2.1-rc2 2.1-rc3 2.1-rc4 2.1.1 2.1.2 2.1.3 2.2 2.2.1 2.2.2 All 71 releases
bbpress / includes / extend / buddypress / functions.php

functions.php in bbPress 2.2, at includes/extend/buddypress/functions.php

456 lines 10.7 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2
3 /**
4 * Main bbPress BuddyPress Class
5 *
6 * @package bbPress
7 * @subpackage BuddyPress
8 * @todo maybe move to BuddyPress Forums once bbPress 1.1 can be removed
9 */
10
11 // Exit if accessed directly
12 if ( !defined( 'ABSPATH' ) ) exit;
13
14 /** BuddyPress Helpers ********************************************************/
15
16 /**
17 * Filter the current bbPress user ID with the current BuddyPress user ID
18 *
19 * @since bbPress (r3552)
20 *
21 * @param int $user_id
22 * @param bool $displayed_user_fallback
23 * @param bool $current_user_fallback
24 *
25 * @return int User ID
26 */
27 function bbp_filter_user_id( $user_id = 0, $displayed_user_fallback = true, $current_user_fallback = false ) {
28
29 // Define local variable
30 $bbp_user_id = 0;
31
32 // Get possible user ID's
33 $did = bp_displayed_user_id();
34 $lid = bp_loggedin_user_id();
35
36 // Easy empty checking
37 if ( !empty( $user_id ) && is_numeric( $user_id ) )
38 $bbp_user_id = $user_id;
39
40 // Currently viewing or editing a user
41 elseif ( ( true == $displayed_user_fallback ) && !empty( $did ) )
42 $bbp_user_id = $did;
43
44 // Maybe fallback on the current_user ID
45 elseif ( ( true == $current_user_fallback ) && !empty( $lid ) )
46 $bbp_user_id = $lid;
47
48 return $bbp_user_id;
49 }
50 add_filter( 'bbp_get_user_id', 'bbp_filter_user_id', 10, 3 );
51
52 /**
53 * Filter the bbPress is_single_user function with BuddyPress eqivalent
54 *
55 * @since bbPress (r3552)
56 *
57 * @param bool $is Optional. Default false
58 * @return bool True if viewing single user, false if not
59 */
60 function bbp_filter_is_single_user( $is = false ) {
61 if ( !empty( $is ) )
62 return $is;
63
64 return bp_is_user();
65 }
66 add_filter( 'bbp_is_single_user', 'bbp_filter_is_single_user', 10, 1 );
67
68 /**
69 * Filter the bbPress is_user_home function with BuddyPress eqivalent
70 *
71 * @since bbPress (r3552)
72 *
73 * @param bool $is Optional. Default false
74 * @return bool True if viewing single user, false if not
75 */
76 function bbp_filter_is_user_home( $is = false ) {
77 if ( !empty( $is ) )
78 return $is;
79
80 return bp_is_my_profile();
81 }
82 add_filter( 'bbp_is_user_home', 'bbp_filter_is_user_home', 10, 1 );
83
84 /** BuddyPress Screens ********************************************************/
85
86 /**
87 * Hook bbPress topics template into plugins template
88 *
89 * @since bbPress (r3552)
90 *
91 * @uses add_action() To add the content hook
92 * @uses bp_core_load_template() To load the plugins template
93 */
94 function bbp_member_forums_screen_topics() {
95 add_action( 'bp_template_content', 'bbp_member_forums_topics_content' );
96 bp_core_load_template( apply_filters( 'bbp_member_forums_screen_topics', 'members/single/plugins' ) );
97 }
98
99 /**
100 * Hook bbPress replies template into plugins template
101 *
102 * @since bbPress (r3552)
103 *
104 * @uses add_action() To add the content hook
105 * @uses bp_core_load_template() To load the plugins template
106 */
107 function bbp_member_forums_screen_replies() {
108 add_action( 'bp_template_content', 'bbp_member_forums_replies_content' );
109 bp_core_load_template( apply_filters( 'bbp_member_forums_screen_replies', 'members/single/plugins' ) );
110 }
111
112 /**
113 * Hook bbPress favorites template into plugins template
114 *
115 * @since bbPress (r3552)
116 *
117 * @uses add_action() To add the content hook
118 * @uses bp_core_load_template() To load the plugins template
119 */
120 function bbp_member_forums_screen_favorites() {
121 add_action( 'bp_template_content', 'bbp_member_forums_favorites_content' );
122 bp_core_load_template( apply_filters( 'bbp_member_forums_screen_favorites', 'members/single/plugins' ) );
123 }
124
125 /**
126 * Hook bbPress subscriptions template into plugins template
127 *
128 * @since bbPress (r3552)
129 *
130 * @uses add_action() To add the content hook
131 * @uses bp_core_load_template() To load the plugins template
132 */
133 function bbp_member_forums_screen_subscriptions() {
134 add_action( 'bp_template_content', 'bbp_member_forums_subscriptions_content' );
135 bp_core_load_template( apply_filters( 'bbp_member_forums_screen_subscriptions', 'members/single/plugins' ) );
136 }
137
138 /** BuddyPress Templates ******************************************************/
139
140 /**
141 * Get the topics created template part
142 *
143 * @since bbPress (r3552)
144 *
145 * @uses bbp_get_template_part()s
146 */
147 function bbp_member_forums_topics_content() {
148 ?>
149
150 <div id="bbpress-forums">
151
152 <?php bbp_get_template_part( 'user', 'topics-created' ); ?>
153
154 </div>
155
156 <?php
157 }
158
159 /**
160 * Get the topics replied to template part
161 *
162 * @since bbPress (r3552)
163 *
164 * @uses bbp_get_template_part()
165 */
166 function bbp_member_forums_replies_content() {
167 ?>
168
169 <div id="bbpress-forums">
170
171 <?php bbp_get_template_part( 'user', 'replies-created' ); ?>
172
173 </div>
174
175 <?php
176 }
177
178 /**
179 * Get the topics favorited template part
180 *
181 * @since bbPress (r3552)
182 *
183 * @uses bbp_get_template_part()
184 */
185 function bbp_member_forums_favorites_content() {
186 ?>
187
188 <div id="bbpress-forums">
189
190 <?php bbp_get_template_part( 'user', 'favorites' ); ?>
191
192 </div>
193
194 <?php
195 }
196
197 /**
198 * Get the topics subscribed template part
199 *
200 * @since bbPress (r3552)
201 *
202 * @uses bbp_get_template_part()
203 */
204 function bbp_member_forums_subscriptions_content() {
205 ?>
206
207 <div id="bbpress-forums">
208
209 <?php bbp_get_template_part( 'user', 'subscriptions' ); ?>
210
211 </div>
212
213 <?php
214 }
215
216 /** Forum/Group Sync **********************************************************/
217
218 /**
219 * These functions are used to keep the many-to-many relationships between
220 * groups and forums synchronized. Each forum and group stores ponters to each
221 * other in their respective meta. This way if a group or forum is deleted
222 * their associattions can be updated without much effort.
223 */
224
225 /**
226 * Get forum ID's for a group
227 *
228 * @param type $group_id
229 * @since bbPress (r3653)
230 */
231 function bbp_get_group_forum_ids( $group_id = 0 ) {
232
233 // Assume no forums
234 $forum_ids = array();
235
236 // Use current group if none is set
237 if ( empty( $group_id ) )
238 $group_id = bp_get_current_group_id();
239
240 // Get the forums
241 if ( !empty( $group_id ) )
242 $forum_ids = groups_get_groupmeta( $group_id, 'forum_id' );
243
244 // Make sure result is an array
245 if ( !is_array( $forum_ids ) )
246 $forum_ids = (array) $forum_ids;
247
248 // Trim out any empty array items
249 $forum_ids = array_filter( $forum_ids );
250
251 return (array) apply_filters( 'bbp_get_group_forum_ids', $forum_ids, $group_id );
252 }
253
254 /**
255 * Get group ID's for a forum
256 *
257 * @param type $forum_id
258 * @since bbPress (r3653)
259 */
260 function bbp_get_forum_group_ids( $forum_id = 0 ) {
261
262 // Assume no forums
263 $group_ids = array();
264
265 // Use current group if none is set
266 if ( empty( $forum_id ) )
267 $forum_id = bbp_get_forum_id();
268
269 // Get the forums
270 if ( !empty( $forum_id ) )
271 $group_ids = get_post_meta( $forum_id, '_bbp_group_ids', true );
272
273 // Make sure result is an array
274 if ( !is_array( $group_ids ) )
275 $group_ids = (array) $group_ids;
276
277 // Trim out any empty array items
278 $group_ids = array_filter( $group_ids );
279
280 return (array) apply_filters( 'bbp_get_forum_group_ids', $group_ids, $forum_id );
281 }
282
283 /**
284 * Get forum ID's for a group
285 *
286 * @param type $group_id
287 * @since bbPress (r3653)
288 */
289 function bbp_update_group_forum_ids( $group_id = 0, $forum_ids = array() ) {
290
291 // Use current group if none is set
292 if ( empty( $group_id ) )
293 $group_id = bp_get_current_group_id();
294
295 // Trim out any empties
296 $forum_ids = array_filter( $forum_ids );
297
298 // Get the forums
299 return groups_update_groupmeta( $group_id, 'forum_id', $forum_ids );
300 }
301
302 /**
303 * Update group ID's for a forum
304 *
305 * @param type $forum_id
306 * @since bbPress (r3653)
307 */
308 function bbp_update_forum_group_ids( $forum_id = 0, $group_ids = array() ) {
309 $forum_id = bbp_get_forum_id( $forum_id );
310
311 // Trim out any empties
312 $group_ids = array_filter( $group_ids );
313
314 // Get the forums
315 return update_post_meta( $forum_id, '_bbp_group_ids', $group_ids );
316 }
317
318 /**
319 * Add a group to a forum
320 *
321 * @param type $group_id
322 * @since bbPress (r3653)
323 */
324 function bbp_add_group_id_to_forum( $forum_id = 0, $group_id = 0 ) {
325
326 // Validate forum_id
327 $forum_id = bbp_get_forum_id( $forum_id );
328
329 // Use current group if none is set
330 if ( empty( $group_id ) )
331 $group_id = bp_get_current_group_id();
332
333 // Get current group IDs
334 $group_ids = bbp_get_forum_group_ids( $forum_id );
335
336 // Maybe update the groups forums
337 if ( !in_array( $group_id, $group_ids ) ) {
338 $group_ids[] = $group_id;
339 return bbp_update_forum_group_ids( $forum_id, $group_ids );
340 }
341 }
342
343 /**
344 * Remove a forum from a group
345 *
346 * @param type $group_id
347 * @since bbPress (r3653)
348 */
349 function bbp_add_forum_id_to_group( $group_id = 0, $forum_id = 0 ) {
350
351 // Validate forum_id
352 $forum_id = bbp_get_forum_id( $forum_id );
353
354 // Use current group if none is set
355 if ( empty( $group_id ) )
356 $group_id = bp_get_current_group_id();
357
358 // Get current group IDs
359 $forum_ids = bbp_get_group_forum_ids( $group_id );
360
361 // Maybe update the groups forums
362 if ( !in_array( $forum_id, $forum_ids ) ) {
363 $forum_ids[] = $forum_id;
364 return bbp_update_group_forum_ids( $group_id, $forum_ids );
365 }
366 }
367
368 /**
369 * Remove a group from a forum
370 *
371 * @param type $group_id
372 * @since bbPress (r3653)
373 */
374 function bbp_remove_group_id_from_forum( $forum_id = 0, $group_id = 0 ) {
375
376 // Validate forum_id
377 $forum_id = bbp_get_forum_id( $forum_id );
378
379 // Use current group if none is set
380 if ( empty( $group_id ) )
381 $group_id = bp_get_current_group_id();
382
383 // Get current group IDs
384 $group_ids = bbp_get_forum_group_ids( $forum_id );
385
386 // Maybe update the groups forums
387 if ( in_array( $group_id, $group_ids ) ) {
388 unset( $group_ids[$group_id] );
389 return bbp_update_forum_group_ids( $forum_id, $group_ids );
390 }
391 }
392
393 /**
394 * Remove a forum from a group
395 *
396 * @param type $group_id
397 * @since bbPress (r3653)
398 */
399 function bbp_remove_forum_id_from_group( $group_id = 0, $forum_id = 0 ) {
400
401 // Validate forum_id
402 $forum_id = bbp_get_forum_id( $forum_id );
403
404 // Use current group if none is set
405 if ( empty( $group_id ) )
406 $group_id = bp_get_current_group_id();
407
408 // Get current group IDs
409 $forum_ids = bbp_get_group_forum_ids( $group_id );
410
411 // Maybe update the groups forums
412 if ( in_array( $forum_id, $forum_ids ) ) {
413 unset( $forum_ids[$forum_id] );
414 return bbp_update_group_forum_ids( $group_id, $forum_ids );
415 }
416 }
417
418 /**
419 * Remove a group from aall forums
420 *
421 * @param type $group_id
422 * @since bbPress (r3653)
423 */
424 function bbp_remove_group_id_from_all_forums( $group_id = 0 ) {
425
426 // Use current group if none is set
427 if ( empty( $group_id ) )
428 $group_id = bp_get_current_group_id();
429
430 // Get current group IDs
431 $forum_ids = bbp_get_group_forum_ids( $group_id );
432
433 // Loop through forums and remove this group from each one
434 foreach( (array) $forum_ids as $forum_id ) {
435 bbp_remove_group_id_from_forum( $group_id, $forum_id );
436 }
437 }
438
439 /**
440 * Remove a forum from all groups
441 *
442 * @param type $forum_id
443 * @since bbPress (r3653)
444 */
445 function bbp_remove_forum_id_from_all_groups( $forum_id = 0 ) {
446
447 // Validate
448 $forum_id = bbp_get_forum_id( $forum_id );
449 $group_ids = bbp_get_forum_group_ids( $forum_id );
450
451 // Loop through groups and remove this forum from each one
452 foreach( (array) $group_ids as $group_id ) {
453 bbp_remove_forum_id_from_group( $forum_id, $group_id );
454 }
455 }
456