/**
 * AJAX handler for autocomplete.
 *
 * Displays friends only, unless BP_MESSAGES_AUTOCOMPLETE_ALL is defined.
 *
 * @since BuddyPress (1.2.0)
 *
 * @return string HTML.
 */
function bp_legacy_theme_ajax_messages_autocomplete_results()
{
    /**
     * Filters the max results default value for ajax messages autocomplete results.
     *
     * @since BuddyPress (1.5.0)
     *
     * @param int $value Max results for autocomplete. Default 10.
     */
    $limit = isset($_GET['limit']) ? absint($_GET['limit']) : (int) apply_filters('bp_autocomplete_max_results', 10);
    $term = isset($_GET['q']) ? sanitize_text_field($_GET['q']) : '';
    // Include everyone in the autocomplete, or just friends?
    if (bp_is_current_component(bp_get_messages_slug())) {
        $only_friends = buddypress()->messages->autocomplete_all === false;
    } else {
        $only_friends = true;
    }
    $suggestions = bp_core_get_suggestions(array('limit' => $limit, 'only_friends' => $only_friends, 'term' => $term, 'type' => 'members'));
    if ($suggestions && !is_wp_error($suggestions)) {
        foreach ($suggestions as $user) {
            // Note that the final line break acts as a delimiter for the
            // autocomplete JavaScript and thus should not be removed
            printf('<span id="%s" href="#"></span><img src="%s" style="width: 15px"> &nbsp; %s (%s)' . "\n", esc_attr('link-' . $user->ID), esc_url($user->image), esc_html($user->name), esc_html($user->ID));
        }
    }
    exit;
}
/**
 * AJAX handler for group member autocomplete requests.
 *
 * @since 1.7.0
 */
function bp_groups_admin_autocomplete_handler()
{
    // Bail if user user shouldn't be here, or is a large network
    if (!current_user_can('bp_moderate') || is_multisite() && wp_is_large_network('users')) {
        wp_die(-1);
    }
    $term = isset($_GET['term']) ? sanitize_text_field($_GET['term']) : '';
    $group_id = isset($_GET['group_id']) ? absint($_GET['group_id']) : 0;
    if (!$term || !$group_id) {
        wp_die(-1);
    }
    $suggestions = bp_core_get_suggestions(array('group_id' => -$group_id, 'limit' => 10, 'term' => $term, 'type' => 'members'));
    $matches = array();
    if ($suggestions && !is_wp_error($suggestions)) {
        foreach ($suggestions as $user) {
            $matches[] = array('label' => sprintf(__('%1$s (%2$s)', 'buddypress'), $user->name, $user->ID), 'value' => $user->ID);
        }
    }
    wp_die(json_encode($matches));
}
 public function test_suggestions_with_type_groupmembers_hidden_and_exclude_group_from_results()
 {
     $suggestions = bp_core_get_suggestions(array('group_id' => self::$group_ids['hidden'], 'type' => 'members', 'term' => 'pig'));
     $this->assertTrue(is_wp_error($suggestions));
     // no access to group.
 }
/**
 * AJAX endpoint for Suggestions API lookups.
 *
 * @since 2.1.0
 */
function bp_ajax_get_suggestions()
{
    if (!bp_is_user_active() || empty($_GET['term']) || empty($_GET['type'])) {
        wp_send_json_error('missing_parameter');
        exit;
    }
    $args = array('term' => sanitize_text_field($_GET['term']), 'type' => sanitize_text_field($_GET['type']));
    // Support per-Group suggestions.
    if (!empty($_GET['group-id'])) {
        $args['group_id'] = absint($_GET['group-id']);
    }
    $results = bp_core_get_suggestions($args);
    if (is_wp_error($results)) {
        wp_send_json_error($results->get_error_message());
        exit;
    }
    wp_send_json_success($results);
}
Example #5
0
/**
 * AJAX endpoint for Suggestions API lookups.
 *
 * @since BuddyPress (2.1.0)
 */
function bp_ajax_get_suggestions()
{
    if (!bp_is_user_active() || empty($_GET['term']) || empty($_GET['type'])) {
        wp_send_json_error('missing_parameter');
        exit;
    }
    $results = bp_core_get_suggestions(array('term' => sanitize_text_field($_GET['term']), 'type' => sanitize_text_field($_GET['type'])));
    if (is_wp_error($results)) {
        wp_send_json_error($results->get_error_message());
        exit;
    }
    wp_send_json_success($results);
}
 public function test_suggestions_with_bad_term()
 {
     // a non-empty term is mandatory
     $suggestions = bp_core_get_suggestions(array('term' => '', 'type' => 'members'));
     $this->assertTrue(is_wp_error($suggestions));
 }
Example #7
0
 /**
  * Searches for groups given some characters and returns
  * the found suggestions
  *
  * @package WP Idea Stream
  * @subpackage buddypress/groups
  *
  * @since  2.0.0
  *
  * @uses   wp_idea_stream_user_can() to check for user's capability
  * @uses   sanitize_text_field() to sanitize the search terms
  * @uses   bp_loggedin_user_id() to get current user's ID
  * @uses   bp_core_get_suggestions() to get the matching suggestions
  * @return string the groups suggestions
  */
 public function ajax_group_search()
 {
     // Bail if user user shouldn't be here
     if (!wp_idea_stream_user_can('edit_ideas')) {
         wp_die(-1);
     }
     $term = '';
     if (isset($_GET['term'])) {
         $term = sanitize_text_field($_GET['term']);
     }
     $author = bp_loggedin_user_id();
     if (isset($_GET['user_id'])) {
         $author = absint($_GET['user_id']);
     }
     if (empty($term)) {
         wp_die(-1);
     }
     $suggestions = bp_core_get_suggestions(array('limit' => 10, 'term' => $term, 'type' => 'ideastream_groups', 'show_hidden' => true, 'meta_key' => '_group_ideastream_activate', 'meta_value' => 1, 'author' => $author));
     $matches = array();
     if ($suggestions && !is_wp_error($suggestions)) {
         foreach ($suggestions as $group) {
             $matches[] = array('label' => esc_html($group->name), 'value' => esc_attr($group->id), 'link' => esc_url($group->link));
         }
     }
     wp_die(json_encode($matches));
 }