BP_Groups_Member_Suggestions::get_suggestions()

Find and return a list of username suggestions that match the query.


Description Description


Return Return

(array|WP_Error) Array of results. If there were problems, returns a WP_Error object.


Top ↑

Source Source

File: bp-groups/classes/class-bp-groups-member-suggestions.php

	public function get_suggestions() {
		$user_query = array(
			'count_total'     => '',  // Prevents total count.
			'type'            => 'alphabetical',

			'group_role'      => array( 'admin', 'member', 'mod' ),
			'page'            => 1,
			'per_page'        => $this->args['limit'],
			'search_terms'    => $this->args['term'],
			'search_wildcard' => 'right',
		);

		// Only return matches of friends of this user.
		if ( $this->args['only_friends'] && is_user_logged_in() ) {
			$user_query['user_id'] = get_current_user_id();
		}

		// Positive Group IDs will restrict the search to members in that group.
		if ( $this->args['group_id'] > 0 ) {
			$user_query['group_id'] = $this->args['group_id'];

		// Negative Group IDs will restrict the search to members in every other group.
		} else {
			$group_query = array(
				'count_total'     => '',  // Prevents total count.
				'type'            => 'alphabetical',

				'group_id'        => absint( $this->args['group_id'] ),
				'group_role'      => array( 'admin', 'member', 'mod' ),
				'page'            => 1,
			);
			$group_users = new BP_Group_Member_Query( $group_query );

			if ( $group_users->results ) {
				$user_query['exclude'] = wp_list_pluck( $group_users->results, 'ID' );
			} else {
				$user_query['include'] = array( 0 );
			}
		}

		/**
		 * Filters the arguments for the user query for the Suggestion API.
		 *
		 * @since 2.1.0
		 *
		 * @param array                        $user_query Array of arguments for the query.
		 * @param BP_Groups_Member_Suggestions $this       Instance of the current suggestion class.
		 */
		$user_query = apply_filters( 'bp_groups_member_suggestions_query_args', $user_query, $this );
		if ( is_wp_error( $user_query ) ) {
			return $user_query;
		}


		if ( isset( $user_query['group_id'] ) ) {
			$user_query = new BP_Group_Member_Query( $user_query );
		} else {
			$user_query = new BP_User_Query( $user_query );
		}

		$results = array();
		foreach ( $user_query->results as $user ) {
			$result          = new stdClass();
			$result->ID      = $user->user_nicename;
			$result->image   = bp_core_fetch_avatar( array( 'html' => false, 'item_id' => $user->ID ) );
			$result->name    = bp_core_get_user_displayname( $user->ID );
			$result->user_id = $user->ID;

			$results[] = $result;
		}

		/**
		 * Filters the results of the member suggestions user query.
		 *
		 * @since 2.1.0
		 *
		 * @param array                        $results Array of member suggestions.
		 * @param BP_Groups_Member_Suggestions $this    Instance of the current suggestion class.
		 */
		return apply_filters( 'bp_groups_member_suggestions_get_suggestions', $results, $this );
	}

Top ↑

Changelog Changelog

Changelog
Version Description
2.1.0 Introduced.

Top ↑

User Contributed Notes User Contributed Notes

You must log in before being able to contribute a note or feedback.