Skip to:
Content

BuddyPress.org

Changeset 3368


Ignore:
Timestamp:
11/06/2010 08:15:27 PM (14 years ago)
Author:
boonebgorges
Message:

Adds exclude parameter for bp_has_members(). Fixes #2620

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/bp-core.php

    r3367 r3368  
    535535        'type' => 'active', // active, newest, alphabetical, random or popular
    536536        'user_id' => false, // Pass a user_id to limit to only friend connections for this user
     537        'exclude' => false, // Users to exclude from results
    537538        'search_terms' => false, // Limit to users that match these search terms
    538539
     
    546547    extract( $params, EXTR_SKIP );
    547548
    548     return apply_filters( 'bp_core_get_users', BP_Core_User::get_users( $type, $per_page, $page, $user_id, $include, $search_terms, $populate_extras ), &$params );
     549    return apply_filters( 'bp_core_get_users', BP_Core_User::get_users( $type, $per_page, $page, $user_id, $include, $search_terms, $populate_extras, $exclude ), &$params );
    549550}
    550551
  • trunk/bp-core/bp-core-classes.php

    r3300 r3368  
    107107    /* Static Functions */
    108108
    109     function get_users( $type, $limit = null, $page = 1, $user_id = false, $include = false, $search_terms = false, $populate_extras = true ) {
     109    function get_users( $type, $limit = null, $page = 1, $user_id = false, $include = false, $search_terms = false, $populate_extras = true, $exclude = false ) {
    110110        global $wpdb, $bp;
    111111
     
    141141        if ( 'alphabetical' == $type )
    142142            $sql['where_alpha'] = "AND pd.field_id = 1";
     143       
     144        if ( !empty( $exclude ) )
     145            $sql['where_exclude'] = "AND u.ID NOT IN ({$exclude})";
    143146
    144147        if ( $include ) {
     
    232235    }
    233236
    234     function get_users_by_letter( $letter, $limit = null, $page = 1, $populate_extras = true ) {
     237    function get_users_by_letter( $letter, $limit = null, $page = 1, $populate_extras = true, $exclude = false ) {
    235238        global $wpdb, $bp;
    236239
     
    252255        $status_sql = bp_core_get_status_sql( 'u.' );
    253256
    254         $total_users_sql = apply_filters( 'bp_core_users_by_letter_count_sql', $wpdb->prepare( "SELECT COUNT(DISTINCT u.ID) FROM " . CUSTOM_USER_TABLE . " u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id LEFT JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id WHERE {$status_sql} AND pf.name = %s AND pd.value LIKE '$letter%%' ORDER BY pd.value ASC", BP_XPROFILE_FULLNAME_FIELD_NAME ), $letter );
    255         $paged_users_sql = apply_filters( 'bp_core_users_by_letter_sql', $wpdb->prepare( "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.user_email FROM " . CUSTOM_USER_TABLE . " u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id LEFT JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id WHERE {$status_sql} AND pf.name = %s AND pd.value LIKE '$letter%%' ORDER BY pd.value ASC{$pag_sql}", BP_XPROFILE_FULLNAME_FIELD_NAME ), $letter, $pag_sql );
    256 
     257        $exclude_sql = ( !empty( $exclude ) ) ? " AND u.ID NOT IN ({$exclude})" : "";
     258
     259        $total_users_sql = apply_filters( 'bp_core_users_by_letter_count_sql', $wpdb->prepare( "SELECT COUNT(DISTINCT u.ID) FROM " . CUSTOM_USER_TABLE . " u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id LEFT JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id WHERE {$status_sql} AND pf.name = %s {$exclude_sql} AND pd.value LIKE '$letter%%'  ORDER BY pd.value ASC", BP_XPROFILE_FULLNAME_FIELD_NAME ), $letter );
     260        $paged_users_sql = apply_filters( 'bp_core_users_by_letter_sql', $wpdb->prepare( "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.user_email FROM " . CUSTOM_USER_TABLE . " u LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id LEFT JOIN {$bp->profile->table_name_fields} pf ON pd.field_id = pf.id WHERE {$status_sql} AND pf.name = %s {$exclude_sql} AND pd.value LIKE '$letter%%' ORDER BY pd.value ASC{$pag_sql}", BP_XPROFILE_FULLNAME_FIELD_NAME ), $letter, $pag_sql );
     261       
    257262        $total_users = $wpdb->get_var( $total_users_sql );
    258263        $paged_users = $wpdb->get_results( $paged_users_sql );
  • trunk/bp-core/bp-core-templatetags.php

    r3365 r3368  
    1818    var $total_member_count;
    1919
    20     function bp_core_members_template( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras ) {
     20    function bp_core_members_template( $type, $page_number, $per_page, $max, $user_id, $search_terms, $include, $populate_extras, $exclude ) {
    2121        global $bp;
    2222
     
    2626
    2727        if ( isset( $_REQUEST['letter'] ) && '' != $_REQUEST['letter'] )
    28             $this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page, $populate_extras );
     28            $this->members = BP_Core_User::get_users_by_letter( $_REQUEST['letter'], $this->pag_num, $this->pag_page, $populate_extras, $exclude );
    2929        else if ( false !== $include )
    3030            $this->members = BP_Core_User::get_specific_users( $include, $this->pag_num, $this->pag_page, $populate_extras );
    3131        else
    32             $this->members = bp_core_get_users( array( 'type' => $this->type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'include' => $include, 'search_terms' => $search_terms, 'populate_extras' => $populate_extras ) );
     32            $this->members = bp_core_get_users( array( 'type' => $this->type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'include' => $include, 'search_terms' => $search_terms, 'populate_extras' => $populate_extras, 'exclude' => $exclude ) );
    3333
    3434        if ( !$max || $max >= (int)$this->members['total'] )
     
    141141        'max' => false,
    142142
    143         'include' => false, // Pass a user_id or comma separated list of user_ids to only show these users
     143        'include' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to only show these users
     144        'exclude' => false, // Pass a user_id or a list (comma-separated or array) of user_ids to exclude these users
    144145
    145146        'user_id' => $user_id, // Pass a user_id to only show friends of this user
     
    161162        return false;
    162163
    163     $members_template = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras );
     164    $members_template = new BP_Core_Members_Template( $type, $page, $per_page, $max, $user_id, $search_terms, $include, (bool)$populate_extras, $exclude );
    164165    return apply_filters( 'bp_has_members', $members_template->has_members(), &$members_template );
    165166}
Note: See TracChangeset for help on using the changeset viewer.