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.