bp_legacy_theme_ajax_joinleave_group()
Join or leave a group when clicking the “join/leave” button via a POST request.
Description Description
Return Return
(string|null) HTML
Source Source
File: bp-templates/bp-legacy/buddypress-functions.php
function bp_legacy_theme_ajax_joinleave_group() { if ( ! bp_is_post_request() ) { return; } // Cast gid as integer. $group_id = (int) $_POST['gid']; if ( groups_is_user_banned( bp_loggedin_user_id(), $group_id ) ) return; if ( ! $group = groups_get_group( $group_id ) ) return; // Client doesn't distinguish between different request types, so we infer from user status. if ( groups_is_user_member( bp_loggedin_user_id(), $group->id ) ) { $request_type = 'leave_group'; } elseif ( groups_check_user_has_invite( bp_loggedin_user_id(), $group->id ) ) { $request_type = 'accept_invite'; } elseif ( 'private' === $group->status ) { $request_type = 'request_membership'; } else { $request_type = 'join_group'; } switch ( $request_type ) { case 'join_group' : if ( ! bp_current_user_can( 'groups_join_group', array( 'group_id' => $group->id ) ) ) { esc_html_e( 'Error joining group', 'buddypress' ); } check_ajax_referer( 'groups_join_group' ); if ( ! groups_join_group( $group->id ) ) { _e( 'Error joining group', 'buddypress' ); } else { echo '<a id="group-' . esc_attr( $group->id ) . '" class="group-button leave-group" rel="leave" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>'; } break; case 'accept_invite' : if ( ! bp_current_user_can( 'groups_request_membership', array( 'group_id' => $group->id ) ) ) { esc_html_e( 'Error accepting invitation', 'buddypress' ); } check_ajax_referer( 'groups_accept_invite' ); if ( ! groups_accept_invite( bp_loggedin_user_id(), $group->id ) ) { _e( 'Error requesting membership', 'buddypress' ); } else { echo '<a id="group-' . esc_attr( $group->id ) . '" class="group-button leave-group" rel="leave" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'leave-group', 'groups_leave_group' ) . '">' . __( 'Leave Group', 'buddypress' ) . '</a>'; } break; case 'request_membership' : check_ajax_referer( 'groups_request_membership' ); if ( ! groups_send_membership_request( bp_loggedin_user_id(), $group->id ) ) { _e( 'Error requesting membership', 'buddypress' ); } else { echo '<a id="group-' . esc_attr( $group->id ) . '" class="group-button disabled pending membership-requested" rel="membership-requested" href="' . bp_get_group_permalink( $group ) . '">' . __( 'Request Sent', 'buddypress' ) . '</a>'; } break; case 'leave_group' : check_ajax_referer( 'groups_leave_group' ); if ( ! groups_leave_group( $group->id ) ) { _e( 'Error leaving group', 'buddypress' ); } elseif ( 'public' === $group->status ) { echo '<a id="group-' . esc_attr( $group->id ) . '" class="group-button join-group" rel="join" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'join', 'groups_join_group' ) . '">' . __( 'Join Group', 'buddypress' ) . '</a>'; } else { echo '<a id="group-' . esc_attr( $group->id ) . '" class="group-button request-membership" rel="join" href="' . wp_nonce_url( bp_get_group_permalink( $group ) . 'request-membership', 'groups_request_membership' ) . '">' . __( 'Request Membership', 'buddypress' ) . '</a>'; } break; } exit; }
Changelog Changelog
Version | Description |
---|---|
1.2.0 | Introduced. |