Skip to:
Content

BuddyPress.org

Ticket #4589: bp-groups-template.php-orig

File bp-groups-template.php-orig, 86.4 KB (added by simplyletgo, 14 years ago)

original file in directory bp-themes/bp-default/groups/single/

Line 
1<?php
2
3/**
4 * BuddyPress Groups Template Functions
5 *
6 * @package BuddyPress
7 * @subpackage GroupsTemplate
8 */
9
10// Exit if accessed directly
11if ( !defined( 'ABSPATH' ) ) exit;
12
13/**
14 * Output the groups component slug
15 *
16 * @package BuddyPress
17 * @subpackage Groups Template
18 * @since BuddyPress (1.5)
19 *
20 * @uses bp_get_groups_slug()
21 */
22function bp_groups_slug() {
23 echo bp_get_groups_slug();
24}
25 /**
26 * Return the groups component slug
27 *
28 * @package BuddyPress
29 * @subpackage Groups Template
30 * @since BuddyPress (1.5)
31 */
32 function bp_get_groups_slug() {
33 global $bp;
34 return apply_filters( 'bp_get_groups_slug', $bp->groups->slug );
35 }
36
37/**
38 * Output the groups component root slug
39 *
40 * @package BuddyPress
41 * @subpackage Groups Template
42 * @since BuddyPress (1.5)
43 *
44 * @uses bp_get_groups_root_slug()
45 */
46function bp_groups_root_slug() {
47 echo bp_get_groups_root_slug();
48}
49 /**
50 * Return the groups component root slug
51 *
52 * @package BuddyPress
53 * @subpackage Groups Template
54 * @since BuddyPress (1.5)
55 */
56 function bp_get_groups_root_slug() {
57 global $bp;
58 return apply_filters( 'bp_get_groups_root_slug', $bp->groups->root_slug );
59 }
60
61/**
62 * Output group directory permalink
63 *
64 * @package BuddyPress
65 * @subpackage Groups Template
66 * @since BuddyPress (1.5)
67 * @uses bp_get_groups_directory_permalink()
68 */
69function bp_groups_directory_permalink() {
70 echo bp_get_groups_directory_permalink();
71}
72 /**
73 * Return group directory permalink
74 *
75 * @package BuddyPress
76 * @subpackage Groups Template
77 * @since BuddyPress (1.5)
78 * @uses apply_filters()
79 * @uses traisingslashit()
80 * @uses bp_get_root_domain()
81 * @uses bp_get_groups_root_slug()
82 * @return string
83 */
84 function bp_get_groups_directory_permalink() {
85 return apply_filters( 'bp_get_groups_directory_permalink', trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() ) );
86 }
87
88/*****************************************************************************
89 * Groups Template Class/Tags
90 **/
91
92class BP_Groups_Template {
93 var $current_group = -1;
94 var $group_count;
95 var $groups;
96 var $group;
97
98 var $in_the_loop;
99
100 var $pag_page;
101 var $pag_num;
102 var $pag_links;
103 var $total_group_count;
104
105 var $single_group = false;
106
107 var $sort_by;
108 var $order;
109
110 function __construct( $user_id, $type, $page, $per_page, $max, $slug, $search_terms, $populate_extras, $include = false, $exclude = false, $show_hidden = false, $page_arg = 'grpage' ){
111
112 $this->pag_page = isset( $_REQUEST[$page_arg] ) ? intval( $_REQUEST[$page_arg] ) : $page;
113 $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
114
115 if ( bp_current_user_can( 'bp_moderate' ) || ( is_user_logged_in() && $user_id == bp_loggedin_user_id() ) )
116 $show_hidden = true;
117
118 if ( 'invites' == $type ) {
119 $this->groups = groups_get_invites_for_user( $user_id, $this->pag_num, $this->pag_page, $exclude );
120 } else if ( 'single-group' == $type ) {
121 $group = new stdClass;
122 $group->group_id = BP_Groups_Group::get_id_from_slug( $slug );
123 $this->groups = array( $group );
124 } else {
125 $this->groups = groups_get_groups( array(
126 'type' => $type,
127 'per_page' => $this->pag_num,
128 'page' => $this->pag_page,
129 'user_id' => $user_id,
130 'search_terms' => $search_terms,
131 'include' => $include,
132 'exclude' => $exclude,
133 'populate_extras' => $populate_extras,
134 'show_hidden' => $show_hidden
135 ) );
136 }
137
138 if ( 'invites' == $type ) {
139 $this->total_group_count = (int) $this->groups['total'];
140 $this->group_count = (int) $this->groups['total'];
141 $this->groups = $this->groups['groups'];
142 } else if ( 'single-group' == $type ) {
143 $this->single_group = true;
144 $this->total_group_count = 1;
145 $this->group_count = 1;
146 } else {
147 if ( empty( $max ) || $max >= (int) $this->groups['total'] ) {
148 $this->total_group_count = (int) $this->groups['total'];
149 } else {
150 $this->total_group_count = (int) $max;
151 }
152
153 $this->groups = $this->groups['groups'];
154
155 if ( !empty( $max ) ) {
156 if ( $max >= count( $this->groups ) ) {
157 $this->group_count = count( $this->groups );
158 } else {
159 $this->group_count = (int) $max;
160 }
161 } else {
162 $this->group_count = count( $this->groups );
163 }
164 }
165
166 // Build pagination links
167 if ( (int) $this->total_group_count && (int) $this->pag_num ) {
168 $this->pag_links = paginate_links( array(
169 'base' => add_query_arg( array( $page_arg => '%#%', 'num' => $this->pag_num, 's' => $search_terms, 'sortby' => $this->sort_by, 'order' => $this->order ) ),
170 'format' => '',
171 'total' => ceil( (int) $this->total_group_count / (int) $this->pag_num ),
172 'current' => $this->pag_page,
173 'prev_text' => _x( '&larr;', 'Group pagination previous text', 'buddypress' ),
174 'next_text' => _x( '&rarr;', 'Group pagination next text', 'buddypress' ),
175 'mid_size' => 1
176 ) );
177 }
178 }
179
180 function has_groups() {
181 if ( $this->group_count )
182 return true;
183
184 return false;
185 }
186
187 function next_group() {
188 $this->current_group++;
189 $this->group = $this->groups[$this->current_group];
190
191 return $this->group;
192 }
193
194 function rewind_groups() {
195 $this->current_group = -1;
196 if ( $this->group_count > 0 ) {
197 $this->group = $this->groups[0];
198 }
199 }
200
201 function groups() {
202 if ( $this->current_group + 1 < $this->group_count ) {
203 return true;
204 } elseif ( $this->current_group + 1 == $this->group_count ) {
205 do_action('group_loop_end');
206 // Do some cleaning up after the loop
207 $this->rewind_groups();
208 }
209
210 $this->in_the_loop = false;
211 return false;
212 }
213
214 function the_group() {
215 $this->in_the_loop = true;
216 $this->group = $this->next_group();
217
218 if ( $this->single_group )
219 $this->group = groups_get_group( array( 'group_id' => $this->group->group_id ) );
220
221 if ( 0 == $this->current_group ) // loop has just started
222 do_action('group_loop_start');
223 }
224}
225
226function bp_has_groups( $args = '' ) {
227 global $groups_template, $bp;
228
229 /***
230 * Set the defaults based on the current page. Any of these will be overridden
231 * if arguments are directly passed into the loop. Custom plugins should always
232 * pass their parameters directly to the loop.
233 */
234 $slug = false;
235 $type = 'active';
236 $user_id = 0;
237 $order = '';
238
239 // User filtering
240 if ( bp_displayed_user_id() )
241 $user_id = bp_displayed_user_id();
242
243 // Type
244 if ( bp_is_current_action( 'my-groups' ) ) {
245 if ( 'most-popular' == $order ) {
246 $type = 'popular';
247 } elseif ( 'alphabetically' == $order ) {
248 $type = 'alphabetical';
249 }
250 } elseif ( bp_is_current_action( 'invites' ) ) {
251 $type = 'invites';
252 } elseif ( isset( $bp->groups->current_group->slug ) && $bp->groups->current_group->slug ) {
253 $type = 'single-group';
254 $slug = $bp->groups->current_group->slug;
255 }
256
257 $defaults = array(
258 'type' => $type,
259 'page' => 1,
260 'per_page' => 20,
261 'max' => false,
262 'show_hidden' => false,
263
264 'page_arg' => 'grpage', // See https://buddypress.trac.wordpress.org/ticket/3679
265
266 'user_id' => $user_id, // Pass a user ID to limit to groups this user has joined
267 'slug' => $slug, // Pass a group slug to only return that group
268 'search_terms' => '', // Pass search terms to return only matching groups
269 'include' => false, // Pass comma separated list or array of group ID's to return only these groups
270 'exclude' => false, // Pass comma separated list or array of group ID's to exclude these groups
271
272 'populate_extras' => true // Get extra meta - is_member, is_banned
273 );
274
275 $r = wp_parse_args( $args, $defaults );
276 extract( $r );
277
278 if ( empty( $search_terms ) ) {
279 if ( isset( $_REQUEST['group-filter-box'] ) && !empty( $_REQUEST['group-filter-box'] ) )
280 $search_terms = $_REQUEST['group-filter-box'];
281 elseif ( isset( $_REQUEST['s'] ) && !empty( $_REQUEST['s'] ) )
282 $search_terms = $_REQUEST['s'];
283 else
284 $search_terms = false;
285 }
286
287 $groups_template = new BP_Groups_Template( (int) $user_id, $type, (int) $page, (int) $per_page, (int) $max, $slug, $search_terms, (bool)$populate_extras, $include, $exclude, $show_hidden, $page_arg );
288 return apply_filters( 'bp_has_groups', $groups_template->has_groups(), $groups_template );
289}
290
291function bp_groups() {
292 global $groups_template;
293 return $groups_template->groups();
294}
295
296function bp_the_group() {
297 global $groups_template;
298 return $groups_template->the_group();
299}
300
301function bp_group_is_visible( $group = false ) {
302 global $groups_template;
303
304 if ( bp_current_user_can( 'bp_moderate' ) )
305 return true;
306
307 if ( empty( $group ) )
308 $group =& $groups_template->group;
309
310 if ( 'public' == $group->status ) {
311 return true;
312 } else {
313 if ( groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) {
314 return true;
315 }
316 }
317
318 return false;
319}
320
321function bp_group_id() {
322 echo bp_get_group_id();
323}
324 function bp_get_group_id( $group = false ) {
325 global $groups_template;
326
327 if ( empty( $group ) )
328 $group =& $groups_template->group;
329
330 return apply_filters( 'bp_get_group_id', $group->id );
331 }
332
333function bp_group_name() {
334 echo bp_get_group_name();
335}
336 function bp_get_group_name( $group = false ) {
337 global $groups_template;
338
339 if ( empty( $group ) )
340 $group =& $groups_template->group;
341
342 return apply_filters( 'bp_get_group_name', $group->name );
343 }
344
345function bp_group_type() {
346 echo bp_get_group_type();
347}
348 function bp_get_group_type( $group = false ) {
349 global $groups_template;
350
351 if ( empty( $group ) )
352 $group =& $groups_template->group;
353
354 if ( 'public' == $group->status ) {
355 $type = __( "Public Group", "buddypress" );
356 } else if ( 'hidden' == $group->status ) {
357 $type = __( "Hidden Group", "buddypress" );
358 } else if ( 'private' == $group->status ) {
359 $type = __( "Private Group", "buddypress" );
360 } else {
361 $type = ucwords( $group->status ) . ' ' . __( 'Group', 'buddypress' );
362 }
363
364 return apply_filters( 'bp_get_group_type', $type );
365 }
366
367function bp_group_status() {
368 echo bp_get_group_status();
369}
370 function bp_get_group_status( $group = false ) {
371 global $groups_template;
372
373 if ( empty( $group ) )
374 $group =& $groups_template->group;
375
376 return apply_filters( 'bp_get_group_status', $group->status );
377 }
378
379function bp_group_avatar( $args = '' ) {
380 echo bp_get_group_avatar( $args );
381}
382 function bp_get_group_avatar( $args = '' ) {
383 global $bp, $groups_template;
384
385 $defaults = array(
386 'type' => 'full',
387 'width' => false,
388 'height' => false,
389 'class' => 'avatar',
390 'id' => false,
391 'alt' => sprintf( __( 'Group logo of %s', 'buddypress' ), $groups_template->group->name )
392 );
393
394 $r = wp_parse_args( $args, $defaults );
395 extract( $r, EXTR_SKIP );
396
397 /* Fetch the avatar from the folder, if not provide backwards compat. */
398 if ( !$avatar = bp_core_fetch_avatar( array( 'item_id' => $groups_template->group->id, 'object' => 'group', 'type' => $type, 'avatar_dir' => 'group-avatars', 'alt' => $alt, 'css_id' => $id, 'class' => $class, 'width' => $width, 'height' => $height, 'title' => $groups_template->group->name, 'alt' => $alt ) ) )
399 $avatar = '<img src="' . esc_attr( $groups_template->group->avatar_thumb ) . '" class="avatar" alt="' . esc_attr( $groups_template->group->name ) . '" />';
400
401 return apply_filters( 'bp_get_group_avatar', $avatar );
402 }
403
404function bp_group_avatar_thumb() {
405 echo bp_get_group_avatar_thumb();
406}
407 function bp_get_group_avatar_thumb( $group = false ) {
408 return bp_get_group_avatar( 'type=thumb' );
409 }
410
411function bp_group_avatar_mini() {
412 echo bp_get_group_avatar_mini();
413}
414 function bp_get_group_avatar_mini( $group = false ) {
415 return bp_get_group_avatar( 'type=thumb&width=30&height=30' );
416 }
417
418function bp_group_last_active() {
419 echo bp_get_group_last_active();
420}
421 function bp_get_group_last_active( $group = false ) {
422 global $groups_template;
423
424 if ( empty( $group ) )
425 $group =& $groups_template->group;
426
427 $last_active = $group->last_activity;
428
429 if ( !$last_active )
430 $last_active = groups_get_groupmeta( $group->id, 'last_activity' );
431
432 if ( empty( $last_active ) ) {
433 return __( 'not yet active', 'buddypress' );
434 } else {
435 return apply_filters( 'bp_get_group_last_active', bp_core_time_since( $last_active ) );
436 }
437 }
438
439function bp_group_permalink() {
440 echo bp_get_group_permalink();
441}
442 function bp_get_group_permalink( $group = false ) {
443 global $groups_template;
444
445 if ( empty( $group ) )
446 $group =& $groups_template->group;
447
448 return apply_filters( 'bp_get_group_permalink', trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/' . $group->slug . '/' ) );
449 }
450
451function bp_group_admin_permalink() {
452 echo bp_get_group_admin_permalink();
453}
454 function bp_get_group_admin_permalink( $group = false ) {
455 global $groups_template;
456
457 if ( empty( $group ) )
458 $group =& $groups_template->group;
459
460 return apply_filters( 'bp_get_group_admin_permalink', trailingslashit( bp_get_group_permalink( $group ) . 'admin' ) );
461 }
462
463function bp_group_slug() {
464 echo bp_get_group_slug();
465}
466 function bp_get_group_slug( $group = false ) {
467 global $groups_template;
468
469 if ( empty( $group ) )
470 $group =& $groups_template->group;
471
472 return apply_filters( 'bp_get_group_slug', $group->slug );
473 }
474
475function bp_group_description() {
476 echo bp_get_group_description();
477}
478 function bp_get_group_description( $group = false ) {
479 global $groups_template;
480
481 if ( empty( $group ) )
482 $group =& $groups_template->group;
483
484 return apply_filters( 'bp_get_group_description', stripslashes($group->description) );
485 }
486
487function bp_group_description_editable() {
488 echo bp_get_group_description_editable();
489}
490 function bp_get_group_description_editable( $group = false ) {
491 global $groups_template;
492
493 if ( empty( $group ) )
494 $group =& $groups_template->group;
495
496 return apply_filters( 'bp_get_group_description_editable', $group->description );
497 }
498
499function bp_group_description_excerpt() {
500 echo bp_get_group_description_excerpt();
501}
502 function bp_get_group_description_excerpt( $group = false ) {
503 global $groups_template;
504
505 if ( empty( $group ) )
506 $group =& $groups_template->group;
507
508 return apply_filters( 'bp_get_group_description_excerpt', bp_create_excerpt( $group->description ) );
509 }
510
511
512function bp_group_public_status() {
513 echo bp_get_group_public_status();
514}
515 function bp_get_group_public_status( $group = false ) {
516 global $groups_template;
517
518 if ( empty( $group ) )
519 $group =& $groups_template->group;
520
521 if ( $group->is_public ) {
522 return __( 'Public', 'buddypress' );
523 } else {
524 return __( 'Private', 'buddypress' );
525 }
526 }
527
528function bp_group_is_public() {
529 echo bp_get_group_is_public();
530}
531 function bp_get_group_is_public( $group = false ) {
532 global $groups_template;
533
534 if ( empty( $group ) )
535 $group =& $groups_template->group;
536
537 return apply_filters( 'bp_get_group_is_public', $group->is_public );
538 }
539
540function bp_group_date_created() {
541 echo bp_get_group_date_created();
542}
543 function bp_get_group_date_created( $group = false ) {
544 global $groups_template;
545
546 if ( empty( $group ) )
547 $group =& $groups_template->group;
548
549 return apply_filters( 'bp_get_group_date_created', bp_core_time_since( strtotime( $group->date_created ) ) );
550 }
551
552function bp_group_is_admin() {
553 return bp_is_item_admin();
554}
555
556function bp_group_is_mod() {
557 return bp_is_item_mod();
558}
559
560function bp_group_list_admins( $group = false ) {
561 global $groups_template;
562
563 if ( empty( $group ) )
564 $group =& $groups_template->group;
565
566 if ( !empty( $group->admins ) ) { ?>
567 <ul id="group-admins">
568 <?php foreach( (array) $group->admins as $admin ) { ?>
569 <li>
570 <a href="<?php echo bp_core_get_user_domain( $admin->user_id, $admin->user_nicename, $admin->user_login ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'email' => $admin->user_email, 'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), bp_core_get_user_displayname( $admin->user_id ) ) ) ) ?></a>
571 </li>
572 <?php } ?>
573 </ul>
574 <?php } else { ?>
575 <span class="activity"><?php _e( 'No Admins', 'buddypress' ) ?></span>
576 <?php } ?>
577<?php
578}
579
580function bp_group_list_mods( $group = false ) {
581 global $groups_template;
582
583 if ( empty( $group ) )
584 $group =& $groups_template->group;
585
586 if ( !empty( $group->mods ) ) : ?>
587
588 <ul id="group-mods">
589
590 <?php foreach( (array) $group->mods as $mod ) { ?>
591
592 <li>
593 <a href="<?php echo bp_core_get_user_domain( $mod->user_id, $mod->user_nicename, $mod->user_login ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'email' => $mod->user_email, 'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), bp_core_get_user_displayname( $mod->user_id ) ) ) ) ?></a>
594 </li>
595
596 <?php } ?>
597
598 </ul>
599
600<?php else : ?>
601
602 <span class="activity"><?php _e( 'No Mods', 'buddypress' ) ?></span>
603
604<?php endif;
605
606}
607
608/**
609 * Return a list of user_ids for a group's admins
610 *
611 * @package BuddyPress
612 * @since BuddyPress (1.5)
613 *
614 * @param obj $group (optional) The group being queried. Defaults to the current group in the loop
615 * @param str $format 'string' to get a comma-separated string, 'array' to get an array
616 * @return mixed $admin_ids A string or array of user_ids
617 */
618function bp_group_admin_ids( $group = false, $format = 'string' ) {
619 global $groups_template;
620
621 if ( empty( $group ) )
622 $group =& $groups_template->group;
623
624 $admin_ids = array();
625
626 if ( $group->admins ) {
627 foreach( $group->admins as $admin ) {
628 $admin_ids[] = $admin->user_id;
629 }
630 }
631
632 if ( 'string' == $format )
633 $admin_ids = implode( ',', $admin_ids );
634
635 return apply_filters( 'bp_group_admin_ids', $admin_ids );
636}
637
638/**
639 * Return a list of user_ids for a group's moderators
640 *
641 * @package BuddyPress
642 * @since BuddyPress (1.5)
643 *
644 * @param obj $group (optional) The group being queried. Defaults to the current group in the loop
645 * @param str $format 'string' to get a comma-separated string, 'array' to get an array
646 * @return mixed $mod_ids A string or array of user_ids
647 */
648function bp_group_mod_ids( $group = false, $format = 'string' ) {
649 global $groups_template;
650
651 if ( empty( $group ) )
652 $group =& $groups_template->group;
653
654 $mod_ids = array();
655
656 if ( $group->mods ) {
657 foreach( $group->mods as $mod ) {
658 $mod_ids[] = $mod->user_id;
659 }
660 }
661
662 if ( 'string' == $format )
663 $mod_ids = implode( ',', $mod_ids );
664
665 return apply_filters( 'bp_group_mod_ids', $mod_ids );
666}
667
668function bp_group_all_members_permalink() {
669 echo bp_get_group_all_members_permalink();
670}
671 function bp_get_group_all_members_permalink( $group = false ) {
672 global $groups_template;
673
674 if ( empty( $group ) )
675 $group =& $groups_template->group;
676
677 return apply_filters( 'bp_get_group_all_members_permalink', bp_get_group_permalink( $group ) . 'members' );
678 }
679
680function bp_group_search_form() {
681 global $bp;
682
683 $action = bp_displayed_user_domain() . bp_get_groups_slug() . '/my-groups/search/';
684 $label = __('Filter Groups', 'buddypress');
685 $name = 'group-filter-box';
686
687?>
688 <form action="<?php echo $action ?>" id="group-search-form" method="post">
689 <label for="<?php echo $name ?>" id="<?php echo $name ?>-label"><?php echo $label ?></label>
690 <input type="search" name="<?php echo $name ?>" id="<?php echo $name ?>" value="<?php echo $value ?>"<?php echo $disabled ?> />
691
692 <?php wp_nonce_field( 'group-filter-box', '_wpnonce_group_filter' ) ?>
693 </form>
694<?php
695}
696
697function bp_group_show_no_groups_message() {
698 if ( !groups_total_groups_for_user( bp_displayed_user_id() ) )
699 return true;
700
701 return false;
702}
703
704function bp_group_is_activity_permalink() {
705
706 if ( !bp_is_single_item() || !bp_is_groups_component() || !bp_is_current_action( bp_get_activity_slug() ) )
707 return false;
708
709 return true;
710}
711
712function bp_groups_pagination_links() {
713 echo bp_get_groups_pagination_links();
714}
715 function bp_get_groups_pagination_links() {
716 global $groups_template;
717
718 return apply_filters( 'bp_get_groups_pagination_links', $groups_template->pag_links );
719 }
720
721function bp_groups_pagination_count() {
722 echo bp_get_groups_pagination_count();
723}
724 function bp_get_groups_pagination_count() {
725 global $groups_template;
726
727 $start_num = intval( ( $groups_template->pag_page - 1 ) * $groups_template->pag_num ) + 1;
728 $from_num = bp_core_number_format( $start_num );
729 $to_num = bp_core_number_format( ( $start_num + ( $groups_template->pag_num - 1 ) > $groups_template->total_group_count ) ? $groups_template->total_group_count : $start_num + ( $groups_template->pag_num - 1 ) );
730 $total = bp_core_number_format( $groups_template->total_group_count );
731
732 return apply_filters( 'bp_get_groups_pagination_count', sprintf( __( 'Viewing group %1$s to %2$s (of %3$s groups)', 'buddypress' ), $from_num, $to_num, $total ) );
733 }
734
735function bp_groups_auto_join() {
736 global $bp;
737
738 return apply_filters( 'bp_groups_auto_join', (bool)$bp->groups->auto_join );
739}
740
741function bp_group_total_members( $group = false ) {
742 echo bp_get_group_total_members( $group );
743}
744 function bp_get_group_total_members( $group = false ) {
745 global $groups_template;
746
747 if ( empty( $group ) )
748 $group =& $groups_template->group;
749
750 return apply_filters( 'bp_get_group_total_members', $group->total_member_count );
751 }
752
753function bp_group_member_count() {
754 echo bp_get_group_member_count();
755}
756 function bp_get_group_member_count() {
757 global $groups_template;
758
759 if ( 1 == (int) $groups_template->group->total_member_count )
760 return apply_filters( 'bp_get_group_member_count', sprintf( __( '%s member', 'buddypress' ), bp_core_number_format( $groups_template->group->total_member_count ) ) );
761 else
762 return apply_filters( 'bp_get_group_member_count', sprintf( __( '%s members', 'buddypress' ), bp_core_number_format( $groups_template->group->total_member_count ) ) );
763 }
764
765function bp_group_forum_permalink() {
766 echo bp_get_group_forum_permalink();
767}
768 function bp_get_group_forum_permalink( $group = false ) {
769 global $groups_template;
770
771 if ( empty( $group ) )
772 $group =& $groups_template->group;
773
774 return apply_filters( 'bp_get_group_forum_permalink', bp_get_group_permalink( $group ) . 'forum' );
775 }
776
777function bp_group_forum_topic_count( $args = '' ) {
778 echo bp_get_group_forum_topic_count( $args );
779}
780 function bp_get_group_forum_topic_count( $args = '' ) {
781 global $groups_template;
782
783 $defaults = array(
784 'showtext' => false
785 );
786
787 $r = wp_parse_args( $args, $defaults );
788 extract( $r, EXTR_SKIP );
789
790 if ( !$forum_id = groups_get_groupmeta( $groups_template->group->id, 'forum_id' ) )
791 return false;
792
793 if ( !bp_is_active( 'forums' ) )
794 return false;
795
796 if ( !$groups_template->group->forum_counts )
797 $groups_template->group->forum_counts = bp_forums_get_forum_topicpost_count( (int) $forum_id );
798
799 if ( (bool) $showtext ) {
800 if ( 1 == (int) $groups_template->group->forum_counts[0]->topics )
801 $total_topics = sprintf( __( '%d topic', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->topics );
802 else
803 $total_topics = sprintf( __( '%d topics', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->topics );
804 } else {
805 $total_topics = (int) $groups_template->group->forum_counts[0]->topics;
806 }
807
808 return apply_filters( 'bp_get_group_forum_topic_count', $total_topics, (bool)$showtext );
809 }
810
811function bp_group_forum_post_count( $args = '' ) {
812 echo bp_get_group_forum_post_count( $args );
813}
814 function bp_get_group_forum_post_count( $args = '' ) {
815 global $groups_template;
816
817 $defaults = array(
818 'showtext' => false
819 );
820
821 $r = wp_parse_args( $args, $defaults );
822 extract( $r, EXTR_SKIP );
823
824 if ( !$forum_id = groups_get_groupmeta( $groups_template->group->id, 'forum_id' ) )
825 return false;
826
827 if ( !bp_is_active( 'forums' ) )
828 return false;
829
830 if ( !$groups_template->group->forum_counts )
831 $groups_template->group->forum_counts = bp_forums_get_forum_topicpost_count( (int) $forum_id );
832
833 if ( (bool) $showtext ) {
834 if ( 1 == (int) $groups_template->group->forum_counts[0]->posts )
835 $total_posts = sprintf( __( '%d post', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->posts );
836 else
837 $total_posts = sprintf( __( '%d posts', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->posts );
838 } else {
839 $total_posts = (int) $groups_template->group->forum_counts[0]->posts;
840 }
841
842 return apply_filters( 'bp_get_group_forum_post_count', $total_posts, (bool)$showtext );
843 }
844
845function bp_group_is_forum_enabled( $group = false ) {
846 global $groups_template;
847
848 if ( empty( $group ) )
849 $group =& $groups_template->group;
850
851 if ( bp_is_active( 'forums' ) ) {
852 if ( bp_forums_is_installed_correctly() ) {
853 if ( $group->enable_forum )
854 return true;
855
856 return false;
857 } else {
858 return false;
859 }
860 }
861
862 return false;
863}
864
865function bp_group_show_forum_setting( $group = false ) {
866 global $groups_template;
867
868 if ( empty( $group ) )
869 $group =& $groups_template->group;
870
871 if ( $group->enable_forum )
872 echo ' checked="checked"';
873}
874
875function bp_group_show_status_setting( $setting, $group = false ) {
876 global $groups_template;
877
878 if ( empty( $group ) )
879 $group =& $groups_template->group;
880
881 if ( $setting == $group->status )
882 echo ' checked="checked"';
883}
884
885/**
886 * Get the 'checked' value, if needed, for a given invite_status on the group create/admin screens
887 *
888 * @package BuddyPress
889 * @subpackage Groups Template
890 * @since BuddyPress (1.5)
891 *
892 * @param str $setting The setting you want to check against ('members', 'mods', or 'admins')
893 * @param obj $group (optional) The group whose status you want to check
894 */
895function bp_group_show_invite_status_setting( $setting, $group = false ) {
896 $group_id = isset( $group->id ) ? $group->id : false;
897
898 $invite_status = bp_group_get_invite_status( $group_id );
899
900 if ( $setting == $invite_status )
901 echo ' checked="checked"';
902}
903
904/**
905 * Get the invite status of a group
906 *
907 * 'invite_status' became part of BuddyPress in BP 1.5. In order to provide backward compatibility,
908 * groups without a status set will default to 'members', ie all members in a group can send
909 * invitations. Filter 'bp_group_invite_status_fallback' to change this fallback behavior.
910 *
911 * This function can be used either in or out of the loop.
912 *
913 * @package BuddyPress
914 * @subpackage Groups Template
915 * @since BuddyPress (1.5)
916 *
917 * @param int $group_id (optional) The id of the group whose status you want to check
918 * @return mixed Returns false when no group can be found. Otherwise returns the group invite
919 * status, from among 'members', 'mods', and 'admins'
920 */
921function bp_group_get_invite_status( $group_id = false ) {
922 global $bp, $groups_template;
923
924 if ( !$group_id ) {
925 if ( isset( $bp->groups->current_group->id ) ) {
926 // Default to the current group first
927 $group_id = $bp->groups->current_group->id;
928 } else if ( isset( $groups_template->group->id ) ) {
929 // Then see if we're in the loop
930 $group_id = $groups_template->group->id;
931 } else {
932 return false;
933 }
934 }
935
936 $invite_status = groups_get_groupmeta( $group_id, 'invite_status' );
937
938 // Backward compatibility. When 'invite_status' is not set, fall back to a default value
939 if ( !$invite_status ) {
940 $invite_status = apply_filters( 'bp_group_invite_status_fallback', 'members' );
941 }
942
943 return apply_filters( 'bp_group_get_invite_status', $invite_status, $group_id );
944}
945
946/**
947 * Can the logged-in user send invitations in the specified group?
948 *
949 * @package BuddyPress
950 * @subpackage Groups Template
951 * @since BuddyPress (1.5)
952 *
953 * @param int $group_id (optional) The id of the group whose status you want to check
954 * @return bool $can_send_invites
955 */
956function bp_groups_user_can_send_invites( $group_id = false ) {
957 global $bp;
958
959 $can_send_invites = false;
960 $invite_status = false;
961
962 if ( is_user_logged_in() ) {
963 if ( bp_current_user_can( 'bp_moderate' ) ) {
964 // Super admins can always send invitations
965 $can_send_invites = true;
966
967 } else {
968 // If no $group_id is provided, default to the current group id
969 if ( !$group_id )
970 $group_id = isset( $bp->groups->current_group->id ) ? $bp->groups->current_group->id : 0;
971
972 // If no group has been found, bail
973 if ( !$group_id )
974 return false;
975
976 $invite_status = bp_group_get_invite_status( $group_id );
977 if ( !$invite_status )
978 return false;
979
980 switch ( $invite_status ) {
981 case 'admins' :
982 if ( groups_is_user_admin( bp_loggedin_user_id(), $group_id ) )
983 $can_send_invites = true;
984 break;
985
986 case 'mods' :
987 if ( groups_is_user_mod( bp_loggedin_user_id(), $group_id ) || groups_is_user_admin( bp_loggedin_user_id(), $group_id ) )
988 $can_send_invites = true;
989 break;
990
991 case 'members' :
992 if ( groups_is_user_member( bp_loggedin_user_id(), $group_id ) )
993 $can_send_invites = true;
994 break;
995 }
996 }
997 }
998
999 return apply_filters( 'bp_groups_user_can_send_invites', $can_send_invites, $group_id, $invite_status );
1000}
1001
1002/**
1003 * Since BuddyPress 1.0, this generated the group settings admin/member screen.
1004 * As of BuddyPress 1.5 (r4489), and because this function outputs HTML, it was moved into /bp-default/groups/single/admin.php.
1005 *
1006 * @deprecated 1.5
1007 * @deprecated No longer used.
1008 * @since 1.0
1009 * @todo Remove in 1.4
1010 */
1011function bp_group_admin_memberlist( $admin_list = false, $group = false ) {
1012 global $groups_template;
1013
1014 _deprecated_function( __FUNCTION__, '1.5', 'No longer used. See /bp-default/groups/single/admin.php' );
1015
1016 if ( empty( $group ) )
1017 $group =& $groups_template->group;
1018
1019
1020 if ( $admins = groups_get_group_admins( $group->id ) ) : ?>
1021
1022 <ul id="admins-list" class="item-list<?php if ( !empty( $admin_list ) ) : ?> single-line<?php endif; ?>">
1023
1024 <?php foreach ( (array) $admins as $admin ) { ?>
1025
1026 <?php if ( !empty( $admin_list ) ) : ?>
1027
1028 <li>
1029
1030 <?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), bp_core_get_user_displayname( $admin->user_id ) ) ) ) ?>
1031
1032 <h5>
1033
1034 <?php echo bp_core_get_userlink( $admin->user_id ); ?>
1035
1036 <span class="small">
1037 <a class="button confirm admin-demote-to-member" href="<?php bp_group_member_demote_link($admin->user_id) ?>"><?php _e( 'Demote to Member', 'buddypress' ) ?></a>
1038 </span>
1039 </h5>
1040 </li>
1041
1042 <?php else : ?>
1043
1044 <li>
1045
1046 <?php echo bp_core_fetch_avatar( array( 'item_id' => $admin->user_id, 'type' => 'thumb', 'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), bp_core_get_user_displayname( $admin->user_id ) ) ) ) ?>
1047
1048 <h5><?php echo bp_core_get_userlink( $admin->user_id ) ?></h5>
1049 <span class="activity">
1050 <?php echo bp_core_get_last_activity( strtotime( $admin->date_modified ), __( 'joined %s', 'buddypress') ); ?>
1051 </span>
1052
1053 <?php if ( bp_is_active( 'friends' ) ) : ?>
1054
1055 <div class="action">
1056
1057 <?php bp_add_friend_button( $admin->user_id ); ?>
1058
1059 </div>
1060
1061 <?php endif; ?>
1062
1063 </li>
1064
1065 <?php endif;
1066 } ?>
1067
1068 </ul>
1069
1070 <?php else : ?>
1071
1072 <div id="message" class="info">
1073 <p><?php _e( 'This group has no administrators', 'buddypress' ); ?></p>
1074 </div>
1075
1076 <?php endif;
1077}
1078
1079function bp_group_mod_memberlist( $admin_list = false, $group = false ) {
1080 global $groups_template;
1081
1082 if ( empty( $group ) )
1083 $group =& $groups_template->group;
1084
1085 if ( $group_mods = groups_get_group_mods( $group->id ) ) { ?>
1086
1087 <ul id="mods-list" class="item-list<?php if ( $admin_list ) { ?> single-line<?php } ?>">
1088
1089 <?php foreach ( (array) $group_mods as $mod ) { ?>
1090
1091 <?php if ( !empty( $admin_list ) ) { ?>
1092
1093 <li>
1094
1095 <?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'type' => 'thumb', 'width' => 30, 'height' => 30, 'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), bp_core_get_user_displayname( $mod->user_id ) ) ) ) ?>
1096
1097 <h5>
1098 <?php echo bp_core_get_userlink( $mod->user_id ); ?>
1099
1100 <span class="small">
1101 <a href="<?php bp_group_member_promote_admin_link( array( 'user_id' => $mod->user_id ) ) ?>" class="button confirm mod-promote-to-admin" title="<?php _e( 'Promote to Admin', 'buddypress' ); ?>"><?php _e( 'Promote to Admin', 'buddypress' ); ?></a>
1102 <a class="button confirm mod-demote-to-member" href="<?php bp_group_member_demote_link($mod->user_id) ?>"><?php _e( 'Demote to Member', 'buddypress' ) ?></a>
1103 </span>
1104 </h5>
1105 </li>
1106
1107 <?php } else { ?>
1108
1109 <li>
1110
1111 <?php echo bp_core_fetch_avatar( array( 'item_id' => $mod->user_id, 'type' => 'thumb', 'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), bp_core_get_user_displayname( $mod->user_id ) ) ) ) ?>
1112
1113 <h5><?php echo bp_core_get_userlink( $mod->user_id ) ?></h5>
1114
1115 <span class="activity"><?php echo bp_core_get_last_activity( strtotime( $mod->date_modified ), __( 'joined %s', 'buddypress') ); ?></span>
1116
1117 <?php if ( bp_is_active( 'friends' ) ) : ?>
1118
1119 <div class="action">
1120 <?php bp_add_friend_button( $mod->user_id ) ?>
1121 </div>
1122
1123 <?php endif; ?>
1124
1125 </li>
1126
1127 <?php } ?>
1128 <?php } ?>
1129
1130 </ul>
1131
1132 <?php } else { ?>
1133
1134 <div id="message" class="info">
1135 <p><?php _e( 'This group has no moderators', 'buddypress' ); ?></p>
1136 </div>
1137
1138 <?php }
1139}
1140
1141function bp_group_has_moderators( $group = false ) {
1142 global $groups_template;
1143
1144 if ( empty( $group ) )
1145 $group =& $groups_template->group;
1146
1147 return apply_filters( 'bp_group_has_moderators', groups_get_group_mods( $group->id ) );
1148}
1149
1150function bp_group_member_promote_mod_link( $args = '' ) {
1151 echo bp_get_group_member_promote_mod_link( $args );
1152}
1153 function bp_get_group_member_promote_mod_link( $args = '' ) {
1154 global $members_template, $groups_template;
1155
1156 $defaults = array(
1157 'user_id' => $members_template->member->user_id,
1158 'group' => &$groups_template->group
1159 );
1160
1161 $r = wp_parse_args( $args, $defaults );
1162 extract( $r, EXTR_SKIP );
1163
1164 return apply_filters( 'bp_get_group_member_promote_mod_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/promote/mod/' . $user_id, 'groups_promote_member' ) );
1165 }
1166
1167function bp_group_member_promote_admin_link( $args = '' ) {
1168 echo bp_get_group_member_promote_admin_link( $args );
1169}
1170 function bp_get_group_member_promote_admin_link( $args = '' ) {
1171 global $members_template, $groups_template;
1172
1173 $defaults = array(
1174 'user_id' => !empty( $members_template->member->user_id ) ? $members_template->member->user_id : false,
1175 'group' => &$groups_template->group
1176 );
1177
1178 $r = wp_parse_args( $args, $defaults );
1179 extract( $r, EXTR_SKIP );
1180
1181 return apply_filters( 'bp_get_group_member_promote_admin_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/promote/admin/' . $user_id, 'groups_promote_member' ) );
1182 }
1183
1184function bp_group_member_demote_link( $user_id = 0 ) {
1185 global $members_template;
1186
1187 if ( !$user_id )
1188 $user_id = $members_template->member->user_id;
1189
1190 echo bp_get_group_member_demote_link( $user_id );
1191}
1192 function bp_get_group_member_demote_link( $user_id = 0, $group = false ) {
1193 global $members_template, $groups_template;
1194
1195 if ( empty( $group ) )
1196 $group =& $groups_template->group;
1197
1198 if ( !$user_id )
1199 $user_id = $members_template->member->user_id;
1200
1201 return apply_filters( 'bp_get_group_member_demote_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/demote/' . $user_id, 'groups_demote_member' ) );
1202 }
1203
1204function bp_group_member_ban_link( $user_id = 0 ) {
1205 global $members_template;
1206
1207 if ( !$user_id )
1208 $user_id = $members_template->member->user_id;
1209
1210 echo bp_get_group_member_ban_link( $user_id );
1211}
1212 function bp_get_group_member_ban_link( $user_id = 0, $group = false ) {
1213 global $groups_template;
1214
1215 if ( empty( $group ) )
1216 $group =& $groups_template->group;
1217
1218 return apply_filters( 'bp_get_group_member_ban_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/ban/' . $user_id, 'groups_ban_member' ) );
1219 }
1220
1221function bp_group_member_unban_link( $user_id = 0 ) {
1222 global $members_template;
1223
1224 if ( !$user_id )
1225 $user_id = $members_template->member->user_id;
1226
1227 echo bp_get_group_member_unban_link( $user_id );
1228}
1229 function bp_get_group_member_unban_link( $user_id = 0, $group = false ) {
1230 global $members_template, $groups_template;
1231
1232 if ( !$user_id )
1233 $user_id = $members_template->member->user_id;
1234
1235 if ( empty( $group ) )
1236 $group =& $groups_template->group;
1237
1238 return apply_filters( 'bp_get_group_member_unban_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/unban/' . $user_id, 'groups_unban_member' ) );
1239 }
1240
1241
1242function bp_group_member_remove_link( $user_id = 0 ) {
1243 global $members_template;
1244
1245 if ( !$user_id )
1246 $user_id = $members_template->member->user_id;
1247
1248 echo bp_get_group_member_remove_link( $user_id );
1249}
1250 function bp_get_group_member_remove_link( $user_id = 0, $group = false ) {
1251 global $groups_template;
1252
1253 if ( empty( $group ) )
1254 $group =& $groups_template->group;
1255
1256 return apply_filters( 'bp_get_group_member_remove_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'admin/manage-members/remove/' . $user_id, 'groups_remove_member' ) );
1257 }
1258
1259function bp_group_admin_tabs( $group = false ) {
1260 global $bp, $groups_template;
1261
1262 if ( empty( $group ) )
1263 $group = ( $groups_template->group ) ? $groups_template->group : $bp->groups->current_group;
1264
1265 $current_tab = bp_get_group_current_admin_tab();
1266
1267 if ( bp_is_item_admin() || bp_is_item_mod() ) : ?>
1268
1269 <li<?php if ( 'edit-details' == $current_tab || empty( $current_tab ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/edit-details' ) ?>"><?php _e( 'Details', 'buddypress' ); ?></a></li>
1270
1271 <?php endif; ?>
1272
1273 <?php if ( ! bp_is_item_admin() )
1274 return false; ?>
1275
1276 <li<?php if ( 'group-settings' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/group-settings' ) ?>"><?php _e( 'Settings', 'buddypress' ); ?></a></li>
1277
1278 <?php if ( !(int)bp_get_option( 'bp-disable-avatar-uploads' ) ) : ?>
1279
1280 <li<?php if ( 'group-avatar' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/group-avatar' ) ?>"><?php _e( 'Avatar', 'buddypress' ); ?></a></li>
1281
1282 <?php endif; ?>
1283
1284 <li<?php if ( 'manage-members' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/manage-members' ) ?>"><?php _e( 'Members', 'buddypress' ); ?></a></li>
1285
1286 <?php if ( $groups_template->group->status == 'private' ) : ?>
1287
1288 <li<?php if ( 'membership-requests' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/membership-requests' ) ?>"><?php _e( 'Requests', 'buddypress' ); ?></a></li>
1289
1290 <?php endif; ?>
1291
1292 <?php do_action( 'groups_admin_tabs', $current_tab, $group->slug ) ?>
1293
1294 <li<?php if ( 'delete-group' == $current_tab ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_get_group_permalink( $group ) . 'admin/delete-group' ) ?>"><?php _e( 'Delete', 'buddypress' ); ?></a></li>
1295
1296<?php
1297}
1298
1299function bp_group_total_for_member() {
1300 echo bp_get_group_total_for_member();
1301}
1302 function bp_get_group_total_for_member() {
1303 return apply_filters( 'bp_get_group_total_for_member', BP_Groups_Member::total_group_count() );
1304 }
1305
1306function bp_group_form_action( $page ) {
1307 echo bp_get_group_form_action( $page );
1308}
1309 function bp_get_group_form_action( $page, $group = false ) {
1310 global $groups_template;
1311
1312 if ( empty( $group ) )
1313 $group =& $groups_template->group;
1314
1315 return apply_filters( 'bp_group_form_action', bp_get_group_permalink( $group ) . $page );
1316 }
1317
1318function bp_group_admin_form_action( $page = false ) {
1319 echo bp_get_group_admin_form_action( $page );
1320}
1321 function bp_get_group_admin_form_action( $page = false, $group = false ) {
1322 global $groups_template;
1323
1324 if ( empty( $group ) )
1325 $group =& $groups_template->group;
1326
1327 if ( empty( $page ) )
1328 $page = bp_action_variable( 0 );
1329
1330 return apply_filters( 'bp_group_admin_form_action', bp_get_group_permalink( $group ) . 'admin/' . $page );
1331 }
1332
1333function bp_group_has_requested_membership( $group = false ) {
1334 global $groups_template;
1335
1336 if ( empty( $group ) )
1337 $group =& $groups_template->group;
1338
1339 if ( groups_check_for_membership_request( bp_loggedin_user_id(), $group->id ) )
1340 return true;
1341
1342 return false;
1343}
1344
1345/**
1346 * bp_group_is_member()
1347 *
1348 * Checks if current user is member of a group.
1349 *
1350 * @uses bp_current_user_can() Check if current user is super admin
1351 * @uses apply_filters Creates bp_group_is_member filter and passes $is_member
1352 * @usedby groups/activity.php, groups/single/forum/edit.php, groups/single/forum/topic.php to determine template part visibility
1353 * @global object $groups_template Current Group (usually in template loop)
1354 * @param object $group Group to check is_member
1355 * @return bool If user is member of group or not
1356 */
1357function bp_group_is_member( $group = false ) {
1358 global $groups_template;
1359
1360 // Site admins always have access
1361 if ( bp_current_user_can( 'bp_moderate' ) )
1362 return true;
1363
1364 if ( empty( $group ) )
1365 $group =& $groups_template->group;
1366
1367 return apply_filters( 'bp_group_is_member', !empty( $group->is_member ) );
1368}
1369
1370/**
1371 * Checks if a user is banned from a group.
1372 *
1373 * If this function is invoked inside the groups template loop (e.g. the group directory), then
1374 * check $groups_template->group->is_banned instead of making another SQL query.
1375 * However, if used in a single group's pages, we must use groups_is_user_banned().
1376 *
1377 * @global BP_Groups_Template $groups_template Group template loop object
1378 * @param object $group Group to check if user is banned from the group
1379 * @param int $user_id
1380 * @return bool If user is banned from the group or not
1381 * @since BuddyPress (1.5)
1382 */
1383function bp_group_is_user_banned( $group = false, $user_id = 0 ) {
1384 global $groups_template;
1385
1386 // Site admins always have access
1387 if ( bp_current_user_can( 'bp_moderate' ) )
1388 return false;
1389
1390 if ( empty( $group ) ) {
1391 $group =& $groups_template->group;
1392
1393 if ( !$user_id && isset( $group->is_banned ) )
1394 return apply_filters( 'bp_group_is_user_banned', $group->is_banned );
1395 }
1396
1397 if ( !$user_id )
1398 $user_id = bp_loggedin_user_id();
1399
1400 return apply_filters( 'bp_group_is_user_banned', groups_is_user_banned( $user_id, $group->id ) );
1401}
1402
1403function bp_group_accept_invite_link() {
1404 echo bp_get_group_accept_invite_link();
1405}
1406 function bp_get_group_accept_invite_link( $group = false ) {
1407 global $groups_template, $bp;
1408
1409 if ( empty( $group ) )
1410 $group =& $groups_template->group;
1411
1412 return apply_filters( 'bp_get_group_accept_invite_link', wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/invites/accept/' . $group->id ), 'groups_accept_invite' ) );
1413 }
1414
1415function bp_group_reject_invite_link() {
1416 echo bp_get_group_reject_invite_link();
1417}
1418 function bp_get_group_reject_invite_link( $group = false ) {
1419 global $groups_template, $bp;
1420
1421 if ( empty( $group ) )
1422 $group =& $groups_template->group;
1423
1424 return apply_filters( 'bp_get_group_reject_invite_link', wp_nonce_url( trailingslashit( bp_loggedin_user_domain() . bp_get_groups_slug() . '/invites/reject/' . $group->id ), 'groups_reject_invite' ) );
1425 }
1426
1427function bp_group_leave_confirm_link() {
1428 echo bp_get_group_leave_confirm_link();
1429}
1430 function bp_get_group_leave_confirm_link( $group = false ) {
1431 global $groups_template;
1432
1433 if ( empty( $group ) )
1434 $group =& $groups_template->group;
1435
1436 return apply_filters( 'bp_group_leave_confirm_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group/yes', 'groups_leave_group' ) );
1437 }
1438
1439function bp_group_leave_reject_link() {
1440 echo bp_get_group_leave_reject_link();
1441}
1442 function bp_get_group_leave_reject_link( $group = false ) {
1443 global $groups_template;
1444
1445 if ( empty( $group ) )
1446 $group =& $groups_template->group;
1447
1448 return apply_filters( 'bp_get_group_leave_reject_link', bp_get_group_permalink( $group ) );
1449 }
1450
1451function bp_group_send_invite_form_action() {
1452 echo bp_get_group_send_invite_form_action();
1453}
1454 function bp_get_group_send_invite_form_action( $group = false ) {
1455 global $groups_template;
1456
1457 if ( empty( $group ) )
1458 $group =& $groups_template->group;
1459
1460 return apply_filters( 'bp_group_send_invite_form_action', bp_get_group_permalink( $group ) . 'send-invites/send' );
1461 }
1462
1463function bp_has_friends_to_invite( $group = false ) {
1464 global $groups_template;
1465
1466 if ( !bp_is_active( 'friends' ) )
1467 return false;
1468
1469 if ( empty( $group ) )
1470 $group =& $groups_template->group;
1471
1472 if ( !friends_check_user_has_friends( bp_loggedin_user_id() ) || !friends_count_invitable_friends( bp_loggedin_user_id(), $group->id ) )
1473 return false;
1474
1475 return true;
1476}
1477
1478function bp_group_new_topic_button( $group = false ) {
1479 echo bp_get_group_new_topic_button( $group );
1480}
1481 function bp_get_group_new_topic_button( $group = false ) {
1482 global $groups_template;
1483
1484 if ( empty( $group ) )
1485 $group =& $groups_template->group;
1486
1487 if ( !is_user_logged_in() || bp_group_is_user_banned() || !bp_is_group_forum() || bp_is_group_forum_topic() )
1488 return false;
1489
1490 $button = bp_button( array (
1491 'id' => 'new_topic',
1492 'component' => 'groups',
1493 'must_be_logged_in' => true,
1494 'block_self' => true,
1495 'wrapper_class' => 'group-button',
1496 'link_href' => '#post-new',
1497 'link_class' => 'group-button show-hide-new',
1498 'link_id' => 'new-topic-button',
1499 'link_text' => __( 'New Topic', 'buddypress' ),
1500 'link_title' => __( 'New Topic', 'buddypress' ),
1501 ) );
1502
1503 // Filter and return the HTML button
1504 return bp_get_button( apply_filters( 'bp_get_group_new_topic_button', $button ) );
1505 }
1506
1507function bp_group_join_button( $group = false ) {
1508 echo bp_get_group_join_button( $group );
1509}
1510 function bp_get_group_join_button( $group = false ) {
1511 global $groups_template;
1512
1513 if ( empty( $group ) )
1514 $group =& $groups_template->group;
1515
1516 if ( !is_user_logged_in() || bp_group_is_user_banned( $group ) )
1517 return false;
1518
1519 // Group creation was not completed or status is unknown
1520 if ( !$group->status )
1521 return false;
1522
1523 // Already a member
1524 if ( $group->is_member ) {
1525
1526 // Stop sole admins from abandoning their group
1527 $group_admins = groups_get_group_admins( $group->id );
1528 if ( 1 == count( $group_admins ) && $group_admins[0]->user_id == bp_loggedin_user_id() )
1529 return false;
1530
1531 $button = array(
1532 'id' => 'leave_group',
1533 'component' => 'groups',
1534 'must_be_logged_in' => true,
1535 'block_self' => false,
1536 'wrapper_class' => 'group-button ' . $group->status,
1537 'wrapper_id' => 'groupbutton-' . $group->id,
1538 'link_href' => wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ),
1539 'link_text' => __( 'Leave Group', 'buddypress' ),
1540 'link_title' => __( 'Leave Group', 'buddypress' ),
1541 'link_class' => 'group-button leave-group',
1542 );
1543
1544 // Not a member
1545 } else {
1546
1547 // Show different buttons based on group status
1548 switch ( $group->status ) {
1549 case 'hidden' :
1550 return false;
1551 break;
1552
1553 case 'public':
1554 $button = array(
1555 'id' => 'join_group',
1556 'component' => 'groups',
1557 'must_be_logged_in' => true,
1558 'block_self' => false,
1559 'wrapper_class' => 'group-button ' . $group->status,
1560 'wrapper_id' => 'groupbutton-' . $group->id,
1561 'link_href' => wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ),
1562 'link_text' => __( 'Join Group', 'buddypress' ),
1563 'link_title' => __( 'Join Group', 'buddypress' ),
1564 'link_class' => 'group-button join-group',
1565 );
1566 break;
1567
1568 case 'private' :
1569
1570 // Member has not requested membership yet
1571 if ( !bp_group_has_requested_membership( $group ) ) {
1572 $button = array(
1573 'id' => 'request_membership',
1574 'component' => 'groups',
1575 'must_be_logged_in' => true,
1576 'block_self' => false,
1577 'wrapper_class' => 'group-button ' . $group->status,
1578 'wrapper_id' => 'groupbutton-' . $group->id,
1579 'link_href' => wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ),
1580 'link_text' => __( 'Request Membership', 'buddypress' ),
1581 'link_title' => __( 'Request Membership', 'buddypress' ),
1582 'link_class' => 'group-button request-membership',
1583 );
1584
1585 // Member has requested membership already
1586 } else {
1587 $button = array(
1588 'id' => 'membership_requested',
1589 'component' => 'groups',
1590 'must_be_logged_in' => true,
1591 'block_self' => false,
1592 'wrapper_class' => 'group-button pending ' . $group->status,
1593 'wrapper_id' => 'groupbutton-' . $group->id,
1594 'link_href' => bp_get_group_permalink( $group ),
1595 'link_text' => __( 'Request Sent', 'buddypress' ),
1596 'link_title' => __( 'Request Sent', 'buddypress' ),
1597 'link_class' => 'group-button pending membership-requested',
1598 );
1599 }
1600
1601 break;
1602 }
1603 }
1604
1605 // Filter and return the HTML button
1606 return bp_get_button( apply_filters( 'bp_get_group_join_button', $button ) );
1607 }
1608
1609/**
1610 * Prints a message if the group is not visible to the current user (it is a
1611 * hidden or private group, and the user does not have access).
1612 *
1613 * @global BP_Groups_Template $groups_template Groups template object
1614 * @param object $group Group to get status message for. Optional; defaults to current group.
1615 * @since 1.0
1616 */
1617function bp_group_status_message( $group = null ) {
1618 global $groups_template;
1619
1620 if ( ! $group )
1621 $group =& $groups_template->group;
1622
1623 if ( 'private' == $group->status ) {
1624 if ( ! bp_group_has_requested_membership() ) {
1625 if ( is_user_logged_in() )
1626 $message = __( 'This is a private group and you must request group membership in order to join.', 'buddypress' );
1627 else
1628 $message = __( 'This is a private group. To join you must be a registered site member and request group membership.', 'buddypress' );
1629
1630 } else {
1631 $message = __( 'This is a private group. Your membership request is awaiting approval from the group administrator.', 'buddypress' );
1632 }
1633
1634 } else {
1635 $message = __( 'This is a hidden group and only invited members can join.', 'buddypress' );
1636 }
1637
1638 echo apply_filters( 'bp_group_status_message', $message, $group );
1639}
1640
1641function bp_group_hidden_fields() {
1642 if ( isset( $_REQUEST['s'] ) ) {
1643 echo '<input type="hidden" id="search_terms" value="' . esc_attr( $_REQUEST['s'] ) . '" name="search_terms" />';
1644 }
1645
1646 if ( isset( $_REQUEST['letter'] ) ) {
1647 echo '<input type="hidden" id="selected_letter" value="' . esc_attr( $_REQUEST['letter'] ) . '" name="selected_letter" />';
1648 }
1649
1650 if ( isset( $_REQUEST['groups_search'] ) ) {
1651 echo '<input type="hidden" id="search_terms" value="' . esc_attr( $_REQUEST['groups_search'] ) . '" name="search_terms" />';
1652 }
1653}
1654
1655function bp_total_group_count() {
1656 echo bp_get_total_group_count();
1657}
1658 function bp_get_total_group_count() {
1659 return apply_filters( 'bp_get_total_group_count', groups_get_total_group_count() );
1660 }
1661
1662function bp_total_group_count_for_user( $user_id = 0 ) {
1663 echo bp_get_total_group_count_for_user( $user_id );
1664}
1665 function bp_get_total_group_count_for_user( $user_id = 0 ) {
1666 return apply_filters( 'bp_get_total_group_count_for_user', groups_total_groups_for_user( $user_id ), $user_id );
1667 }
1668
1669
1670/***************************************************************************
1671 * Group Members Template Tags
1672 **/
1673
1674class BP_Groups_Group_Members_Template {
1675 var $current_member = -1;
1676 var $member_count;
1677 var $members;
1678 var $member;
1679
1680 var $in_the_loop;
1681
1682 var $pag_page;
1683 var $pag_num;
1684 var $pag_links;
1685 var $total_group_count;
1686
1687 function __construct( $group_id, $per_page, $max, $exclude_admins_mods, $exclude_banned, $exclude ) {
1688
1689 $this->pag_page = isset( $_REQUEST['mlpage'] ) ? intval( $_REQUEST['mlpage'] ) : 1;
1690 $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
1691 $this->members = BP_Groups_Member::get_all_for_group( $group_id, $this->pag_num, $this->pag_page, $exclude_admins_mods, $exclude_banned, $exclude );
1692
1693 if ( !$max || $max >= (int) $this->members['count'] )
1694 $this->total_member_count = (int) $this->members['count'];
1695 else
1696 $this->total_member_count = (int) $max;
1697
1698 $this->members = $this->members['members'];
1699
1700 if ( $max ) {
1701 if ( $max >= count($this->members) )
1702 $this->member_count = count($this->members);
1703 else
1704 $this->member_count = (int) $max;
1705 } else {
1706 $this->member_count = count($this->members);
1707 }
1708
1709 $this->pag_links = paginate_links( array(
1710 'base' => add_query_arg( 'mlpage', '%#%' ),
1711 'format' => '',
1712 'total' => !empty( $this->pag_num ) ? ceil( $this->total_member_count / $this->pag_num ) : $this->total_member_count,
1713 'current' => $this->pag_page,
1714 'prev_text' => '&larr;',
1715 'next_text' => '&rarr;',
1716 'mid_size' => 1
1717 ));
1718 }
1719
1720 function has_members() {
1721 if ( $this->member_count )
1722 return true;
1723
1724 return false;
1725 }
1726
1727 function next_member() {
1728 $this->current_member++;
1729 $this->member = $this->members[$this->current_member];
1730
1731 return $this->member;
1732 }
1733
1734 function rewind_members() {
1735 $this->current_member = -1;
1736 if ( $this->member_count > 0 ) {
1737 $this->member = $this->members[0];
1738 }
1739 }
1740
1741 function members() {
1742 if ( $this->current_member + 1 < $this->member_count ) {
1743 return true;
1744 } elseif ( $this->current_member + 1 == $this->member_count ) {
1745 do_action('loop_end');
1746 // Do some cleaning up after the loop
1747 $this->rewind_members();
1748 }
1749
1750 $this->in_the_loop = false;
1751 return false;
1752 }
1753
1754 function the_member() {
1755
1756 $this->in_the_loop = true;
1757 $this->member = $this->next_member();
1758
1759 if ( 0 == $this->current_member ) // loop has just started
1760 do_action('loop_start');
1761 }
1762}
1763
1764function bp_group_has_members( $args = '' ) {
1765 global $members_template;
1766
1767 $defaults = array(
1768 'group_id' => bp_get_current_group_id(),
1769 'per_page' => 20,
1770 'max' => false,
1771 'exclude' => false,
1772 'exclude_admins_mods' => 1,
1773 'exclude_banned' => 1
1774 );
1775
1776 $r = wp_parse_args( $args, $defaults );
1777 extract( $r, EXTR_SKIP );
1778
1779 $members_template = new BP_Groups_Group_Members_Template( $group_id, $per_page, $max, (int) $exclude_admins_mods, (int) $exclude_banned, $exclude );
1780 return apply_filters( 'bp_group_has_members', $members_template->has_members(), $members_template );
1781}
1782
1783function bp_group_members() {
1784 global $members_template;
1785
1786 return $members_template->members();
1787}
1788
1789function bp_group_the_member() {
1790 global $members_template;
1791
1792 return $members_template->the_member();
1793}
1794
1795function bp_group_member_avatar() {
1796 echo bp_get_group_member_avatar();
1797}
1798 function bp_get_group_member_avatar() {
1799 global $members_template;
1800
1801 return apply_filters( 'bp_get_group_member_avatar', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'full', 'email' => $members_template->member->user_email, 'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), $members_template->member->display_name ) ) ) );
1802 }
1803
1804function bp_group_member_avatar_thumb() {
1805 echo bp_get_group_member_avatar_thumb();
1806}
1807 function bp_get_group_member_avatar_thumb() {
1808 global $members_template;
1809
1810 return apply_filters( 'bp_get_group_member_avatar_thumb', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'thumb', 'email' => $members_template->member->user_email, 'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), $members_template->member->display_name ) ) ) );
1811 }
1812
1813function bp_group_member_avatar_mini( $width = 30, $height = 30 ) {
1814 echo bp_get_group_member_avatar_mini( $width, $height );
1815}
1816 function bp_get_group_member_avatar_mini( $width = 30, $height = 30 ) {
1817 global $members_template;
1818
1819 return apply_filters( 'bp_get_group_member_avatar_mini', bp_core_fetch_avatar( array( 'item_id' => $members_template->member->user_id, 'type' => 'thumb', 'width' => $width, 'height' => $height, 'email' => $members_template->member->user_email, 'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), $members_template->member->display_name ) ) ) );
1820 }
1821
1822function bp_group_member_name() {
1823 echo bp_get_group_member_name();
1824}
1825 function bp_get_group_member_name() {
1826 global $members_template;
1827
1828 return apply_filters( 'bp_get_group_member_name', $members_template->member->display_name );
1829 }
1830
1831function bp_group_member_url() {
1832 echo bp_get_group_member_url();
1833}
1834 function bp_get_group_member_url() {
1835 global $members_template;
1836
1837 return apply_filters( 'bp_get_group_member_url', bp_core_get_user_domain( $members_template->member->user_id, $members_template->member->user_nicename, $members_template->member->user_login ) );
1838 }
1839
1840function bp_group_member_link() {
1841 echo bp_get_group_member_link();
1842}
1843 function bp_get_group_member_link() {
1844 global $members_template;
1845
1846 return apply_filters( 'bp_get_group_member_link', '<a href="' . bp_core_get_user_domain( $members_template->member->user_id, $members_template->member->user_nicename, $members_template->member->user_login ) . '">' . $members_template->member->display_name . '</a>' );
1847 }
1848
1849function bp_group_member_domain() {
1850 echo bp_get_group_member_domain();
1851}
1852 function bp_get_group_member_domain() {
1853 global $members_template;
1854
1855 return apply_filters( 'bp_get_group_member_domain', bp_core_get_user_domain( $members_template->member->user_id, $members_template->member->user_nicename, $members_template->member->user_login ) );
1856 }
1857
1858function bp_group_member_is_friend() {
1859 echo bp_get_group_member_is_friend();
1860}
1861 function bp_get_group_member_is_friend() {
1862 global $members_template;
1863
1864 if ( !isset( $members_template->member->is_friend ) )
1865 $friend_status = 'not_friends';
1866 else
1867 $friend_status = ( 0 == $members_template->member->is_friend ) ? 'pending' : 'is_friend';
1868
1869 return apply_filters( 'bp_get_group_member_is_friend', $friend_status );
1870 }
1871
1872function bp_group_member_is_banned() {
1873 echo bp_get_group_member_is_banned();
1874}
1875 function bp_get_group_member_is_banned() {
1876 global $members_template;
1877
1878 return apply_filters( 'bp_get_group_member_is_banned', $members_template->member->is_banned );
1879 }
1880
1881function bp_group_member_css_class() {
1882 global $members_template;
1883
1884 if ( $members_template->member->is_banned )
1885 echo apply_filters( 'bp_group_member_css_class', 'banned-user' );
1886}
1887
1888function bp_group_member_joined_since() {
1889 echo bp_get_group_member_joined_since();
1890}
1891 function bp_get_group_member_joined_since() {
1892 global $members_template;
1893
1894 return apply_filters( 'bp_get_group_member_joined_since', bp_core_get_last_activity( $members_template->member->date_modified, __( 'joined %s', 'buddypress') ) );
1895 }
1896
1897function bp_group_member_id() {
1898 echo bp_get_group_member_id();
1899}
1900 function bp_get_group_member_id() {
1901 global $members_template;
1902
1903 return apply_filters( 'bp_get_group_member_id', $members_template->member->user_id );
1904 }
1905
1906function bp_group_member_needs_pagination() {
1907 global $members_template;
1908
1909 if ( $members_template->total_member_count > $members_template->pag_num )
1910 return true;
1911
1912 return false;
1913}
1914
1915function bp_group_pag_id() {
1916 echo bp_get_group_pag_id();
1917}
1918 function bp_get_group_pag_id() {
1919 return apply_filters( 'bp_get_group_pag_id', 'pag' );
1920 }
1921
1922function bp_group_member_pagination() {
1923 echo bp_get_group_member_pagination();
1924 wp_nonce_field( 'bp_groups_member_list', '_member_pag_nonce' );
1925}
1926 function bp_get_group_member_pagination() {
1927 global $members_template;
1928 return apply_filters( 'bp_get_group_member_pagination', $members_template->pag_links );
1929 }
1930
1931function bp_group_member_pagination_count() {
1932 echo bp_get_group_member_pagination_count();
1933}
1934 function bp_get_group_member_pagination_count() {
1935 global $members_template;
1936
1937 $start_num = intval( ( $members_template->pag_page - 1 ) * $members_template->pag_num ) + 1;
1938 $from_num = bp_core_number_format( $start_num );
1939 $to_num = bp_core_number_format( ( $start_num + ( $members_template->pag_num - 1 ) > $members_template->total_member_count ) ? $members_template->total_member_count : $start_num + ( $members_template->pag_num - 1 ) );
1940 $total = bp_core_number_format( $members_template->total_member_count );
1941
1942 return apply_filters( 'bp_get_group_member_pagination_count', sprintf( __( 'Viewing members %1$s to %2$s (of %3$s members)', 'buddypress' ), $from_num, $to_num, $total ) );
1943 }
1944
1945function bp_group_member_admin_pagination() {
1946 echo bp_get_group_member_admin_pagination();
1947 wp_nonce_field( 'bp_groups_member_admin_list', '_member_admin_pag_nonce' );
1948}
1949 function bp_get_group_member_admin_pagination() {
1950 global $members_template;
1951
1952 return $members_template->pag_links;
1953 }
1954
1955
1956/***************************************************************************
1957 * Group Creation Process Template Tags
1958 **/
1959
1960/**
1961 * Determine if the current logged in user can create groups.
1962 *
1963 * @package BuddyPress Groups
1964 * @since BuddyPress (1.5)
1965 *
1966 * @uses apply_filters() To call 'bp_user_can_create_groups'.
1967 * @uses bp_get_option() To retrieve value of 'bp_restrict_group_creation'. Defaults to 0.
1968 * @uses bp_current_user_can() To determine if current user if super admin.
1969 *
1970 * @return bool True if user can create groups. False otherwise.
1971 */
1972function bp_user_can_create_groups() {
1973 // Super admin can always create groups
1974 if ( bp_current_user_can( 'bp_moderate' ) )
1975 return true;
1976
1977 // Get group creation option, default to 0 (allowed)
1978 $restricted = (int) bp_get_option( 'bp_restrict_group_creation', 0 );
1979
1980 // Allow by default
1981 $can_create = true;
1982
1983 // Are regular users restricted?
1984 if ( $restricted )
1985 $can_create = false;
1986
1987 return apply_filters( 'bp_user_can_create_groups', $can_create, $restricted );
1988}
1989
1990function bp_group_creation_tabs() {
1991 global $bp;
1992
1993 if ( !is_array( $bp->groups->group_creation_steps ) )
1994 return false;
1995
1996 if ( !bp_get_groups_current_create_step() )
1997 $bp->groups->current_create_step = array_shift( array_keys( $bp->groups->group_creation_steps ) );
1998
1999 $counter = 1;
2000
2001 foreach ( (array) $bp->groups->group_creation_steps as $slug => $step ) {
2002 $is_enabled = bp_are_previous_group_creation_steps_complete( $slug ); ?>
2003
2004 <li<?php if ( bp_get_groups_current_create_step() == $slug ) : ?> class="current"<?php endif; ?>><?php if ( $is_enabled ) : ?><a href="<?php echo bp_get_root_domain() . '/' . bp_get_groups_root_slug() ?>/create/step/<?php echo $slug ?>/"><?php else: ?><span><?php endif; ?><?php echo $counter ?>. <?php echo $step['name'] ?><?php if ( $is_enabled ) : ?></a><?php else: ?></span><?php endif ?></li><?php
2005 $counter++;
2006 }
2007
2008 unset( $is_enabled );
2009
2010 do_action( 'groups_creation_tabs' );
2011}
2012
2013function bp_group_creation_stage_title() {
2014 global $bp;
2015
2016 echo apply_filters( 'bp_group_creation_stage_title', '<span>&mdash; ' . $bp->groups->group_creation_steps[bp_get_groups_current_create_step()]['name'] . '</span>' );
2017}
2018
2019function bp_group_creation_form_action() {
2020 echo bp_get_group_creation_form_action();
2021}
2022 function bp_get_group_creation_form_action() {
2023 global $bp;
2024
2025 if ( !bp_action_variable( 1 ) )
2026 $bp->action_variables[1] = array_shift( array_keys( $bp->groups->group_creation_steps ) );
2027
2028 return apply_filters( 'bp_get_group_creation_form_action', trailingslashit( bp_get_root_domain() . '/' . bp_get_groups_root_slug() . '/create/step/' . bp_action_variable( 1 ) ) );
2029 }
2030
2031function bp_is_group_creation_step( $step_slug ) {
2032 global $bp;
2033
2034 /* Make sure we are in the groups component */
2035 if ( !bp_is_groups_component() || !bp_is_current_action( 'create' ) )
2036 return false;
2037
2038 /* If this the first step, we can just accept and return true */
2039 if ( !bp_action_variable( 1 ) && array_shift( array_keys( $bp->groups->group_creation_steps ) ) == $step_slug )
2040 return true;
2041
2042 /* Before allowing a user to see a group creation step we must make sure previous steps are completed */
2043 if ( !bp_is_first_group_creation_step() ) {
2044 if ( !bp_are_previous_group_creation_steps_complete( $step_slug ) )
2045 return false;
2046 }
2047
2048 /* Check the current step against the step parameter */
2049 if ( bp_is_action_variable( $step_slug ) )
2050 return true;
2051
2052 return false;
2053}
2054
2055function bp_is_group_creation_step_complete( $step_slugs ) {
2056 global $bp;
2057
2058 if ( !isset( $bp->groups->completed_create_steps ) )
2059 return false;
2060
2061 if ( is_array( $step_slugs ) ) {
2062 $found = true;
2063
2064 foreach ( (array) $step_slugs as $step_slug ) {
2065 if ( !in_array( $step_slug, $bp->groups->completed_create_steps ) )
2066 $found = false;
2067 }
2068
2069 return $found;
2070 } else {
2071 return in_array( $step_slugs, $bp->groups->completed_create_steps );
2072 }
2073
2074 return true;
2075}
2076
2077function bp_are_previous_group_creation_steps_complete( $step_slug ) {
2078 global $bp;
2079
2080 /* If this is the first group creation step, return true */
2081 if ( array_shift( array_keys( $bp->groups->group_creation_steps ) ) == $step_slug )
2082 return true;
2083
2084 reset( $bp->groups->group_creation_steps );
2085 unset( $previous_steps );
2086
2087 /* Get previous steps */
2088 foreach ( (array) $bp->groups->group_creation_steps as $slug => $name ) {
2089 if ( $slug == $step_slug )
2090 break;
2091
2092 $previous_steps[] = $slug;
2093 }
2094
2095 return bp_is_group_creation_step_complete( $previous_steps );
2096}
2097
2098function bp_new_group_id() {
2099 echo bp_get_new_group_id();
2100}
2101 function bp_get_new_group_id() {
2102 global $bp;
2103
2104 if ( isset( $bp->groups->new_group_id ) )
2105 $new_group_id = $bp->groups->new_group_id;
2106 else
2107 $new_group_id = 0;
2108
2109 return apply_filters( 'bp_get_new_group_id', $new_group_id );
2110 }
2111
2112function bp_new_group_name() {
2113 echo bp_get_new_group_name();
2114}
2115 function bp_get_new_group_name() {
2116 global $bp;
2117
2118 if ( isset( $bp->groups->current_group->name ) )
2119 $name = $bp->groups->current_group->name;
2120 else
2121 $name = '';
2122
2123 return apply_filters( 'bp_get_new_group_name', $name );
2124 }
2125
2126function bp_new_group_description() {
2127 echo bp_get_new_group_description();
2128}
2129 function bp_get_new_group_description() {
2130 global $bp;
2131
2132 if ( isset( $bp->groups->current_group->description ) )
2133 $description = $bp->groups->current_group->description;
2134 else
2135 $description = '';
2136
2137 return apply_filters( 'bp_get_new_group_description', $description );
2138 }
2139
2140function bp_new_group_enable_forum() {
2141 echo bp_get_new_group_enable_forum();
2142}
2143 function bp_get_new_group_enable_forum() {
2144 global $bp;
2145 return (int) apply_filters( 'bp_get_new_group_enable_forum', $bp->groups->current_group->enable_forum );
2146 }
2147
2148function bp_new_group_status() {
2149 echo bp_get_new_group_status();
2150}
2151 function bp_get_new_group_status() {
2152 global $bp;
2153 return apply_filters( 'bp_get_new_group_status', $bp->groups->current_group->status );
2154 }
2155
2156function bp_new_group_avatar( $args = '' ) {
2157 echo bp_get_new_group_avatar( $args );
2158}
2159 function bp_get_new_group_avatar( $args = '' ) {
2160 global $bp;
2161
2162 $defaults = array(
2163 'type' => 'full',
2164 'width' => false,
2165 'height' => false,
2166 'class' => 'avatar',
2167 'id' => 'avatar-crop-preview',
2168 'alt' => __( 'Group avatar', 'buddypress' ),
2169 'no_grav' => false
2170 );
2171
2172 $r = wp_parse_args( $args, $defaults );
2173 extract( $r, EXTR_SKIP );
2174
2175 return apply_filters( 'bp_get_new_group_avatar', bp_core_fetch_avatar( array( 'item_id' => $bp->groups->current_group->id, 'object' => 'group', 'type' => $type, 'avatar_dir' => 'group-avatars', 'alt' => $alt, 'width' => $width, 'height' => $height, 'class' => $class, 'no_grav' => $no_grav ) ) );
2176 }
2177
2178function bp_group_creation_previous_link() {
2179 echo bp_get_group_creation_previous_link();
2180}
2181 function bp_get_group_creation_previous_link() {
2182 global $bp;
2183
2184 foreach ( (array) $bp->groups->group_creation_steps as $slug => $name ) {
2185 if ( bp_is_action_variable( $slug ) )
2186 break;
2187
2188 $previous_steps[] = $slug;
2189 }
2190
2191 return apply_filters( 'bp_get_group_creation_previous_link', trailingslashit( bp_get_root_domain() ) . bp_get_groups_root_slug() . '/create/step/' . array_pop( $previous_steps ) );
2192 }
2193
2194/**
2195 * Echoes the current group creation step
2196 *
2197 * @since 1.6
2198 */
2199function bp_groups_current_create_step() {
2200 echo bp_get_groups_current_create_step();
2201}
2202 /**
2203 * Returns the current group creation step. If none is found, returns an empty string
2204 *
2205 * @since 1.6
2206 *
2207 * @uses apply_filters() Filter bp_get_groups_current_create_step to modify
2208 * @return str $current_create_step
2209 */
2210 function bp_get_groups_current_create_step() {
2211 global $bp;
2212
2213 if ( !empty( $bp->groups->current_create_step ) ) {
2214 $current_create_step = $bp->groups->current_create_step;
2215 } else {
2216 $current_create_step = '';
2217 }
2218
2219 return apply_filters( 'bp_get_groups_current_create_step', $current_create_step );
2220 }
2221
2222function bp_is_last_group_creation_step() {
2223 global $bp;
2224
2225 $last_step = array_pop( array_keys( $bp->groups->group_creation_steps ) );
2226
2227 if ( $last_step == bp_get_groups_current_create_step() )
2228 return true;
2229
2230 return false;
2231}
2232
2233function bp_is_first_group_creation_step() {
2234 global $bp;
2235
2236 $first_step = array_shift( array_keys( $bp->groups->group_creation_steps ) );
2237
2238 if ( $first_step == bp_get_groups_current_create_step() )
2239 return true;
2240
2241 return false;
2242}
2243
2244function bp_new_group_invite_friend_list() {
2245 echo bp_get_new_group_invite_friend_list();
2246}
2247 function bp_get_new_group_invite_friend_list( $args = '' ) {
2248 global $bp;
2249
2250 if ( !bp_is_active( 'friends' ) )
2251 return false;
2252
2253 $defaults = array(
2254 'group_id' => false,
2255 'separator' => 'li'
2256 );
2257
2258 $r = wp_parse_args( $args, $defaults );
2259 extract( $r, EXTR_SKIP );
2260
2261 if ( empty( $group_id ) )
2262 $group_id = !empty( $bp->groups->new_group_id ) ? $bp->groups->new_group_id : $bp->groups->current_group->id;
2263
2264 if ( $friends = friends_get_friends_invite_list( bp_loggedin_user_id(), $group_id ) ) {
2265 $invites = groups_get_invites_for_group( bp_loggedin_user_id(), $group_id );
2266
2267 for ( $i = 0, $count = count( $friends ); $i < $count; ++$i ) {
2268 $checked = '';
2269
2270 if ( !empty( $invites ) ) {
2271 if ( in_array( $friends[$i]['id'], $invites ) )
2272 $checked = ' checked="checked"';
2273 }
2274
2275 $items[] = '<' . $separator . '><input' . $checked . ' type="checkbox" name="friends[]" id="f-' . $friends[$i]['id'] . '" value="' . esc_attr( $friends[$i]['id'] ) . '" /> ' . $friends[$i]['full_name'] . '</' . $separator . '>';
2276 }
2277 }
2278
2279 if ( !empty( $items ) )
2280 return implode( "\n", (array) $items );
2281
2282 return false;
2283 }
2284
2285function bp_directory_groups_search_form() {
2286
2287 $default_search_value = bp_get_search_default_text( 'groups' );
2288 $search_value = !empty( $_REQUEST['s'] ) ? stripslashes( $_REQUEST['s'] ) : $default_search_value; ?>
2289
2290 <form action="" method="get" id="search-groups-form">
2291 <label><input type="text" name="s" id="groups_search" placeholder="<?php echo esc_attr( $search_value ) ?>" /></label>
2292 <input type="submit" id="groups_search_submit" name="groups_search_submit" value="<?php _e( 'Search', 'buddypress' ) ?>" />
2293 </form>
2294
2295<?php
2296}
2297
2298/**
2299 * Displays group header tabs
2300 *
2301 * @package BuddyPress
2302 * @todo Deprecate?
2303 */
2304function bp_groups_header_tabs() {
2305 global $bp;?>
2306
2307 <li<?php if ( !bp_action_variable( 0 ) || bp_is_action_variable( 'recently-active', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_displayed_user_domain() . bp_get_groups_slug() . '/my-groups/recently-active' ) ?>"><?php _e( 'Recently Active', 'buddypress' ) ?></a></li>
2308 <li<?php if ( bp_is_action_variable( 'recently-joined', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_displayed_user_domain() . bp_get_groups_slug() . '/my-groups/recently-joined' ) ?>"><?php _e( 'Recently Joined', 'buddypress' ) ?></a></li>
2309 <li<?php if ( bp_is_action_variable( 'most-popular', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_displayed_user_domain() . bp_get_groups_slug() . '/my-groups/most-popular' ) ?>"><?php _e( 'Most Popular', 'buddypress' ) ?></a></li>
2310 <li<?php if ( bp_is_action_variable( 'admin-of', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_displayed_user_domain() . bp_get_groups_slug() . '/my-groups/admin-of' ) ?>"><?php _e( 'Administrator Of', 'buddypress' ) ?></a></li>
2311 <li<?php if ( bp_is_action_variable( 'mod-of', 0 ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_displayed_user_domain() . bp_get_groups_slug() . '/my-groups/mod-of' ) ?>"><?php _e( 'Moderator Of', 'buddypress' ) ?></a></li>
2312 <li<?php if ( bp_is_action_variable( 'alphabetically' ) ) : ?> class="current"<?php endif; ?>><a href="<?php echo trailingslashit( bp_displayed_user_domain() . bp_get_groups_slug() . '/my-groups/alphabetically' ) ?>"><?php _e( 'Alphabetically', 'buddypress' ) ?></a></li>
2313
2314<?php
2315 do_action( 'groups_header_tabs' );
2316}
2317
2318/**
2319 * Displays group filter titles
2320 *
2321 * @package BuddyPress
2322 * @todo Deprecate?
2323 */
2324function bp_groups_filter_title() {
2325 $current_filter = bp_action_variable( 0 );
2326
2327 switch ( $current_filter ) {
2328 case 'recently-active': default:
2329 _e( 'Recently Active', 'buddypress' );
2330 break;
2331 case 'recently-joined':
2332 _e( 'Recently Joined', 'buddypress' );
2333 break;
2334 case 'most-popular':
2335 _e( 'Most Popular', 'buddypress' );
2336 break;
2337 case 'admin-of':
2338 _e( 'Administrator Of', 'buddypress' );
2339 break;
2340 case 'mod-of':
2341 _e( 'Moderator Of', 'buddypress' );
2342 break;
2343 case 'alphabetically':
2344 _e( 'Alphabetically', 'buddypress' );
2345 break;
2346 }
2347 do_action( 'bp_groups_filter_title' );
2348}
2349
2350function bp_is_group_admin_screen( $slug ) {
2351 if ( !bp_is_groups_component() || !bp_is_current_action( 'admin' ) )
2352 return false;
2353
2354 if ( bp_is_action_variable( $slug ) )
2355 return true;
2356
2357 return false;
2358}
2359
2360/**
2361 * Echoes the current group admin tab slug
2362 *
2363 * @since 1.6
2364 */
2365function bp_group_current_admin_tab() {
2366 echo bp_get_group_current_admin_tab();
2367}
2368 /**
2369 * Returns the current group admin tab slug
2370 *
2371 * @since 1.6
2372 *
2373 * @uses apply_filters() Filter bp_get_current_group_admin_tab to modify return value
2374 * @return str $tab The current tab's slug
2375 */
2376 function bp_get_group_current_admin_tab() {
2377 if ( bp_is_groups_component() && bp_is_current_action( 'admin' ) ) {
2378 $tab = bp_action_variable( 0 );
2379 } else {
2380 $tab = '';
2381 }
2382
2383 return apply_filters( 'bp_get_current_group_admin_tab', $tab );
2384 }
2385
2386/************************************************************************************
2387 * Group Avatar Template Tags
2388 **/
2389
2390function bp_group_current_avatar() {
2391 global $bp;
2392
2393 if ( $bp->groups->current_group->avatar_full ) { ?>
2394
2395 <img src="<?php echo esc_attr( $bp->groups->current_group->avatar_full ) ?>" alt="<?php _e( 'Group Avatar', 'buddypress' ) ?>" class="avatar" />
2396
2397 <?php } else { ?>
2398
2399 <img src="<?php echo $bp->groups->image_base . '/none.gif' ?>" alt="<?php _e( 'No Group Avatar', 'buddypress' ) ?>" class="avatar" />
2400
2401 <?php }
2402}
2403
2404function bp_get_group_has_avatar() {
2405 global $bp;
2406
2407 if ( !empty( $_FILES ) || !bp_core_fetch_avatar( array( 'item_id' => $bp->groups->current_group->id, 'object' => 'group', 'no_grav' => true ) ) )
2408 return false;
2409
2410 return true;
2411}
2412
2413function bp_group_avatar_delete_link() {
2414 echo bp_get_group_avatar_delete_link();
2415}
2416 function bp_get_group_avatar_delete_link() {
2417 global $bp;
2418
2419 return apply_filters( 'bp_get_group_avatar_delete_link', wp_nonce_url( bp_get_group_permalink( $bp->groups->current_group ) . 'admin/group-avatar/delete', 'bp_group_avatar_delete' ) );
2420 }
2421
2422function bp_group_avatar_edit_form() {
2423 groups_avatar_upload();
2424}
2425
2426function bp_custom_group_boxes() {
2427 do_action( 'groups_custom_group_boxes' );
2428}
2429
2430function bp_custom_group_admin_tabs() {
2431 do_action( 'groups_custom_group_admin_tabs' );
2432}
2433
2434function bp_custom_group_fields_editable() {
2435 do_action( 'groups_custom_group_fields_editable' );
2436}
2437
2438function bp_custom_group_fields() {
2439 do_action( 'groups_custom_group_fields' );
2440}
2441
2442
2443/************************************************************************************
2444 * Membership Requests Template Tags
2445 **/
2446
2447class BP_Groups_Membership_Requests_Template {
2448 var $current_request = -1;
2449 var $request_count;
2450 var $requests;
2451 var $request;
2452
2453 var $in_the_loop;
2454
2455 var $pag_page;
2456 var $pag_num;
2457 var $pag_links;
2458 var $total_request_count;
2459
2460 function __construct( $group_id, $per_page, $max ) {
2461
2462 $this->pag_page = isset( $_REQUEST['mrpage'] ) ? intval( $_REQUEST['mrpage'] ) : 1;
2463 $this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
2464 $this->requests = BP_Groups_Group::get_membership_requests( $group_id, $this->pag_num, $this->pag_page );
2465
2466 if ( !$max || $max >= (int) $this->requests['total'] )
2467 $this->total_request_count = (int) $this->requests['total'];
2468 else
2469 $this->total_request_count = (int) $max;
2470
2471 $this->requests = $this->requests['requests'];
2472
2473 if ( $max ) {
2474 if ( $max >= count($this->requests) )
2475 $this->request_count = count($this->requests);
2476 else
2477 $this->request_count = (int) $max;
2478 } else {
2479 $this->request_count = count($this->requests);
2480 }
2481
2482 $this->pag_links = paginate_links( array(
2483 'base' => add_query_arg( 'mrpage', '%#%' ),
2484 'format' => '',
2485 'total' => ceil( $this->total_request_count / $this->pag_num ),
2486 'current' => $this->pag_page,
2487 'prev_text' => '&larr;',
2488 'next_text' => '&rarr;',
2489 'mid_size' => 1
2490 ) );
2491 }
2492
2493 function has_requests() {
2494 if ( $this->request_count )
2495 return true;
2496
2497 return false;
2498 }
2499
2500 function next_request() {
2501 $this->current_request++;
2502 $this->request = $this->requests[$this->current_request];
2503
2504 return $this->request;
2505 }
2506
2507 function rewind_requests() {
2508 $this->current_request = -1;
2509
2510 if ( $this->request_count > 0 )
2511 $this->request = $this->requests[0];
2512 }
2513
2514 function requests() {
2515 if ( $this->current_request + 1 < $this->request_count ) {
2516 return true;
2517 } elseif ( $this->current_request + 1 == $this->request_count ) {
2518 do_action('group_request_loop_end');
2519 // Do some cleaning up after the loop
2520 $this->rewind_requests();
2521 }
2522
2523 $this->in_the_loop = false;
2524 return false;
2525 }
2526
2527 function the_request() {
2528 $this->in_the_loop = true;
2529 $this->request = $this->next_request();
2530
2531 if ( 0 == $this->current_request ) // loop has just started
2532 do_action('group_request_loop_start');
2533 }
2534}
2535
2536function bp_group_has_membership_requests( $args = '' ) {
2537 global $requests_template, $groups_template;
2538
2539 $defaults = array(
2540 'group_id' => $groups_template->group->id,
2541 'per_page' => 10,
2542 'max' => false
2543 );
2544
2545 $r = wp_parse_args( $args, $defaults );
2546 extract( $r, EXTR_SKIP );
2547
2548 $requests_template = new BP_Groups_Membership_Requests_Template( $group_id, $per_page, $max );
2549 return apply_filters( 'bp_group_has_membership_requests', $requests_template->has_requests(), $requests_template );
2550}
2551
2552function bp_group_membership_requests() {
2553 global $requests_template;
2554
2555 return $requests_template->requests();
2556}
2557
2558function bp_group_the_membership_request() {
2559 global $requests_template;
2560
2561 return $requests_template->the_request();
2562}
2563
2564function bp_group_request_user_avatar_thumb() {
2565 global $requests_template;
2566
2567 echo apply_filters( 'bp_group_request_user_avatar_thumb', bp_core_fetch_avatar( array( 'item_id' => $requests_template->request->user_id, 'type' => 'thumb', 'alt' => sprintf( __( 'Profile picture of %s', 'buddypress' ), bp_core_get_user_displayname( $requests_template->request->user_id ) ) ) ) );
2568}
2569
2570function bp_group_request_reject_link() {
2571 echo bp_get_group_request_reject_link();
2572}
2573 function bp_get_group_request_reject_link() {
2574 global $requests_template, $groups_template;
2575
2576 return apply_filters( 'bp_get_group_request_reject_link', wp_nonce_url( bp_get_group_permalink( $groups_template->group ) . 'admin/membership-requests/reject/' . $requests_template->request->id, 'groups_reject_membership_request' ) );
2577 }
2578
2579function bp_group_request_accept_link() {
2580 echo bp_get_group_request_accept_link();
2581}
2582 function bp_get_group_request_accept_link() {
2583 global $requests_template, $groups_template;
2584
2585 return apply_filters( 'bp_get_group_request_accept_link', wp_nonce_url( bp_get_group_permalink( $groups_template->group ) . 'admin/membership-requests/accept/' . $requests_template->request->id, 'groups_accept_membership_request' ) );
2586 }
2587
2588function bp_group_request_user_link() {
2589 echo bp_get_group_request_user_link();
2590}
2591 function bp_get_group_request_user_link() {
2592 global $requests_template;
2593
2594 return apply_filters( 'bp_get_group_request_user_link', bp_core_get_userlink( $requests_template->request->user_id ) );
2595 }
2596
2597function bp_group_request_time_since_requested() {
2598 global $requests_template;
2599
2600 echo apply_filters( 'bp_group_request_time_since_requested', sprintf( __( 'requested %s', 'buddypress' ), bp_core_time_since( strtotime( $requests_template->request->date_modified ) ) ) );
2601}
2602
2603function bp_group_request_comment() {
2604 global $requests_template;
2605
2606 echo apply_filters( 'bp_group_request_comment', strip_tags( stripslashes( $requests_template->request->comments ) ) );
2607}
2608
2609/************************************************************************************
2610 * Invite Friends Template Tags
2611 **/
2612
2613class BP_Groups_Invite_Template {
2614 var $current_invite = -1;
2615 var $invite_count;
2616 var $invites;
2617 var $invite;
2618
2619 var $in_the_loop;
2620
2621 var $pag_page;
2622 var $pag_num;
2623 var $pag_links;
2624 var $total_invite_count;
2625
2626 function __construct( $user_id, $group_id ) {
2627 $this->invites = groups_get_invites_for_group( $user_id, $group_id );
2628 $this->invite_count = count( $this->invites );
2629 }
2630
2631 function has_invites() {
2632 if ( $this->invite_count )
2633 return true;
2634
2635 return false;
2636 }
2637
2638 function next_invite() {
2639 $this->current_invite++;
2640 $this->invite = $this->invites[$this->current_invite];
2641
2642 return $this->invite;
2643 }
2644
2645 function rewind_invites() {
2646 $this->current_invite = -1;
2647 if ( $this->invite_count > 0 )
2648 $this->invite = $this->invites[0];
2649 }
2650
2651 function invites() {
2652 if ( $this->current_invite + 1 < $this->invite_count ) {
2653 return true;
2654 } elseif ( $this->current_invite + 1 == $this->invite_count ) {
2655 do_action('loop_end');
2656 // Do some cleaning up after the loop
2657 $this->rewind_invites();
2658 }
2659
2660 $this->in_the_loop = false;
2661 return false;
2662 }
2663
2664 function the_invite() {
2665 global $group_id;
2666
2667 $this->in_the_loop = true;
2668 $user_id = $this->next_invite();
2669 $this->invite = new stdClass;
2670 $this->invite->user = new BP_Core_User( $user_id );
2671 $this->invite->group_id = $group_id; // Globaled in bp_group_has_invites()
2672
2673 if ( 0 == $this->current_invite ) // loop has just started
2674 do_action('loop_start');
2675 }
2676}
2677
2678function bp_group_has_invites( $args = '' ) {
2679 global $bp, $invites_template, $group_id;
2680
2681 $defaults = array(
2682 'group_id' => false,
2683 'user_id' => bp_loggedin_user_id()
2684 );
2685
2686 $r = wp_parse_args( $args, $defaults );
2687 extract( $r, EXTR_SKIP );
2688
2689 if ( !$group_id ) {
2690 // Backwards compatibility
2691 if ( !empty( $bp->groups->current_group ) )
2692 $group_id = $bp->groups->current_group->id;
2693
2694 if ( !empty( $bp->groups->new_group_id ) )
2695 $group_id = $bp->groups->new_group_id;
2696 }
2697
2698 if ( !$group_id )
2699 return false;
2700
2701 $invites_template = new BP_Groups_Invite_Template( $user_id, $group_id );
2702 return apply_filters( 'bp_group_has_invites', $invites_template->has_invites(), $invites_template );
2703}
2704
2705function bp_group_invites() {
2706 global $invites_template;
2707
2708 return $invites_template->invites();
2709}
2710
2711function bp_group_the_invite() {
2712 global $invites_template;
2713
2714 return $invites_template->the_invite();
2715}
2716
2717function bp_group_invite_item_id() {
2718 echo bp_get_group_invite_item_id();
2719}
2720 function bp_get_group_invite_item_id() {
2721 global $invites_template;
2722
2723 return apply_filters( 'bp_get_group_invite_item_id', 'uid-' . $invites_template->invite->user->id );
2724 }
2725
2726function bp_group_invite_user_avatar() {
2727 echo bp_get_group_invite_user_avatar();
2728}
2729 function bp_get_group_invite_user_avatar() {
2730 global $invites_template;
2731
2732 return apply_filters( 'bp_get_group_invite_user_avatar', $invites_template->invite->user->avatar_thumb );
2733 }
2734
2735function bp_group_invite_user_link() {
2736 echo bp_get_group_invite_user_link();
2737}
2738 function bp_get_group_invite_user_link() {
2739 global $invites_template;
2740
2741 return apply_filters( 'bp_get_group_invite_user_link', bp_core_get_userlink( $invites_template->invite->user->id ) );
2742 }
2743
2744function bp_group_invite_user_last_active() {
2745 echo bp_get_group_invite_user_last_active();
2746}
2747 function bp_get_group_invite_user_last_active() {
2748 global $invites_template;
2749
2750 return apply_filters( 'bp_get_group_invite_user_last_active', $invites_template->invite->user->last_active );
2751 }
2752
2753function bp_group_invite_user_remove_invite_url() {
2754 echo bp_get_group_invite_user_remove_invite_url();
2755}
2756 function bp_get_group_invite_user_remove_invite_url() {
2757 global $invites_template;
2758
2759 return wp_nonce_url( site_url( bp_get_groups_slug() . '/' . $invites_template->invite->group_id . '/invites/remove/' . $invites_template->invite->user->id ), 'groups_invite_uninvite_user' );
2760 }
2761
2762/***
2763 * Groups RSS Feed Template Tags
2764 */
2765
2766/**
2767 * Hook group activity feed to <head>
2768 *
2769 * @since BuddyPress (1.5)
2770 */
2771function bp_groups_activity_feed() {
2772 if ( !bp_is_active( 'groups' ) || !bp_is_active( 'activity' ) || !bp_is_group() )
2773 return; ?>
2774
2775 <link rel="alternate" type="application/rss+xml" title="<?php bloginfo( 'name' ) ?> | <?php bp_current_group_name() ?> | <?php _e( 'Group Activity RSS Feed', 'buddypress' ) ?>" href="<?php bp_group_activity_feed_link() ?>" />
2776
2777<?php
2778}
2779add_action( 'bp_head', 'bp_groups_activity_feed' );
2780
2781function bp_group_activity_feed_link() {
2782 echo bp_get_group_activity_feed_link();
2783}
2784 function bp_get_group_activity_feed_link() {
2785 global $bp;
2786
2787 return apply_filters( 'bp_get_group_activity_feed_link', bp_get_group_permalink( $bp->groups->current_group ) . 'feed/' );
2788 }
2789
2790/**
2791 * Echoes the output of bp_get_current_group_id()
2792 *
2793 * @package BuddyPress
2794 * @since BuddyPress (1.5)
2795 */
2796function bp_current_group_id() {
2797 echo bp_get_current_group_id();
2798}
2799 /**
2800 * Returns the ID of the current group
2801 *
2802 * @package BuddyPress
2803 * @since BuddyPress (1.5)
2804 * @uses apply_filters() Filter bp_get_current_group_id to modify this output
2805 *
2806 * @return int $current_group_id The id of the current group, if there is one
2807 */
2808 function bp_get_current_group_id() {
2809 $current_group = groups_get_current_group();
2810
2811 $current_group_id = isset( $current_group->id ) ? (int) $current_group->id : 0;
2812
2813 return apply_filters( 'bp_get_current_group_id', $current_group_id, $current_group );
2814 }
2815
2816/**
2817 * Echoes the output of bp_get_current_group_slug()
2818 *
2819 * @package BuddyPress
2820 * @since BuddyPress (1.5)
2821 */
2822function bp_current_group_slug() {
2823 echo bp_get_current_group_slug();
2824}
2825 /**
2826 * Returns the slug of the current group
2827 *
2828 * @package BuddyPress
2829 * @since BuddyPress (1.5)
2830 * @uses apply_filters() Filter bp_get_current_group_slug to modify this output
2831 *
2832 * @return str $current_group_slug The slug of the current group, if there is one
2833 */
2834 function bp_get_current_group_slug() {
2835 $current_group = groups_get_current_group();
2836
2837 $current_group_slug = isset( $current_group->slug ) ? $current_group->slug : '';
2838
2839 return apply_filters( 'bp_get_current_group_slug', $current_group_slug, $current_group );
2840 }
2841
2842/**
2843 * Echoes the output of bp_get_current_group_name()
2844 *
2845 * @package BuddyPress
2846 */
2847function bp_current_group_name() {
2848 echo bp_get_current_group_name();
2849}
2850 /**
2851 * Returns the name of the current group
2852 *
2853 * @package BuddyPress
2854 * @since BuddyPress (1.5)
2855 * @uses apply_filters() Filter bp_get_current_group_name to modify this output
2856 *
2857 * @return str The name of the current group, if there is one
2858 */
2859 function bp_get_current_group_name() {
2860 global $bp;
2861
2862 $name = apply_filters( 'bp_get_group_name', $bp->groups->current_group->name );
2863 return apply_filters( 'bp_get_current_group_name', $name );
2864 }
2865
2866function bp_groups_action_link( $action = '', $query_args = '', $nonce = false ) {
2867 echo bp_get_groups_action_link( $action, $query_args, $nonce );
2868}
2869 function bp_get_groups_action_link( $action = '', $query_args = '', $nonce = false ) {
2870 global $bp;
2871
2872 // Must be a group
2873 if ( empty( $bp->groups->current_group->id ) )
2874 return;
2875
2876 // Append $action to $url if provided
2877 if ( !empty( $action ) )
2878 $url = bp_get_group_permalink( groups_get_current_group() ) . $action;
2879 else
2880 $url = bp_get_group_permalink( groups_get_current_group() );
2881
2882 // Add a slash at the end of our user url
2883 $url = trailingslashit( $url );
2884
2885 // Add possible query arg
2886 if ( !empty( $query_args ) && is_array( $query_args ) )
2887 $url = add_query_arg( $query_args, $url );
2888
2889 // To nonce, or not to nonce...
2890 if ( true === $nonce )
2891 $url = wp_nonce_url( $url );
2892 elseif ( is_string( $nonce ) )
2893 $url = wp_nonce_url( $url, $nonce );
2894
2895 // Return the url, if there is one
2896 if ( !empty( $url ) )
2897 return $url;
2898 }
2899?>