/**
 * Return an array of users IDs based on the parameters passed.
 *
 * @package BuddyPress Core
 */
function bp_core_get_users($args = '')
{
    $defaults = array('type' => 'active', 'user_id' => false, 'exclude' => false, 'search_terms' => false, 'meta_key' => false, 'meta_value' => false, 'include' => false, 'per_page' => 20, 'page' => 1, 'populate_extras' => true);
    $params = wp_parse_args($args, $defaults);
    extract($params, EXTR_SKIP);
    return apply_filters('bp_core_get_users', BP_Core_User::get_users($type, $per_page, $page, $user_id, $include, $search_terms, $populate_extras, $exclude, $meta_key, $meta_value), $params);
}
 /**
  * @expectedDeprecated BP_Core_User::get_users
  * @group get_users
  * @group type
  */
 public function test_type_alphabetical()
 {
     $u1 = $this->factory->user->create(array('display_name' => 'foo'));
     $u2 = $this->factory->user->create(array('display_name' => 'bar'));
     global $wpdb;
     $q = BP_Core_User::get_users('alphabetical');
     $found = array_map('intval', wp_list_pluck($q['users'], 'id'));
     $this->assertEquals(array($u2, $u1), $found);
 }
/**
 * Return an array of users IDs based on the parameters passed.
 *
 * Since BuddyPress 1.7, bp_core_get_users() uses BP_User_Query. If you
 * need backward compatibility with BP_Core_User::get_users(), filter the
 * bp_use_legacy_user_query value, returning true.
 *
 * @package BuddyPress Core
 */
function bp_core_get_users($args = '')
{
    // Parse the user query arguments
    $params = wp_parse_args($args, array('type' => 'active', 'user_id' => false, 'exclude' => false, 'search_terms' => false, 'meta_key' => false, 'meta_value' => false, 'include' => false, 'per_page' => 20, 'page' => 1, 'populate_extras' => true, 'count_total' => 'count_query'));
    // For legacy users. Use of BP_Core_User::get_users() is deprecated.
    if (apply_filters('bp_use_legacy_user_query', false, __FUNCTION__, $params)) {
        extract($params, EXTR_SKIP);
        $retval = BP_Core_User::get_users($type, $per_page, $page, $user_id, $include, $search_terms, $populate_extras, $exclude, $meta_key, $meta_value);
        // Default behavior as of BuddyPress 1.7
    } else {
        // Get users like we were asked to do...
        $users = new BP_User_Query($params);
        // ...but reformat the results to match bp_core_get_users() behavior.
        $retval = array('users' => array_values($users->results), 'total' => $users->total_users);
    }
    return apply_filters('bp_core_get_users', $retval, $params);
}
function bp_friends_random_members( $total_members = 5 ) {
	global $bp;

	if ( !$user_ids = wp_cache_get( 'friends_random_users', 'bp' ) ) {
		$user_ids = BP_Core_User::get_users( 'random', $total_members );
		wp_cache_set( 'friends_random_users', $user_ids, 'bp' );
	}
?>
	<?php if ( $user_ids['users'] ) { ?>
		<ul class="item-list" id="random-members-list">
		<?php for ( $i = 0; $i < count( $user_ids['users'] ); $i++ ) { ?>
			<li>
				<a href="<?php echo bp_core_get_user_domain( $user_ids['users'][$i]->user_id ) ?>"><?php echo bp_core_fetch_avatar( array( 'item_id' => $user_ids['users'][$i]->user_id, 'type' => 'thumb' ) ) ?></a>
				<h5><?php echo bp_core_get_userlink( $user_ids['users'][$i]->user_id ) ?></h5>
				<?php if ( function_exists( 'xprofile_get_random_profile_data' ) ) { ?>
					<?php $random_data = xprofile_get_random_profile_data( $user_ids['users'][$i]->user_id, true ); ?>
					<div class="profile-data">
						<p class="field-name"><?php echo $random_data[0]->name ?></p>
						<?php echo $random_data[0]->value ?>
					</div>
				<?php } ?>

				<div class="action">
					<?php if ( function_exists( 'bp_add_friend_button' ) ) { ?>
						<?php bp_add_friend_button( $user_ids['users'][$i]->user_id ) ?>
					<?php } ?>
				</div>
			</li>
		<?php } ?>
		</ul>
	<?php } else { ?>
		<div id="message" class="info">
			<p><?php _e( "There aren't enough site members to show a random sample just yet.", 'buddypress' ) ?></p>
		</div>
	<?php } ?>
<?php
}
/**
 * Fetch an array of users based on the parameters passed.
 *
 * Since BuddyPress 1.7, bp_core_get_users() uses BP_User_Query. If you
 * need backward compatibility with BP_Core_User::get_users(), filter the
 * bp_use_legacy_user_query value, returning true.
 *
 * @since 1.2.0
 *
 * @param array|string $args {
 *     Array of arguments. All are optional. See {@link BP_User_Query} for
 *     a more complete description of arguments.
 *     @type string       $type                Sort order. Default: 'active'.
 *     @type int          $user_id             Limit results to friends of a user. Default: false.
 *     @type mixed        $exclude             IDs to exclude from results. Default: false.
 *     @type string       $search_terms        Limit to users matching search terms. Default: false.
 *     @type string       $meta_key            Limit to users with a meta_key. Default: false.
 *     @type string       $meta_value          Limit to users with a meta_value (with meta_key). Default: false.
 *     @type array|string $member_type         Array or comma-separated string of member types.
 *     @type array|string $member_type__in     Array or comma-separated string of member types.
 *                                             `$member_type` takes precedence over this parameter.
 *     @type array|string $member_type__not_in Array or comma-separated string of member types to be excluded.
 *     @type mixed        $include             Limit results by user IDs. Default: false.
 *     @type int          $per_page            Results per page. Default: 20.
 *     @type int          $page                Page of results. Default: 1.
 *     @type bool         $populate_extras     Fetch optional extras. Default: true.
 *     @type string|bool  $count_total         How to do total user count. Default: 'count_query'.
 * }
 * @return array
 */
