BP_Members_Suggestions

Adds support for user at-mentions to the Suggestions API.

Description

This class is in the Core component because it’s required by a class in the Groups component, and Groups is loaded before Members (alphabetical order).

Source

File: bp-core/classes/class-bp-members-suggestions.php

20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
class BP_Members_Suggestions extends BP_Suggestions {
 
    /**
     * Default arguments for this suggestions service.
     *
     * @since BuddyPress 2.1.0
     * @var array $args {
     *     @type int    $limit        Maximum number of results to display. Default: 16.
     *     @type bool   $only_friends If true, only match the current user's friends. Default: false.
     *     @type string $term         The suggestion service will try to find results that contain this string.
     *                                Mandatory.
     * }
     */
    protected $default_args = array(
        'limit'        => 10,
        'only_friends' => false,
        'term'         => '',
        'type'         => '',
    );
 
 
    /**
     * Validate and sanitise the parameters for the suggestion service query.
     *
     * @since BuddyPress 2.1.0
     *
     * @return true|WP_Error If validation fails, return a WP_Error object. On success, return true (bool).
     */
    public function validate() {
        $this->args['only_friends'] = (bool) $this->args['only_friends'];
 
        /**
         * Filters the members suggestions args for the current user.
         *
         * @since BuddyPress 2.1.0
         *
         * @param array                  $args Array of arguments for the member suggestions.
         * @param BP_Members_Suggestions $this Current BP_Members_Suggestions instance.
         */
        $this->args                 = apply_filters( 'bp_members_suggestions_args', $this->args, $this );
 
        // Check for invalid or missing mandatory parameters.
        if ( $this->args['only_friends'] && ( ! bp_is_active( 'friends' ) || ! is_user_logged_in() ) ) {
            return new WP_Error( 'missing_requirement' );
        }
 
        /**
         * Filters the validation status for the suggestion service query.
         *
         * @since BuddyPress 2.1.0
         *
         * @param bool|WP_Error          $value Results of validation check.
         * @param BP_Members_Suggestions $this  Current BP_Members_Suggestions instance.
         */
        return apply_filters( 'bp_members_suggestions_validate_args', parent::validate(), $this );
    }
 
    /**
     * Find and return a list of username suggestions that match the query.
     *
     * @since BuddyPress 2.1.0
     *
     * @return array|WP_Error Array of results. If there were problems, returns a WP_Error object.
     */
    public function get_suggestions() {
        $user_query = array(
            'count_total'     => ''// Prevents total count.
            'populate_extras' => false,
            'type'            => 'alphabetical',
 
            '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();
        }
 
        /**
         * Filters the members suggestions query args.
         *
         * @since BuddyPress 2.1.0
         *
         * @param array                  $user_query Array of query arguments.
         * @param BP_Members_Suggestions $this       Current BP_Members_Suggestions instance.
         */
        $user_query = apply_filters( 'bp_members_suggestions_query_args', $user_query, $this );
        if ( is_wp_error( $user_query ) ) {
            return $user_query;
        }
 
 
        $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 members suggestions results.
         *
         * @since BuddyPress 2.1.0
         *
         * @param array                  $results Array of users to suggest.
         * @param BP_Members_Suggestions $this    Current BP_Members_Suggestions instance.
         */
        return apply_filters( 'bp_members_suggestions_get_suggestions', $results, $this );
    }
}

Changelog

Changelog
Version Description
BuddyPress 2.1.0 Introduced.

Methods

  • get_suggestions — Find and return a list of username suggestions that match the query.
  • validate — Validate and sanitise the parameters for the suggestion service query.

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.