pag_page = isset( $_REQUEST['grpage'] ) ? intval( $_REQUEST['grpage'] ) : $page;
$this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
switch ( $type ) {
case 'active': default:
$this->groups = groups_get_active( $this->pag_num, $this->pag_page, $user_id, $search_terms );
break;
case 'alphabetical': default:
$this->groups = groups_get_alphabetically( $this->pag_num, $this->pag_page, $user_id, $search_terms );
break;
case 'random':
$this->groups = groups_get_random_groups( $this->pag_num, $this->pag_page, $user_id, $search_terms );
break;
case 'newest':
$this->groups = groups_get_newest( $this->pag_num, $this->pag_page, $user_id, $search_terms );
break;
case 'popular':
$this->groups = groups_get_popular( $this->pag_num, $this->pag_page, $user_id, $search_terms );
break;
case 'most-forum-topics':
$this->groups = groups_get_by_most_forum_topics( $this->pag_num, $this->pag_page, $user_id, $search_terms );
break;
case 'most-forum-posts':
$this->groups = groups_get_by_most_forum_posts( $this->pag_num, $this->pag_page, $user_id, $search_terms );
break;
case 'admin-of':
if ( $user_id )
$this->groups = groups_get_user_is_admin_of( $user_id, $this->pag_num, $this->pag_page, $search_terms );
break;
case 'mod-of':
if ( $user_id )
$this->groups = groups_get_user_is_mod_of( $user_id, $this->pag_num, $this->pag_page, $filter );
break;
case 'invites':
$this->groups = groups_get_invites_for_user( $user_id, $this->pag_num, $this->pag_page );
break;
case 'single-group':
$group = new stdClass;
$group->group_id = BP_Groups_Group::get_id_from_slug($slug);
$this->groups = array( $group );
break;
}
if ( 'invites' == $type ) {
$this->total_group_count = (int)$this->groups['total'];
$this->group_count = (int)$this->groups['total'];
$this->groups = $this->groups['groups'];
} else if ( 'single-group' == $type ) {
$this->single_group = true;
$this->total_group_count = 1;
$this->group_count = 1;
} else {
if ( !$max || $max >= (int)$this->groups['total'] )
$this->total_group_count = (int)$this->groups['total'];
else
$this->total_group_count = (int)$max;
$this->groups = $this->groups['groups'];
if ( $max ) {
if ( $max >= count($this->groups) )
$this->group_count = count($this->groups);
else
$this->group_count = (int)$max;
} else {
$this->group_count = count($this->groups);
}
}
$this->pag_links = paginate_links( array(
'base' => add_query_arg( array( 'grpage' => '%#%', 'num' => $this->pag_num, 's' => $_REQUEST['s'], 'sortby' => $this->sort_by, 'order' => $this->order ) ),
'format' => '',
'total' => ceil($this->total_group_count / $this->pag_num),
'current' => $this->pag_page,
'prev_text' => '←',
'next_text' => '→',
'mid_size' => 1
));
}
function has_groups() {
if ( $this->group_count )
return true;
return false;
}
function next_group() {
$this->current_group++;
$this->group = $this->groups[$this->current_group];
return $this->group;
}
function rewind_groups() {
$this->current_group = -1;
if ( $this->group_count > 0 ) {
$this->group = $this->groups[0];
}
}
function groups() {
if ( $this->current_group + 1 < $this->group_count ) {
return true;
} elseif ( $this->current_group + 1 == $this->group_count ) {
do_action('loop_end');
// Do some cleaning up after the loop
$this->rewind_groups();
}
$this->in_the_loop = false;
return false;
}
function the_group() {
global $group;
$this->in_the_loop = true;
$this->group = $this->next_group();
if ( $this->single_group )
$this->group = new BP_Groups_Group( $this->group->group_id, true );
else {
if ( $this->group )
wp_cache_set( 'groups_group_nouserdata_' . $group->group_id, $this->group, 'bp' );
}
if ( 0 == $this->current_group ) // loop has just started
do_action('loop_start');
}
}
function bp_has_groups( $args = '' ) {
global $groups_template, $bp;
/***
* Set the defaults based on the current page. Any of these will be overridden
* if arguments are directly passed into the loop. Custom plugins should always
* pass their parameters directly to the loop.
*/
$type = 'active';
$user_id = false;
$search_terms = false;
$slug = false;
/* User filtering */
if ( !empty( $bp->displayed_user->id ) )
$user_id = $bp->displayed_user->id;
/* Type */
if ( 'my-groups' == $bp->current_action ) {
if ( 'recently-joined' == $order )
$type = 'recently-joined';
else if ( 'most-popular' == $order )
$type = 'popular';
else if ( 'admin-of' == $order ) {
$type = 'admin-of';
} else if ( 'mod-of' == $order ) {
$type = 'mod-of';
} else if ( 'alphabetically' == $order )
$type = 'alphabetical';
} else if ( 'invites' == $bp->current_action ) {
$type = 'invites';
} else if ( $bp->groups->current_group->slug ) {
$type = 'single-group';
$slug = $bp->groups->current_group->slug;
}
if ( isset( $_REQUEST['group-filter-box'] ) || isset( $_REQUEST['s'] ) )
$search_terms = ( isset( $_REQUEST['group-filter-box'] ) ) ? $_REQUEST['group-filter-box'] : $_REQUEST['s'];
$defaults = array(
'type' => $type,
'page' => 1,
'per_page' => 20,
'max' => false,
'user_id' => $user_id, // Pass a user ID to limit to groups this user has joined
'slug' => $slug, // Pass a group slug to only return that group
'search_terms' => $search_terms // Pass search terms to return only matching groups
);
$r = wp_parse_args( $args, $defaults );
extract( $r );
$groups_template = new BP_Groups_Template( $user_id, $type, $page, $per_page, $max, $slug, $search_terms );
return apply_filters( 'bp_has_groups', $groups_template->has_groups(), &$groups_template );
}
function bp_groups() {
global $groups_template;
return $groups_template->groups();
}
function bp_the_group() {
global $groups_template;
return $groups_template->the_group();
}
function bp_group_is_visible( $group = false ) {
global $bp, $groups_template;
if ( !$group )
$group =& $groups_template->group;
if ( 'public' == $group->status ) {
return true;
} else {
if ( groups_is_user_member( $bp->loggedin_user->id, $group->id ) ) {
return true;
}
}
return false;
}
function bp_group_id( $deprecated = true, $deprecated2 = false ) {
global $groups_template;
if ( !$deprecated )
return bp_get_group_id();
else
echo bp_get_group_id();
}
function bp_get_group_id( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_id', $group->id );
}
function bp_group_name( $deprecated = true, $deprecated2 = false ) {
global $groups_template;
if ( !$deprecated )
return bp_get_group_name();
else
echo bp_get_group_name();
}
function bp_get_group_name( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_name', $group->name );
}
function bp_group_type() {
echo bp_get_group_type();
}
function bp_get_group_type( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
if ( 'public' == $group->status ) {
$type = __( "Public Group", "buddypress" );
} else if ( 'hidden' == $group->status ) {
$type = __( "Hidden Group", "buddypress" );
} else if ( 'private' == $group->status ) {
$type = __( "Private Group", "buddypress" );
} else {
$type = ucwords( $group->status ) . ' ' . __( 'Group', 'buddypress' );
}
return apply_filters( 'bp_get_group_type', $type );
}
function bp_group_status() {
echo bp_get_group_status();
}
function bp_get_group_status( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_status', $group->status );
}
function bp_group_avatar( $args = '' ) {
echo bp_get_group_avatar( $args );
}
function bp_get_group_avatar( $args = '' ) {
global $bp, $groups_template;
$defaults = array(
'type' => 'full',
'width' => false,
'height' => false,
'class' => 'avatar',
'id' => false,
'alt' => __( 'Group avatar', 'buddypress' )
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
/* Fetch the avatar from the folder, if not provide backwards compat. */
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 ) ) )
$avatar = '
';
return apply_filters( 'bp_get_group_avatar', $avatar );
}
function bp_group_avatar_thumb() {
echo bp_get_group_avatar_thumb();
}
function bp_get_group_avatar_thumb( $group = false ) {
return bp_get_group_avatar( 'type=thumb' );
}
function bp_group_avatar_mini() {
echo bp_get_group_avatar_mini();
}
function bp_get_group_avatar_mini( $group = false ) {
return bp_get_group_avatar( 'type=thumb&width=30&height=30' );
}
function bp_group_last_active( $deprecated = true, $deprecated2 = false ) {
if ( !$deprecated )
return bp_get_group_last_active();
else
echo bp_get_group_last_active();
}
function bp_get_group_last_active( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
$last_active = $group->last_activity;
if ( !$last_active )
$last_active = groups_get_groupmeta( $group->id, 'last_activity' );
if ( empty( $last_active ) ) {
return __( 'not yet active', 'buddypress' );
} else {
return apply_filters( 'bp_get_group_last_active', bp_core_time_since( $last_active ) );
}
}
function bp_group_permalink( $deprecated = false, $deprecated2 = true ) {
if ( !$deprecated2 )
return bp_get_group_permalink();
else
echo bp_get_group_permalink();
}
function bp_get_group_permalink( $group = false ) {
global $groups_template, $bp;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug . '/' );
}
function bp_group_admin_permalink( $deprecated = true, $deprecated2 = false ) {
if ( !$deprecated )
return bp_get_group_admin_permalink();
else
echo bp_get_group_admin_permalink();
}
function bp_get_group_admin_permalink( $group = false ) {
global $groups_template, $bp;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_admin_permalink', $bp->root_domain . '/' . $bp->groups->slug . '/' . $group->slug . '/admin' );
}
function bp_group_slug() {
echo bp_get_group_slug();
}
function bp_get_group_slug( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_slug', $group->slug );
}
function bp_group_description( $deprecated = false, $deprecated2 = true ) {
if ( !$deprecated2 )
return bp_get_group_description();
else
echo bp_get_group_description();
}
function bp_get_group_description( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_description', stripslashes($group->description) );
}
function bp_group_description_editable( $deprecated = false ) {
echo bp_get_group_description_editable();
}
function bp_get_group_description_editable( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_description_editable', $group->description );
}
function bp_group_description_excerpt( $deprecated = false ) {
echo bp_get_group_description_excerpt();
}
function bp_get_group_description_excerpt( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_description_excerpt', bp_create_excerpt( $group->description, 20 ) );
}
function bp_group_public_status( $deprecated = false ) {
echo bp_get_group_public_status();
}
function bp_get_group_public_status( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
if ( $group->is_public ) {
return __( 'Public', 'buddypress' );
} else {
return __( 'Private', 'buddypress' );
}
}
function bp_group_is_public( $deprecated = false ) {
echo bp_get_group_is_public();
}
function bp_get_group_is_public( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_is_public', $group->is_public );
}
function bp_group_date_created( $deprecated = false ) {
echo bp_get_group_date_created();
}
function bp_get_group_date_created( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_date_created', bp_core_time_since( strtotime( $group->date_created ) ) );
}
function bp_group_is_admin() {
global $bp;
return $bp->is_item_admin;
}
function bp_group_is_mod() {
global $bp;
return $bp->is_item_mod;
}
function bp_group_list_admins( $deprecated = true, $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
if ( $group->admins ) { ?>
group;
if ( $group->mods ) { ?>
group;
if ( !$deprecated )
return bp_get_group_all_members_permalink();
else
echo bp_get_group_all_members_permalink();
}
function bp_get_group_all_members_permalink( $group = false ) {
global $groups_template, $bp;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_all_members_permalink', bp_get_group_permalink( $group ) . 'members' );
}
function bp_group_search_form() {
global $groups_template, $bp;
$action = $bp->displayed_user->domain . $bp->groups->slug . '/my-groups/search/';
$label = __('Filter Groups', 'buddypress');
$name = 'group-filter-box';
?>
displayed_user->id ) )
return true;
return false;
}
function bp_group_is_activity_permalink() {
global $bp;
if ( !$bp->is_single_item || $bp->current_component != $bp->groups->slug || $bp->current_action != $bp->activity->slug )
return false;
return true;
}
function bp_groups_pagination_links() {
echo bp_get_groups_pagination_links();
}
function bp_get_groups_pagination_links() {
global $groups_template;
return apply_filters( 'bp_get_groups_pagination_links', $groups_template->pag_links );
}
function bp_groups_pagination_count() {
global $bp, $groups_template;
$from_num = bp_core_number_format( intval( ( $groups_template->pag_page - 1 ) * $groups_template->pag_num ) + 1 );
$to_num = bp_core_number_format( ( $from_num + ( $groups_template->pag_num - 1 ) > $groups_template->total_group_count ) ? $groups_template->total_group_count : $from_num + ( $groups_template->pag_num - 1 ) );
$total = bp_core_number_format( $groups_template->total_group_count );
echo sprintf( __( 'Viewing group %s to %s (of %s groups)', 'buddypress' ), $from_num, $to_num, $total ); ?>
group;
return apply_filters( 'bp_get_group_total_members', $group->total_member_count );
}
function bp_group_member_count() {
echo bp_get_group_member_count();
}
function bp_get_group_member_count() {
global $groups_template;
if ( 1 == (int) $groups_template->group->total_member_count )
return apply_filters( 'bp_get_group_member_count', sprintf( __( '%s member', 'buddypress' ), bp_core_number_format( $groups_template->group->total_member_count ) ) );
else
return apply_filters( 'bp_get_group_member_count', sprintf( __( '%s members', 'buddypress' ), bp_core_number_format( $groups_template->group->total_member_count ) ) );
}
function bp_group_forum_permalink( $deprecated = false ) {
echo bp_get_group_forum_permalink();
}
function bp_get_group_forum_permalink( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_forum_permalink', bp_get_group_permalink( $group ) . 'forum' );
}
function bp_group_forum_topic_count( $args = '' ) {
echo bp_get_group_forum_topic_count( $args );
}
function bp_get_group_forum_topic_count( $args = '' ) {
global $groups_template;
$defaults = array(
'showtext' => false
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
if ( !$forum_id = groups_get_groupmeta( $groups_template->group->id, 'forum_id' ) )
return false;
if ( !function_exists( 'bp_forums_get_forum_topicpost_count' ) )
return false;
if ( !$groups_template->group->forum_counts )
$groups_template->group->forum_counts = bp_forums_get_forum_topicpost_count( (int)$forum_id );
if ( (bool) $showtext ) {
if ( 1 == (int) $groups_template->group->forum_counts[0]->topics )
$total_topics = sprintf( __( '%d topic', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->topics );
else
$total_topics = sprintf( __( '%d topics', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->topics );
} else {
$total_topics = (int) $groups_template->group->forum_counts[0]->topics;
}
return apply_filters( 'bp_get_group_forum_topic_count', $total_topics, (bool)$showtext );
}
function bp_group_forum_post_count( $args = '' ) {
echo bp_get_group_forum_post_count( $args );
}
function bp_get_group_forum_post_count( $args = '' ) {
global $groups_template;
$defaults = array(
'showtext' => false
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
if ( !$forum_id = groups_get_groupmeta( $groups_template->group->id, 'forum_id' ) )
return false;
if ( !function_exists( 'bp_forums_get_forum_topicpost_count' ) )
return false;
if ( !$groups_template->group->forum_counts )
$groups_template->group->forum_counts = bp_forums_get_forum_topicpost_count( (int)$forum_id );
if ( (bool) $showtext ) {
if ( 1 == (int) $groups_template->group->forum_counts[0]->posts )
$total_posts = sprintf( __( '%d post', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->posts );
else
$total_posts = sprintf( __( '%d posts', 'buddypress' ), (int) $groups_template->group->forum_counts[0]->posts );
} else {
$total_posts = (int) $groups_template->group->forum_counts[0]->posts;
}
return apply_filters( 'bp_get_group_forum_post_count', $total_posts, (bool)$showtext );
}
function bp_group_is_forum_enabled( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
if ( function_exists( 'bp_forums_is_installed_correctly' ) ) {
if ( bp_forums_is_installed_correctly() ) {
if ( $group->enable_forum )
return true;
return false;
} else {
return false;
}
}
return false;
}
function bp_group_show_forum_setting( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
if ( $group->enable_forum )
echo ' checked="checked"';
}
function bp_group_show_status_setting( $setting, $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
if ( $setting == $group->status )
echo ' checked="checked"';
}
function bp_group_admin_memberlist( $admin_list = false, $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
$admins = groups_get_group_admins( $group->id );
?>
-
$admin->user_id, 'type' => 'thumb', 'width' => 30, 'height' => 30 ) ) ?>
user_id ) ?> —
-
$admin->user_id, 'type' => 'thumb' ) ) ?>
user_id ) ?>
date_modified ), __( 'joined %s ago', 'buddypress') ); ?>
user_id ) ?>
group;
$group_mods = groups_get_group_mods( $group->id );
?>
-
$mod->user_id, 'type' => 'thumb', 'width' => 30, 'height' => 30 ) ) ?>
user_id ) ?> — |
-
$mod->user_id, 'type' => 'thumb' ) ) ?>
user_id ) ?>
date_modified ), __( 'joined %s ago', 'buddypress') ); ?>
user_id ) ?>
group;
return apply_filters( 'bp_group_has_moderators', groups_get_group_mods( $group->id ) );
}
function bp_group_member_promote_mod_link( $args = '' ) {
echo bp_get_group_member_promote_mod_link( $args );
}
function bp_get_group_member_promote_mod_link( $args = '' ) {
global $members_template, $groups_template, $bp;
$defaults = array(
'user_id' => $members_template->member->user_id,
'group' => &$groups_template->group
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
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' ) );
}
function bp_group_member_promote_admin_link( $args = '' ) {
echo bp_get_group_member_promote_admin_link( $args );
}
function bp_get_group_member_promote_admin_link( $args = '' ) {
global $members_template, $groups_template, $bp;
$defaults = array(
'user_id' => $members_template->member->user_id,
'group' => &$groups_template->group
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
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' ) );
}
function bp_group_member_demote_link( $user_id = false, $deprecated = false ) {
global $members_template;
if ( !$user_id )
$user_id = $members_template->member->user_id;
echo bp_get_group_member_demote_link( $user_id );
}
function bp_get_group_member_demote_link( $user_id = false, $group = false ) {
global $members_template, $groups_template, $bp;
if ( !$group )
$group =& $groups_template->group;
if ( !$user_id )
$user_id = $members_template->member->user_id;
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' ) );
}
function bp_group_member_ban_link( $user_id = false, $deprecated = false ) {
global $members_template;
if ( !$user_id )
$user_id = $members_template->member->user_id;
echo bp_get_group_member_ban_link( $user_id );
}
function bp_get_group_member_ban_link( $user_id = false, $group = false ) {
global $members_template, $groups_template, $bp;
if ( !$group )
$group =& $groups_template->group;
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' ) );
}
function bp_group_member_unban_link( $user_id = false, $deprecated = false ) {
global $members_template;
if ( !$user_id )
$user_id = $members_template->member->user_id;
echo bp_get_group_member_unban_link( $user_id );
}
function bp_get_group_member_unban_link( $user_id = false, $group = false ) {
global $members_template;
if ( !$user_id )
$user_id = $members_template->member->user_id;
if ( !$group )
$group =& $groups_template->group;
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' ) );
}
function bp_group_admin_tabs( $group = false ) {
global $bp, $groups_template;
if ( !$group )
$group = ( $groups_template->group ) ? $groups_template->group : $bp->groups->current_group;
$current_tab = $bp->action_variables[0];
?>
is_item_admin || $bp->is_item_mod ) { ?>
class="current">
is_item_admin )
return false;
?>
class="current">
class="current">
class="current">
group->status == 'private' ) : ?>
class="current">
slug ) ?>
class="current">
group;
return apply_filters( 'bp_group_form_action', bp_get_group_permalink( $group ) . $page );
}
function bp_group_admin_form_action( $page = false, $deprecated = false ) {
echo bp_get_group_admin_form_action( $page );
}
function bp_get_group_admin_form_action( $page = false, $group = false ) {
global $bp, $groups_template;
if ( !$group )
$group =& $groups_template->group;
if ( !$page )
$page = $bp->action_variables[0];
return apply_filters( 'bp_group_admin_form_action', bp_get_group_permalink( $group ) . 'admin/' . $page );
}
function bp_group_has_requested_membership( $group = false ) {
global $bp, $groups_template;
if ( !$group )
$group =& $groups_template->group;
if ( groups_check_for_membership_request( $bp->loggedin_user->id, $group->id ) )
return true;
return false;
}
function bp_group_is_member( $group = false ) {
global $bp, $groups_template;
if ( is_site_admin() )
return true;
if ( !$group )
$group =& $groups_template->group;
if ( null == $group->is_member )
return false;
return true;
}
function bp_group_accept_invite_link( $deprecated = false ) {
echo bp_get_group_accept_invite_link();
}
function bp_get_group_accept_invite_link( $group = false ) {
global $groups_template, $bp;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_accept_invite_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->groups->slug . '/invites/accept/' . $group->id, 'groups_accept_invite' ) );
}
function bp_group_reject_invite_link( $deprecated = false ) {
echo bp_get_group_reject_invite_link();
}
function bp_get_group_reject_invite_link( $group = false ) {
global $groups_template, $bp;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_reject_invite_link', wp_nonce_url( $bp->loggedin_user->domain . $bp->groups->slug . '/invites/reject/' . $group->id, 'groups_reject_invite' ) );
}
function bp_group_leave_confirm_link( $deprecated = false ) {
echo bp_get_group_leave_confirm_link();
}
function bp_get_group_leave_confirm_link( $group = false ) {
global $groups_template, $bp;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_group_leave_confirm_link', wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group/yes', 'groups_leave_group' ) );
}
function bp_group_leave_reject_link( $deprecated = false ) {
echo bp_get_group_leave_reject_link();
}
function bp_get_group_leave_reject_link( $group = false ) {
global $groups_template, $bp;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_get_group_leave_reject_link', bp_get_group_permalink( $group ) );
}
function bp_group_send_invite_form_action( $deprecated = false ) {
echo bp_get_group_send_invite_form_action();
}
function bp_get_group_send_invite_form_action( $group = false ) {
global $groups_template, $bp;
if ( !$group )
$group =& $groups_template->group;
return apply_filters( 'bp_group_send_invite_form_action', bp_get_group_permalink( $group ) . 'send-invites/send' );
}
function bp_has_friends_to_invite( $group = false ) {
global $groups_template, $bp;
if ( !function_exists('friends_install') )
return false;
if ( !$group )
$group =& $groups_template->group;
if ( !friends_check_user_has_friends( $bp->loggedin_user->id ) || !friends_count_invitable_friends( $bp->loggedin_user->id, $group->id ) )
return false;
return true;
}
function bp_group_join_button( $group = false ) {
global $bp, $groups_template;
if ( !$group )
$group =& $groups_template->group;
// If they're not logged in or are banned from the group, no join button.
if ( !is_user_logged_in() || $group->is_banned )
return false;
if ( !$group->status )
return false;
echo '';
}
function bp_group_status_message( $group = false ) {
global $groups_template;
if ( !$group )
$group =& $groups_template->group;
if ( 'private' == $group->status ) {
if ( !bp_group_has_requested_membership() )
if ( is_user_logged_in() )
_e( 'This is a private group and you must request group membership in order to join.', 'buddypress' );
else
_e( 'This is a private group. To join you must be a registered site member and request group membership.', 'buddypress' );
else
_e( 'This is a private group. Your membership request is awaiting approval from the group administrator.', 'buddypress' );
} else {
_e( 'This is a hidden group and only invited members can join.', 'buddypress' );
}
}
function bp_group_hidden_fields() {
if ( isset( $_REQUEST['s'] ) ) {
echo '';
}
if ( isset( $_REQUEST['letter'] ) ) {
echo '';
}
if ( isset( $_REQUEST['groups_search'] ) ) {
echo '';
}
}
function bp_total_group_count() {
echo bp_get_total_group_count();
}
function bp_get_total_group_count() {
return apply_filters( 'bp_get_total_group_count', groups_get_total_group_count() );
}
function bp_total_group_count_for_user( $user_id = false ) {
echo bp_get_total_group_count_for_user( $user_id );
}
function bp_get_total_group_count_for_user( $user_id = false ) {
return apply_filters( 'bp_get_total_group_count_for_user', groups_total_groups_for_user( $user_id ) );
}
/***************************************************************************
* Group Members Template Tags
**/
class BP_Groups_Group_Members_Template {
var $current_member = -1;
var $member_count;
var $members;
var $member;
var $in_the_loop;
var $pag_page;
var $pag_num;
var $pag_links;
var $total_group_count;
function bp_groups_group_members_template( $group_id, $per_page, $max, $exclude_admins_mods, $exclude_banned ) {
global $bp;
$this->pag_page = isset( $_REQUEST['mlpage'] ) ? intval( $_REQUEST['mlpage'] ) : 1;
$this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
$this->members = BP_Groups_Member::get_all_for_group( $group_id, $this->pag_num, $this->pag_page, $exclude_admins_mods, $exclude_banned );
if ( !$max || $max >= (int)$this->members['count'] )
$this->total_member_count = (int)$this->members['count'];
else
$this->total_member_count = (int)$max;
$this->members = $this->members['members'];
if ( $max ) {
if ( $max >= count($this->members) )
$this->member_count = count($this->members);
else
$this->member_count = (int)$max;
} else {
$this->member_count = count($this->members);
}
$this->pag_links = paginate_links( array(
'base' => add_query_arg( 'mlpage', '%#%' ),
'format' => '',
'total' => ceil( $this->total_member_count / $this->pag_num ),
'current' => $this->pag_page,
'prev_text' => '←',
'next_text' => '→',
'mid_size' => 1
));
}
function has_members() {
if ( $this->member_count )
return true;
return false;
}
function next_member() {
$this->current_member++;
$this->member = $this->members[$this->current_member];
return $this->member;
}
function rewind_members() {
$this->current_member = -1;
if ( $this->member_count > 0 ) {
$this->member = $this->members[0];
}
}
function members() {
if ( $this->current_member + 1 < $this->member_count ) {
return true;
} elseif ( $this->current_member + 1 == $this->member_count ) {
do_action('loop_end');
// Do some cleaning up after the loop
$this->rewind_members();
}
$this->in_the_loop = false;
return false;
}
function the_member() {
global $member;
$this->in_the_loop = true;
$this->member = $this->next_member();
if ( 0 == $this->current_member ) // loop has just started
do_action('loop_start');
}
}
function bp_group_has_members( $args = '' ) {
global $bp, $members_template;
$defaults = array(
'group_id' => $bp->groups->current_group->id,
'per_page' => 20,
'max' => false,
'exclude_admins_mods' => 1,
'exclude_banned' => 1
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
$members_template = new BP_Groups_Group_Members_Template( $group_id, $per_page, $max, (int)$exclude_admins_mods, (int)$exclude_banned );
return apply_filters( 'bp_group_has_members', $members_template->has_members(), &$members_template );
}
function bp_group_members() {
global $members_template;
return $members_template->members();
}
function bp_group_the_member() {
global $members_template;
return $members_template->the_member();
}
function bp_group_member_avatar() {
echo bp_get_group_member_avatar();
}
function bp_get_group_member_avatar() {
global $members_template;
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 ) ) );
}
function bp_group_member_avatar_thumb() {
echo bp_get_group_member_avatar_thumb();
}
function bp_get_group_member_avatar_thumb() {
global $members_template;
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 ) ) );
}
function bp_group_member_avatar_mini( $width = 30, $height = 30 ) {
echo bp_get_group_member_avatar_mini( $width, $height );
}
function bp_get_group_member_avatar_mini( $width = 30, $height = 30 ) {
global $members_template;
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 ) ) );
}
function bp_group_member_name() {
echo bp_get_group_member_name();
}
function bp_get_group_member_name() {
global $members_template;
return apply_filters( 'bp_get_group_member_name', $members_template->member->display_name );
}
function bp_group_member_url() {
echo bp_get_group_member_url();
}
function bp_get_group_member_url() {
global $members_template;
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 ) );
}
function bp_group_member_link() {
echo bp_get_group_member_link();
}
function bp_get_group_member_link() {
global $members_template;
return apply_filters( 'bp_get_group_member_link', '' . $members_template->member->display_name . '' );
}
function bp_group_member_is_friend() {
echo bp_get_group_member_is_friend();
}
function bp_get_group_member_is_friend() {
global $members_template;
if ( null === $members_template->member->is_friend )
$friend_status = 'not_friends';
else
$friend_status = ( 0 == $members_template->member->is_friend ) ? 'pending' : 'is_friend';
return apply_filters( 'bp_get_group_member_is_friend', $friend_status );
}
function bp_group_member_is_banned() {
echo bp_get_group_member_is_banned();
}
function bp_get_group_member_is_banned() {
global $members_template, $groups_template;
return apply_filters( 'bp_get_group_member_is_banned', $members_template->member->is_banned );
}
function bp_group_member_joined_since() {
echo bp_get_group_member_joined_since();
}
function bp_get_group_member_joined_since() {
global $members_template;
return apply_filters( 'bp_get_group_member_joined_since', bp_core_get_last_activity( $members_template->member->date_modified, __( 'joined %s ago', 'buddypress') ) );
}
function bp_group_member_id() {
echo bp_get_group_member_id();
}
function bp_get_group_member_id() {
global $members_template;
return apply_filters( 'bp_get_group_member_id', $members_template->member->user_id );
}
function bp_group_member_needs_pagination() {
global $members_template;
if ( $members_template->total_member_count > $members_template->pag_num )
return true;
return false;
}
function bp_group_pag_id() {
echo bp_get_group_pag_id();
}
function bp_get_group_pag_id() {
global $bp;
return apply_filters( 'bp_get_group_pag_id', 'pag' );
}
function bp_group_member_pagination() {
echo bp_get_group_member_pagination();
wp_nonce_field( 'bp_groups_member_list', '_member_pag_nonce' );
}
function bp_get_group_member_pagination() {
global $members_template;
return apply_filters( 'bp_get_group_member_pagination', $members_template->pag_links );
}
function bp_group_member_pagination_count() {
echo bp_get_group_member_pagination_count();
}
function bp_get_group_member_pagination_count() {
global $members_template;
$from_num = bp_core_number_format( intval( ( $members_template->pag_page - 1 ) * $members_template->pag_num ) + 1 );
$to_num = bp_core_number_format( ( $from_num + ( $members_template->pag_num - 1 ) > $members_template->total_member_count ) ? $members_template->total_member_count : $from_num + ( $members_template->pag_num - 1 ) );
$total = bp_core_number_format( $members_template->total_member_count );
return apply_filters( 'bp_get_group_member_pagination_count', sprintf( __( 'Viewing members %s to %s (of %s members)', 'buddypress' ), $from_num, $to_num, $total ) );
}
function bp_group_member_admin_pagination() {
echo bp_get_group_member_admin_pagination();
wp_nonce_field( 'bp_groups_member_admin_list', '_member_admin_pag_nonce' );
}
function bp_get_group_member_admin_pagination() {
global $members_template;
return $members_template->pag_links;
}
/***************************************************************************
* Group Creation Process Template Tags
**/
function bp_group_creation_tabs() {
global $bp;
if ( !is_array( $bp->groups->group_creation_steps ) )
return false;
if ( !$bp->groups->current_create_step )
$bp->groups->current_create_step = array_shift( array_keys( $bp->groups->group_creation_steps ) );
$counter = 1;
foreach ( (array)$bp->groups->group_creation_steps as $slug => $step ) {
$is_enabled = bp_are_previous_group_creation_steps_complete( $slug ); ?>
groups->current_create_step == $slug ) : ?> class="current">. — ' . $bp->groups->group_creation_steps[$bp->groups->current_create_step]['name'] . '' );
}
function bp_group_creation_form_action() {
echo bp_get_group_creation_form_action();
}
function bp_get_group_creation_form_action() {
global $bp;
if ( empty( $bp->action_variables[1] ) )
$bp->action_variables[1] = array_shift( array_keys( $bp->groups->group_creation_steps ) );
return apply_filters( 'bp_get_group_creation_form_action', $bp->root_domain . '/' . $bp->groups->slug . '/create/step/' . $bp->action_variables[1] );
}
function bp_is_group_creation_step( $step_slug ) {
global $bp;
/* Make sure we are in the groups component */
if ( $bp->current_component != BP_GROUPS_SLUG || 'create' != $bp->current_action )
return false;
/* If this the first step, we can just accept and return true */
if ( !$bp->action_variables[1] && array_shift( array_keys( $bp->groups->group_creation_steps ) ) == $step_slug )
return true;
/* Before allowing a user to see a group creation step we must make sure previous steps are completed */
if ( !bp_is_first_group_creation_step() ) {
if ( !bp_are_previous_group_creation_steps_complete( $step_slug ) )
return false;
}
/* Check the current step against the step parameter */
if ( $bp->action_variables[1] == $step_slug )
return true;
return false;
}
function bp_is_group_creation_step_complete( $step_slugs ) {
global $bp;
if ( !$bp->groups->completed_create_steps )
return false;
if ( is_array( $step_slugs ) ) {
$found = true;
foreach ( (array)$step_slugs as $step_slug ) {
if ( !in_array( $step_slug, $bp->groups->completed_create_steps ) )
$found = false;
}
return $found;
} else {
return in_array( $step_slugs, $bp->groups->completed_create_steps );
}
return true;
}
function bp_are_previous_group_creation_steps_complete( $step_slug ) {
global $bp;
/* If this is the first group creation step, return true */
if ( array_shift( array_keys( $bp->groups->group_creation_steps ) ) == $step_slug )
return true;
reset( $bp->groups->group_creation_steps );
unset( $previous_steps );
/* Get previous steps */
foreach ( (array)$bp->groups->group_creation_steps as $slug => $name ) {
if ( $slug == $step_slug )
break;
$previous_steps[] = $slug;
}
return bp_is_group_creation_step_complete( $previous_steps );
}
function bp_new_group_id() {
echo bp_get_new_group_id();
}
function bp_get_new_group_id() {
global $bp;
return apply_filters( 'bp_get_new_group_id', $bp->groups->new_group_id );
}
function bp_new_group_name() {
echo bp_get_new_group_name();
}
function bp_get_new_group_name() {
global $bp;
return apply_filters( 'bp_get_new_group_name', $bp->groups->current_group->name );
}
function bp_new_group_description() {
echo bp_get_new_group_description();
}
function bp_get_new_group_description() {
global $bp;
return apply_filters( 'bp_get_new_group_description', $bp->groups->current_group->description );
}
function bp_new_group_enable_forum() {
echo bp_get_new_group_enable_forum();
}
function bp_get_new_group_enable_forum() {
global $bp;
return (int) apply_filters( 'bp_get_new_group_enable_forum', $bp->groups->current_group->enable_forum );
}
function bp_new_group_status() {
echo bp_get_new_group_status();
}
function bp_get_new_group_status() {
global $bp;
return apply_filters( 'bp_get_new_group_status', $bp->groups->current_group->status );
}
function bp_new_group_avatar( $args = '' ) {
echo bp_get_new_group_avatar( $args );
}
function bp_get_new_group_avatar( $args = '' ) {
global $bp;
$defaults = array(
'type' => 'full',
'width' => false,
'height' => false,
'class' => 'avatar',
'id' => 'avatar-crop-preview',
'alt' => __( 'Group avatar', 'buddypress' ),
'no_grav' => false
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
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 ) ) );
}
function bp_group_creation_previous_link() {
echo bp_get_group_creation_previous_link();
}
function bp_get_group_creation_previous_link() {
global $bp;
foreach ( (array)$bp->groups->group_creation_steps as $slug => $name ) {
if ( $slug == $bp->action_variables[1] )
break;
$previous_steps[] = $slug;
}
return apply_filters( 'bp_get_group_creation_previous_link', $bp->loggedin_user->domain . $bp->groups->slug . '/create/step/' . array_pop( $previous_steps ) );
}
function bp_is_last_group_creation_step() {
global $bp;
$last_step = array_pop( array_keys( $bp->groups->group_creation_steps ) );
if ( $last_step == $bp->groups->current_create_step )
return true;
return false;
}
function bp_is_first_group_creation_step() {
global $bp;
$first_step = array_shift( array_keys( $bp->groups->group_creation_steps ) );
if ( $first_step == $bp->groups->current_create_step )
return true;
return false;
}
function bp_new_group_invite_friend_list() {
echo bp_get_new_group_invite_friend_list();
}
function bp_get_new_group_invite_friend_list( $args = '' ) {
global $bp;
if ( !function_exists('friends_install') )
return false;
$defaults = array(
'group_id' => false,
'separator' => 'li'
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
if ( !$group_id )
$group_id = ( $bp->groups->new_group_id ) ? $bp->groups->new_group_id : $bp->groups->current_group->id;
$friends = friends_get_friends_invite_list( $bp->loggedin_user->id, $group_id );
if ( $friends ) {
$invites = groups_get_invites_for_group( $bp->loggedin_user->id, $group_id );
for ( $i = 0; $i < count( $friends ); $i++ ) {
if ( $invites ) {
if ( in_array( $friends[$i]['id'], $invites ) ) {
$checked = ' checked="checked"';
} else {
$checked = '';
}
}
$items[] = '<' . $separator . '> ' . $friends[$i]['full_name'] . '' . $separator . '>';
}
}
return implode( "\n", (array)$items );
}
function bp_directory_groups_search_form() {
global $bp;
$search_value = __( 'Search anything...', 'buddypress' );
if ( !empty( $_REQUEST['s'] ) )
$search_value = $_REQUEST['s'];
?>
action_variables[0]) || 'recently-active' == $bp->action_variables[0] ) : ?> class="current">
action_variables[0] ) : ?> class="current">
action_variables[0] ) : ?> class="current">
action_variables[0] ) : ?> class="current">
action_variables[0] ) : ?> class="current">
action_variables[0] ) : ?> class="current">
action_variables[0];
switch ( $current_filter ) {
case 'recently-active': default:
_e( 'Recently Active', 'buddypress' );
break;
case 'recently-joined':
_e( 'Recently Joined', 'buddypress' );
break;
case 'most-popular':
_e( 'Most Popular', 'buddypress' );
break;
case 'admin-of':
_e( 'Administrator Of', 'buddypress' );
break;
case 'mod-of':
_e( 'Moderator Of', 'buddypress' );
break;
case 'alphabetically':
_e( 'Alphabetically', 'buddypress' );
break;
}
do_action( 'bp_groups_filter_title' );
}
function bp_is_group_admin_screen( $slug ) {
global $bp;
if ( $bp->current_component != BP_GROUPS_SLUG || 'admin' != $bp->current_action )
return false;
if ( $bp->action_variables[0] == $slug )
return true;
return false;
}
/************************************************************************************
* Group Avatar Template Tags
**/
function bp_group_current_avatar() {
global $bp;
if ( $bp->groups->current_group->avatar_full ) { ?>
$bp->groups->current_group->id, 'object' => 'group', 'no_grav' => true ) ) )
return false;
return true;
}
function bp_group_avatar_delete_link() {
echo bp_get_group_avatar_delete_link();
}
function bp_get_group_avatar_delete_link() {
global $bp;
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' ) );
}
function bp_group_avatar_edit_form() {
groups_avatar_upload();
}
function bp_custom_group_boxes() {
do_action( 'groups_custom_group_boxes' );
}
function bp_custom_group_admin_tabs() {
do_action( 'groups_custom_group_admin_tabs' );
}
function bp_custom_group_fields_editable() {
do_action( 'groups_custom_group_fields_editable' );
}
function bp_custom_group_fields() {
do_action( 'groups_custom_group_fields' );
}
/************************************************************************************
* Membership Requests Template Tags
**/
class BP_Groups_Membership_Requests_Template {
var $current_request = -1;
var $request_count;
var $requests;
var $request;
var $in_the_loop;
var $pag_page;
var $pag_num;
var $pag_links;
var $total_request_count;
function bp_groups_membership_requests_template( $group_id, $per_page, $max ) {
global $bp;
$this->pag_page = isset( $_REQUEST['mrpage'] ) ? intval( $_REQUEST['mrpage'] ) : 1;
$this->pag_num = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
$this->requests = BP_Groups_Group::get_membership_requests( $group_id, $this->pag_num, $this->pag_page );
if ( !$max || $max >= (int)$this->requests['total'] )
$this->total_request_count = (int)$this->requests['total'];
else
$this->total_request_count = (int)$max;
$this->requests = $this->requests['requests'];
if ( $max ) {
if ( $max >= count($this->requests) )
$this->request_count = count($this->requests);
else
$this->request_count = (int)$max;
} else {
$this->request_count = count($this->requests);
}
$this->pag_links = paginate_links( array(
'base' => add_query_arg( 'mrpage', '%#%' ),
'format' => '',
'total' => ceil( $this->total_request_count / $this->pag_num ),
'current' => $this->pag_page,
'prev_text' => '←',
'next_text' => '→',
'mid_size' => 1
));
}
function has_requests() {
if ( $this->request_count )
return true;
return false;
}
function next_request() {
$this->current_request++;
$this->request = $this->requests[$this->current_request];
return $this->request;
}
function rewind_requests() {
$this->current_request = -1;
if ( $this->request_count > 0 ) {
$this->request = $this->requests[0];
}
}
function requests() {
if ( $this->current_request + 1 < $this->request_count ) {
return true;
} elseif ( $this->current_request + 1 == $this->request_count ) {
do_action('loop_end');
// Do some cleaning up after the loop
$this->rewind_requests();
}
$this->in_the_loop = false;
return false;
}
function the_request() {
global $request;
$this->in_the_loop = true;
$this->request = $this->next_request();
if ( 0 == $this->current_request ) // loop has just started
do_action('loop_start');
}
}
function bp_group_has_membership_requests( $args = '' ) {
global $requests_template, $groups_template;
$defaults = array(
'group_id' => $groups_template->group->id,
'per_page' => 10,
'max' => false
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
$requests_template = new BP_Groups_Membership_Requests_Template( $group_id, $per_page, $max );
return apply_filters( 'bp_group_has_membership_requests', $requests_template->has_requests(), &$requests_template );
}
function bp_group_membership_requests() {
global $requests_template;
return $requests_template->requests();
}
function bp_group_the_membership_request() {
global $requests_template;
return $requests_template->the_request();
}
function bp_group_request_user_avatar_thumb() {
global $requests_template;
echo apply_filters( 'bp_group_request_user_avatar_thumb', bp_core_fetch_avatar( array( 'item_id' => $requests_template->request->user_id, 'type' => 'thumb' ) ) );
}
function bp_group_request_reject_link() {
global $requests_template, $groups_template;
echo apply_filters( 'bp_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' ) );
}
function bp_group_request_accept_link() {
global $requests_template, $groups_template;
echo apply_filters( 'bp_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' ) );
}
function bp_group_request_time_since_requested() {
global $requests_template;
echo apply_filters( 'bp_group_request_time_since_requested', sprintf( __( 'requested %s ago', 'buddypress' ), bp_core_time_since( strtotime( $requests_template->request->date_modified ) ) ) );
}
function bp_group_request_comment() {
global $requests_template;
echo apply_filters( 'bp_group_request_comment', strip_tags( stripslashes( $requests_template->request->comments ) ) );
}
function bp_group_request_user_link() {
global $requests_template;
echo apply_filters( 'bp_group_request_user_link', bp_core_get_userlink( $requests_template->request->user_id ) );
}
/************************************************************************************
* Invite Friends Template Tags
**/
class BP_Groups_Invite_Template {
var $current_invite = -1;
var $invite_count;
var $invites;
var $invite;
var $in_the_loop;
var $pag_page;
var $pag_num;
var $pag_links;
var $total_invite_count;
function bp_groups_invite_template( $user_id, $group_id ) {
global $bp;
$this->invites = groups_get_invites_for_group( $user_id, $group_id );
$this->invite_count = count( $this->invites );
}
function has_invites() {
if ( $this->invite_count )
return true;
return false;
}
function next_invite() {
$this->current_invite++;
$this->invite = $this->invites[$this->current_invite];
return $this->invite;
}
function rewind_invites() {
$this->current_invite = -1;
if ( $this->invite_count > 0 ) {
$this->invite = $this->invites[0];
}
}
function invites() {
if ( $this->current_invite + 1 < $this->invite_count ) {
return true;
} elseif ( $this->current_invite + 1 == $this->invite_count ) {
do_action('loop_end');
// Do some cleaning up after the loop
$this->rewind_invites();
}
$this->in_the_loop = false;
return false;
}
function the_invite() {
global $invite;
$this->in_the_loop = true;
$user_id = $this->next_invite();
$this->invite = new stdClass;
$this->invite->user = new BP_Core_User( $user_id );
$this->invite->group_id = $group_id; // Globaled in bp_group_has_invites()
if ( 0 == $this->current_invite ) // loop has just started
do_action('loop_start');
}
}
function bp_group_has_invites( $args = '' ) {
global $bp, $invites_template, $group_id;
$defaults = array(
'group_id' => false,
'user_id' => $bp->loggedin_user->id
);
$r = wp_parse_args( $args, $defaults );
extract( $r, EXTR_SKIP );
if ( !$group_id ) {
/* Backwards compatibility */
if ( $bp->groups->current_group ) $group_id = $bp->groups->current_group->id;
if ( $bp->groups->new_group_id ) $group_id = $bp->groups->new_group_id;
}
if ( !$group_id )
return false;
$invites_template = new BP_Groups_Invite_Template( $user_id, $group_id );
return apply_filters( 'bp_group_has_invites', $invites_template->has_invites(), &$invites_template );
}
function bp_group_invites() {
global $invites_template;
return $invites_template->invites();
}
function bp_group_the_invite() {
global $invites_template;
return $invites_template->the_invite();
}
function bp_group_invite_item_id() {
echo bp_get_group_invite_item_id();
}
function bp_get_group_invite_item_id() {
global $invites_template;
return apply_filters( 'bp_get_group_invite_item_id', 'uid-' . $invites_template->invite->user->id );
}
function bp_group_invite_user_avatar() {
echo bp_get_group_invite_user_avatar();
}
function bp_get_group_invite_user_avatar() {
global $invites_template;
return apply_filters( 'bp_get_group_invite_user_avatar', $invites_template->invite->user->avatar_thumb );
}
function bp_group_invite_user_link() {
echo bp_get_group_invite_user_link();
}
function bp_get_group_invite_user_link() {
global $invites_template;
return apply_filters( 'bp_get_group_invite_user_link', bp_core_get_userlink( $invites_template->invite->user->id ) );
}
function bp_group_invite_user_last_active() {
echo bp_get_group_invite_user_last_active();
}
function bp_get_group_invite_user_last_active() {
global $invites_template;
return apply_filters( 'bp_get_group_invite_user_last_active', $invites_template->invite->user->last_active );
}
function bp_group_invite_user_remove_invite_url() {
echo bp_get_group_invite_user_remove_invite_url();
}
function bp_get_group_invite_user_remove_invite_url() {
global $invites_template;
return wp_nonce_url( site_url( BP_GROUPS_SLUG . '/' . $invites_template->invite->group_id . '/invites/remove/' . $invites_template->invite->user->id ), 'groups_invite_uninvite_user' );
}
/***
* Groups RSS Feed Template Tags
*/
function bp_group_activity_feed_link() {
echo bp_get_group_activity_feed_link();
}
function bp_get_group_activity_feed_link() {
global $bp;
return apply_filters( 'bp_get_group_activity_feed_link', bp_get_group_permalink( $bp->groups->current_group ) . 'feed/' );
}
function bp_current_group_name() {
echo bp_get_current_group_name();
}
function bp_get_current_group_name() {
global $bp;
$name = apply_filters( 'bp_get_group_name', $bp->groups->current_group->name );
return apply_filters( 'bp_get_current_group_name', $name );
}
?>