function bp_core_get_users($args = '')
{
    // Parse the user query arguments.
    $r = bp_parse_args($args, array('type' => 'active', 'user_id' => false, 'exclude' => false, 'search_terms' => false, 'meta_key' => false, 'meta_value' => false, 'member_type' => '', 'member_type__in' => '', 'member_type__not_in' => '', 'include' => false, 'per_page' => 20, 'page' => 1, 'populate_extras' => true, 'count_total' => 'count_query'), 'core_get_users');
    // For legacy users. Use of BP_Core_User::get_users() is deprecated.
    if (apply_filters('bp_use_legacy_user_query', false, __FUNCTION__, $r)) {
        $retval = BP_Core_User::get_users($r['type'], $r['per_page'], $r['page'], $r['user_id'], $r['include'], $r['search_terms'], $r['populate_extras'], $r['exclude'], $r['meta_key'], $r['meta_value']);
        // Default behavior as of BuddyPress 1.7.0.
    } else {
        // Get users like we were asked to do...
        $users = new BP_User_Query($r);
        // ...but reformat the results to match bp_core_get_users() behavior.
        $retval = array('users' => array_values($users->results), 'total' => $users->total_users);
    }
    /**
     * Filters the results of the user query.
     *
     * @since 1.2.0
     *
     * @param array $retval Array of users for the current query.
     * @param array $r      Array of parsed query arguments.
     */
    return apply_filters('bp_core_get_users', $retval, $r);
}
Example #6
0
/**
 * Get a user's friends, in the order in which they joined the site.
 *
 * @see BP_Core_User::get_users() for a description of return value.
 *
 * @param int $user_id ID of the user whose friends are being retreived.
 * @param int $per_page Optional. Number of results to return per page.
 *        Default: 0 (no pagination; show all results).
 * @param int $page Optional. Number of the page of results to return.
 *        Default: 0 (no pagination; show all results).
 * @param string $filter Optional. Limit results to those matching a search
 *        string.
 * @return array See {@link BP_Core_User::get_users()}.
 */
function friends_get_newest($user_id, $per_page = 0, $page = 0, $filter = '')
{
    return apply_filters('friends_get_newest', BP_Core_User::get_users('newest', $per_page, $page, $user_id, $filter));
}
/**
 * Get a user's friends, in the order in which they joined the site.
 *
 * @since 1.0.0
 *
 * @see BP_Core_User::get_users() for a description of return value.
 *
 * @param int    $user_id  ID of the user whose friends are being retrieved.
 * @param int    $per_page Optional. Number of results to return per page.
 *                         Default: 0 (no pagination; show all results).
 * @param int    $page     Optional. Number of the page of results to return.
 *                         Default: 0 (no pagination; show all results).
 * @param string $filter   Optional. Limit results to those matching a search
 *                         string.
 * @return array See {@link BP_Core_User::get_users()}.
 */
