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. |