bp_get_group_join_button( object|bool $group = false )
Return button to join a group.
Description
Parameters
- $group
-
(Optional) Single group object.
Default value: false
Return
(false|string)
Source
File: bp-groups/bp-groups-template.php
function bp_get_group_join_button( $group = false ) {
global $groups_template;
// Set group to current loop group if none passed.
if ( empty( $group ) ) {
$group =& $groups_template->group;
}
// Don't show button if not logged in or previously banned.
if ( ! is_user_logged_in() || bp_group_is_user_banned( $group ) ) {
return false;
}
// Group creation was not completed or status is unknown.
if ( empty( $group->status ) ) {
return false;
}
// Already a member.
if ( ! empty( $group->is_member ) ) {
$is_only_admin = false;
// Stop sole admins from abandoning their group.
$group_admins = groups_get_group_admins( $group->id );
if ( ( 1 == count( $group_admins ) ) && ( bp_loggedin_user_id() === (int) $group_admins[0]->user_id ) ) {
$is_only_admin = true;
}
if ( groups_is_user_admin( bp_loggedin_user_id(), $group->id ) ) {
if ( 'Organizer' === get_group_role_label( $group->id, 'organizer_singular_label_name') ) {
$button_text = __( 'You\'re an ' . get_group_role_label( $group->id, 'organizer_singular_label_name'), 'buddyboss' );
} else {
$button_text = __( 'You\'re a ' . get_group_role_label( $group->id, 'organizer_singular_label_name'), 'buddyboss' );
}
} elseif ( groups_is_user_mod( bp_loggedin_user_id(), $group->id ) ) {
$button_text = __( 'You\'re a ' . get_group_role_label( $group->id, 'moderator_singular_label_name'), 'buddyboss' );
} else {
$button_text = __( 'You\'re a ' . get_group_role_label( $group->id, 'member_singular_label_name'), 'buddyboss' );
}
// Setup button attributes.
$button = array(
'id' => 'leave_group',
'component' => 'groups',
'must_be_logged_in' => true,
'block_self' => false,
'wrapper_class' => 'group-button ' . $group->status,
'wrapper_id' => 'groupbutton-' . $group->id,
'link_href' => wp_nonce_url( trailingslashit( bp_get_group_permalink( $group ) . 'leave-group' ), 'groups_leave_group' ),
'link_text' => $button_text,
'link_class' => 'group-button leave-group bp-toggle-action-button',
'button_attr' => array(
'data-title' => __( 'Leave group', 'buddyboss' ),
'data-title-displayed' => $button_text
)
);
if ( $is_only_admin ) {
$button['button_attr']['data-only-admin'] = '1';
}
// Not a member.
} else {
// Show different buttons based on group status.
switch ( $group->status ) {
case 'hidden' :
return false;
case 'public':
$button = array(
'id' => 'join_group',
'component' => 'groups',
'must_be_logged_in' => true,
'block_self' => false,
'wrapper_class' => 'group-button ' . $group->status,
'wrapper_id' => 'groupbutton-' . $group->id,
'link_href' => wp_nonce_url( trailingslashit( bp_get_group_permalink( $group ) . 'join' ), 'groups_join_group' ),
'link_text' => __( 'Join group', 'buddyboss' ),
'link_class' => 'group-button join-group',
);
break;
case 'private' :
// Member has outstanding invitation -
// show an "Accept Invitation" button.
if ( $group->is_invited ) {
$button = array(
'id' => 'accept_invite',
'component' => 'groups',
'must_be_logged_in' => true,
'block_self' => false,
'wrapper_class' => 'group-button ' . $group->status,
'wrapper_id' => 'groupbutton-' . $group->id,
'link_href' => add_query_arg( 'redirect_to', bp_get_group_permalink( $group ), bp_get_group_accept_invite_link( $group ) ),
'link_text' => __( 'Accept Invitation', 'buddyboss' ),
'link_class' => 'group-button accept-invite',
);
// Member has requested membership but request is pending -
// show a "Request Sent" button.
} elseif ( $group->is_pending ) {
$button = array(
'id' => 'membership_requested',
'component' => 'groups',
'must_be_logged_in' => true,
'block_self' => false,
'wrapper_class' => 'group-button pending ' . $group->status,
'wrapper_id' => 'groupbutton-' . $group->id,
'link_href' => bp_get_group_permalink( $group ),
'link_text' => __( 'Request Sent', 'buddyboss' ),
'link_class' => 'group-button pending membership-requested',
);
// Member has not requested membership yet -
// show a "Request Membership" button.
} else {
if ( true === bp_member_type_enable_disable() && true === bp_disable_group_type_creation() ) {
$group_type = bp_groups_get_group_type( $group->id );
$group_type_id = bp_get_group_type_post_id( $group_type );
$get_selected_member_type_join = get_post_meta( $group_type_id, '_bp_group_type_enabled_member_type_join', true );
$get_selected_member_type_join = ( isset( $get_selected_member_type_join ) && !empty( $get_selected_member_type_join ) ) ? $get_selected_member_type_join : array();
$get_requesting_user_member_type = bp_get_member_type( bp_loggedin_user_id() );
if ( in_array( $get_requesting_user_member_type, $get_selected_member_type_join ) ) {
$button = array(
'id' => 'request_membership',
'component' => 'groups',
'must_be_logged_in' => true,
'block_self' => false,
'wrapper_class' => 'group-button ' . $group->status,
'wrapper_id' => 'groupbutton-' . $group->id,
'link_href' => wp_nonce_url( trailingslashit( bp_get_group_permalink( $group ) . 'request-membership' ), 'groups_request_membership' ),
'link_text' => __( 'Join group', 'buddyboss' ),
'link_class' => 'group-button request-membership',
);
} else {
$button = array(
'id' => 'request_membership',
'component' => 'groups',
'must_be_logged_in' => true,
'block_self' => false,
'wrapper_class' => 'group-button ' . $group->status,
'wrapper_id' => 'groupbutton-' . $group->id,
'link_href' => wp_nonce_url( trailingslashit( bp_get_group_permalink( $group ) . 'request-membership' ), 'groups_request_membership' ),
'link_text' => __( 'Request Access', 'buddyboss' ),
'link_class' => 'group-button request-membership',
);
}
} else {
$button = array(
'id' => 'request_membership',
'component' => 'groups',
'must_be_logged_in' => true,
'block_self' => false,
'wrapper_class' => 'group-button ' . $group->status,
'wrapper_id' => 'groupbutton-' . $group->id,
'link_href' => wp_nonce_url( trailingslashit( bp_get_group_permalink( $group ) . 'request-membership' ), 'groups_request_membership' ),
'link_text' => __( 'Request Access', 'buddyboss' ),
'link_class' => 'group-button request-membership',
);
}
}
break;
}
}
/**
* Filters the HTML button for joining a group.
*
* @since BuddyPress 1.2.6
* @since BuddyPress 2.4.0 Added $group parameter to filter args.
*
* @param string $button HTML button for joining a group.
* @param object $group BuddyPress group object
*/
return bp_get_button( apply_filters( 'bp_get_group_join_button', $button, $group ) );
}
Changelog
| Version | Description |
|---|---|
| BuddyPress 1.0.0 | Introduced. |
Questions?
We're always happy to help with code or other questions you might have! Search our developer docs, contact support, or connect with our sales team.