bp_nouveau_ajax_get_users_to_invite()
AJAX get list of members to invite to group.
Description
Source
File: bp-templates/bp-nouveau/includes/groups/ajax.php
function bp_nouveau_ajax_get_users_to_invite() { $bp = buddypress(); $response = array( 'feedback' => __( 'There was a problem performing this action. Please try again.', 'buddyboss' ), 'type' => 'error', ); if ( empty( $_POST['nonce'] ) ) { wp_send_json_error( $response ); } // Use default nonce $nonce = $_POST['nonce']; $check = 'bp_nouveau_groups'; // Use a specific one for actions needed it if ( ! empty( $_POST['_wpnonce'] ) && ! empty( $_POST['action'] ) ) { $nonce = $_POST['_wpnonce']; $check = $_POST['action']; } // Nonce check! if ( empty( $nonce ) || ! wp_verify_nonce( $nonce, $check ) ) { wp_send_json_error( $response ); } $request = wp_parse_args( $_POST, array( 'scope' => 'members', ) ); if ( 'groups_get_group_potential_invites' === $request['action'] ) { // check if subgroup. $parent_group_id = bp_get_parent_group_id( $request['group_id'] ); if ( isset( $parent_group_id ) && $parent_group_id > 0 ) { $check_admin = groups_is_user_admin( bp_loggedin_user_id(), $parent_group_id ); $check_moder = groups_is_user_mod( bp_loggedin_user_id(), $parent_group_id ); // Check role of current logged in user for this group. if ( false === $check_admin && false === $check_moder ) { wp_send_json_error( array( 'feedback' => __( 'You are not authorized to send invites to other users.', 'buddyboss' ), 'type' => 'info', ) ); } } $group_type = bp_groups_get_group_type( $request['group_id'] ); // Include profile type if in Group Types > E.g Team > Group Invites ( Meta Box ) specific profile type selected. if ( false !== $group_type ) { $group_type_id = bp_get_group_type_post_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 ) ) { $request['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 ( false !== $group_type ) { if ( true === bp_enable_group_hierarchies() ) { if ( true === bp_enable_group_restrict_invites() ) { $parent_group_id = bp_get_parent_group_id( $request['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' ); $request['include'] = implode( ',', $members ); } } } } // Exclude users if ( Restrict invites if user already in other same group type ) is checked if ( false !== $group_type ) { $group_type_id = bp_get_group_type_post_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' ); if (($key = array_search( $request['group_id'], $group_arr ) ) !== false) { 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 ); $request['include'] = implode( ',', $members ); } $request['exclude'] = implode( ',', $member_arr ); } } } } $bp->groups->invites_scope = 'members'; $message = __( 'Select members to invite by clicking the + button next to each member. Once you\'ve made a selection, use the "Send Invites" navigation item to customize the invite.', 'buddyboss' ); if ( 'friends' === $request['scope'] ) { $request['user_id'] = bp_loggedin_user_id(); $bp->groups->invites_scope = 'friends'; $message = __( 'Select which connections to invite by clicking the + button next to each member. Once you\'ve made a selection, use the "Send Invites" navigation item to customize the invite.', 'buddyboss' ); } if ( 'invited' === $request['scope'] ) { if ( ! bp_group_has_invites( array( 'user_id' => 'any', 'group_id' => $request['group_id'] ) ) ) { wp_send_json_error( array( 'feedback' => __( 'No pending group invitations found.', 'buddyboss' ), 'type' => 'info', ) ); } $request['is_confirmed'] = false; $bp->groups->invites_scope = 'invited'; $message = __( 'You can view the group\'s pending invitations from this screen.', 'buddyboss' ); } $potential_invites = bp_nouveau_get_group_potential_invites( $request ); if ( empty( $potential_invites->users ) ) { $error = array( 'feedback' => __( 'No members were found. Try another filter.', 'buddyboss' ), 'type' => 'info', ); if ( 'friends' === $bp->groups->invites_scope ) { $error = array( 'feedback' => __( 'All your connections are already members of this group or have already received an invite to join this group or have requested to join it.', 'buddyboss' ), 'type' => 'info', ); if ( 0 === (int) bp_get_total_friend_count( bp_loggedin_user_id() ) ) { $error = array( 'feedback' => __( 'You have no connections.', 'buddyboss' ), 'type' => 'info', ); } } unset( $bp->groups->invites_scope ); wp_send_json_error( $error ); } $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 ); // Set a message to explain use of the current scope $potential_invites->feedback = $message; unset( $bp->groups->invites_scope ); wp_send_json_success( $potential_invites ); }
Changelog
Version | Description |
---|---|
BuddyPress 3.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.