function friends_get_newest($user_id, $per_page = 0, $page = 0, $filter = '')
{
    /**
     * Filters a user's friends listed from newest to oldest.
     *
     * @since 1.2.0
     *
     * @param array {
     *     @type int   $total_users Total number of users matched by query params.
     *     @type array $paged_users The current page of users matched by query params.
     * }
     */
    return apply_filters('friends_get_newest', BP_Core_User::get_users('newest', $per_page, $page, $user_id, $filter));
}
/**
 * Fetch an array of users based on the parameters passed.
 *
 * Since BuddyPress 1.7, bp_core_get_users() uses BP_User_Query. If you
 * need backward compatibility with BP_Core_User::get_users(), filter the
 * bp_use_legacy_user_query value, returning true.
 *
 * @param array $args {
 *     Array of arguments. All are optional. See {@link BP_User_Query} for
 *     a more complete description of arguments.
 *     @type string       $type            Sort order. Default: 'active'.
 *     @type int          $user_id         Limit results to friends of a user. Default: false.
 *     @type mixed        $exclude         IDs to exclude from results. Default: false.
 *     @type string       $search_terms    Limit to users matching search terms. Default: false.
 *     @type string       $meta_key        Limit to users with a meta_key. Default: false.
 *     @type string       $meta_value      Limit to users with a meta_value (with meta_key). Default: false.
 *     @type array|string $member_type     Array or comma-separated string of member types.
 *     @type mixed $include Limit results by user IDs. Default: false.
 *     @type int          $per_page        Results per page. Default: 20.
 *     @type int          $page            Page of results. Default: 1.
 *     @type bool         $populate_extras Fetch optional extras. Default: true.
 *     @type string|bool  $count_total     How to do total user count. Default: 'count_query'.
 * }
 * @return array
 */
function bp_core_get_users( $args = '' ) {

	// Parse the user query arguments
	$r = bp_parse_args( $args, array(
		'type'            => 'active',     // active, newest, alphabetical, random or popular
		'user_id'         => false,        // Pass a user_id to limit to only friend connections for this user
		'exclude'         => false,        // Users to exclude from results
		'search_terms'    => false,        // Limit to users that match these search terms
		'meta_key'        => false,        // Limit to users who have this piece of usermeta
		'meta_value'      => false,        // With meta_key, limit to users where usermeta matches this value
		'member_type'     => '',
		'include'         => false,        // Pass comma separated list of user_ids to limit to only these users
		'per_page'        => 20,           // The number of results to return per page
		'page'            => 1,            // The page to return if limiting per page
		'populate_extras' => true,         // Fetch the last active, where the user is a friend, total friend count, latest update
		'count_total'     => 'count_query' // What kind of total user count to do, if any. 'count_query', 'sql_calc_found_rows', or false
	), 'core_get_users' );

	// For legacy users. Use of BP_Core_User::get_users() is deprecated.
	if ( apply_filters( 'bp_use_legacy_user_query', false, __FUNCTION__, $r ) ) {
		$retval = BP_Core_User::get_users(
			$r['type'],
			$r['per_page'],
			$r['page'],
			$r['user_id'],
			$r['include'],
			$r['search_terms'],
			$r['populate_extras'],
			$r['exclude'],
			$r['meta_key'],
			$r['meta_value']
		);

	// Default behavior as of BuddyPress 1.7
	} else {

		// Get users like we were asked to do...
		$users = new BP_User_Query( $r );

		// ...but reformat the results to match bp_core_get_users() behavior.
		$retval = array(
			'users' => array_values( $users->results ),
			'total' => $users->total_users
		);
	}

	/**
	 * Filters the results of the user query.
	 *
	 * @since BuddyPress (1.2.0)
	 *
	 * @param array $retval Array of users for the current query.
	 * @param array $r      Array of parsed query arguments.
	 */
	return apply_filters( 'bp_core_get_users', $retval, $r );
}
Example #9
0
/**
 * bp_core_get_users()
 *
 * Return an array of users IDs based on the parameters passed.
 *
 * @package BuddyPress Core
 */
function bp_core_get_users( $args = '' ) {
	global $bp;

	$defaults = array(
		'type' => 'active', // active, newest, alphabetical, random or popular
		'user_id' => false, // Pass a user_id to limit to only friend connections for this user
		'search_terms' => false, // Limit to users that match these search terms

		'include' => false, // Pass comma separated list of user_ids to limit to only these users
		'per_page' => 20, // The number of results to return per page
		'page' => 1, // The page to return if limiting per page
		'populate_extras' => true, // Fetch the last active, where the user is a friend, total friend count, latest update
	);

	$params = wp_parse_args( $args, $defaults );
	extract( $params, EXTR_SKIP );

	return apply_filters( 'bp_core_get_users', BP_Core_User::get_users( $type, $per_page, $page, $user_id, $include, $search_terms, $populate_extras ), &$params );
}