BP_REST_Group_Membership_Endpoint::bp_rest_get_group_potential_invites( BP_Groups_Group $group, WP_REST_Request $request )
Get potential group invites.
Description
Parameters
- $group
-
(Required) Fetched group.
- $request
-
(Required) Full details about the request.
Return
(array|void|WP_Error)
Source
File: bp-groups/classes/class-bp-rest-group-membership-endpoint.php
public function bp_rest_get_group_potential_invites( $group, $request ) {
global $bp;
$user_id = get_current_user_id();
$args = array(
'per_page' => $request['per_page'],
'page' => $request['page'],
'search_terms' => $request['search'],
'group_id' => $group->id,
);
// check if subgroup.
$parent_group_id = $group->parent_id;
if ( 'invite' === $request['scope'] ) {
$group_type = bp_groups_get_group_type( $args['group_id'] );
// Include profile type if in Group Types > E.g Team > Group Invites ( Meta Box ) specific profile type selected.
if ( false !== $group_type && function_exists( 'bp_group_get_group_type_id' ) ) {
$group_type_id = bp_group_get_group_type_id( $group_type );
$get_selected_member_types = get_post_meta( $group_type_id, '_bp_group_type_enabled_member_type_group_invites', true );
if ( isset( $get_selected_member_types ) && ! empty( $get_selected_member_types ) ) {
$args['member_type'] = implode( ',', $get_selected_member_types );
}
}
// Include users ( Restrict group invites to only members of who already exists in parent group ) in BuddyBoss > Settings > Social Groups > Group Hierarchies.
if ( function_exists( 'bp_enable_group_hierarchies' ) && true === bp_enable_group_hierarchies() ) {
if ( true === bp_enable_group_restrict_invites() ) {
$parent_group_id = bp_get_parent_group_id( $args['group_id'] );
if ( $parent_group_id > 0 ) {
$members_query = groups_get_group_members(
array(
'group_id' => $parent_group_id,
)
);
$members = wp_list_pluck( $members_query['members'], 'ID' );
$args['include'] = implode( ',', $members );
if ( empty( $args['include'] ) ) {
return new WP_Error(
'bp_rest_group_invites_no_member_found_in_parent',
__( 'No members found in parent group.', 'buddyboss' ),
array(
'status' => 202,
)
);
}
}
}
}
// Exclude users if ( Restrict invites if user already in other same group type ) is checked.
if ( false !== $group_type && function_exists( 'bp_group_get_group_type_id' ) ) {
$group_type_id = bp_group_get_group_type_id( $group_type );
$meta = get_post_custom( $group_type_id );
$get_restrict_invites_same_group_types = isset( $meta['_bp_group_type_restrict_invites_user_same_group_type'] ) ? intval( $meta['_bp_group_type_restrict_invites_user_same_group_type'][0] ) : 0;
if ( 1 === $get_restrict_invites_same_group_types ) {
$group_arr = bp_get_group_ids_by_group_types( $group_type );
if ( isset( $group_arr ) && ! empty( $group_arr ) ) {
$group_arr = wp_list_pluck( $group_arr, 'id' );
$key = array_search( $args['group_id'], $group_arr, true );
if ( false !== $key ) {
unset( $group_arr[ $key ] );
}
$member_arr = array();
foreach ( $group_arr as $group_id ) {
$members_query = groups_get_group_members(
array(
'group_id' => $group_id,
)
);
$members_list = wp_list_pluck( $members_query['members'], 'ID' );
foreach ( $members_list as $id ) {
$member_arr[] = $id;
}
}
$member_arr = array_unique( $member_arr );
if ( isset( $members ) && ! empty( $members ) ) {
$members = array_diff( $members, $member_arr );
$args['include'] = implode( ',', $members );
}
$args['exclude'] = implode( ',', $member_arr );
}
}
}
}
// Check role of current logged in user for this group.
if ( ! bp_groups_user_can_send_invites( $args['group_id'] ) ) {
return new WP_Error(
'bp_rest_group_invites_cannot_get_items',
__( 'You are not authorized to send invites to other users.', 'buddyboss' ),
array(
'status' => rest_authorization_required_code(),
)
);
}
$bp->groups->invites_scope = 'members';
if ( 'invite-friends' === $request['scope'] ) {
$args['user_id'] = $user_id;
$bp->groups->invites_scope = 'friends';
}
if ( 'invited' === $request['scope'] ) {
if ( ! bp_group_has_invites(
array(
'user_id' => 'any',
'group_id' => $group->id,
)
) ) {
if ( isset( $args ) && isset( $args['search_terms'] ) && '' !== $args['search_terms'] ) {
// This message displays if you search in pending invites screen and if no results found in search.
return new WP_Error(
'bp_rest_group_invites_cannot_get_items',
__( 'All members already received invitations.', 'buddyboss' ),
array(
'status' => 202,
)
);
} else {
// This message displays when pending invites screen doesn't have any users invitation.
return new WP_Error(
'bp_rest_group_invites_cannot_get_items',
__( 'No pending group invitations found.', 'buddyboss' ),
array(
'status' => 202,
)
);
}
}
$args['is_confirmed'] = false;
$bp->groups->invites_scope = 'invited';
}
$potential_invites = bp_nouveau_get_group_potential_invites( $args );
if ( ! empty( $potential_invites->users ) ) {
$potential_invites->users = array_map( 'bp_nouveau_prepare_group_potential_invites_for_js', array_values( $potential_invites->users ) );
$potential_invites->users = array_filter( $potential_invites->users );
return wp_list_pluck( $potential_invites->users, 'id' );
}
}
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.