Skip to:
Content

BuddyPress.org

Ticket #2639: 2639.patch

File 2639.patch, 11.5 KB (added by boonebgorges, 16 years ago)
  • bp-themes/bp-default/groups/single/members.php

     
    2828
    2929                                <?php do_action( 'bp_group_members_list_item' ) ?>
    3030
    31                                 <?php if ( function_exists( 'friends_install' ) ) : ?>
     31                                <?php if ( bp_is_active( 'friends' ) ) : ?>
    3232
    3333                                        <div class="action">
    3434                                                <?php bp_add_friend_button( bp_get_group_member_id(), bp_get_group_member_is_friend() ) ?>
  • bp-core/bp-core-classes.php

     
    111111
    112112                $sql = array();
    113113
    114                 $sql['select_main'] = "SELECT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.display_name, u.user_email";
     114                $sql['select_main'] = "SELECT DISTINCT u.ID as id, u.user_registered, u.user_nicename, u.user_login, u.display_name, u.user_email";
    115115
    116116                if ( 'active' == $type || 'online' == $type )
    117117                        $sql['select_active'] = ", um.meta_value as last_activity";
     
    123123                        $sql['select_alpha'] = ", pd.value as fullname";
    124124
    125125                $sql['from'] = "FROM " . CUSTOM_USER_TABLE . " u LEFT JOIN " . CUSTOM_USER_META_TABLE . " um ON um.user_id = u.ID";
    126 
    127                 $sql['where'] = 'WHERE ' . bp_core_get_status_sql( 'u.' );
    128 
     126               
     127                if ( $search_terms && bp_is_active( 'xprofile' ) || 'alphabetical' == $type )
     128                        $sql['from'] .= " LEFT JOIN {$bp->profile->table_name_data} pd ON u.ID = pd.user_id";
     129               
    129130                if ( 'active' == $type || 'online' == $type )
    130131                        $sql['where_active'] = "AND um.meta_key = 'last_activity'";
    131132
     
    138139                if ( 'alphabetical' == $type )
    139140                        $sql['where_alpha'] = "AND pd.field_id = 1";
    140141
    141                 if ( $user_id && function_exists( 'friends_install' ) ) {
     142                if ( $user_id && bp_is_active( 'friends' ) ) {
    142143                        $friend_ids = friends_get_friend_user_ids( $user_id );
    143144                        $friend_ids = $wpdb->escape( implode( ',', (array)$friend_ids ) );
    144145
  • bp-groups.php

     
    136136                        bp_core_new_subnav_item( array( 'name' => sprintf( __( 'Members (%s)', 'buddypress' ), number_format( $bp->groups->current_group->total_member_count ) ), 'slug' => 'members', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_members', 'position' => 60, 'user_has_access' => $bp->groups->current_group->user_has_access, 'item_css_id' => 'members'  ) );
    137137
    138138                        if ( is_user_logged_in() && groups_is_user_member( $bp->loggedin_user->id, $bp->groups->current_group->id ) ) {
    139                                 if ( function_exists('friends_install') )
     139                                if ( bp_is_active('friends') )
    140140                                        bp_core_new_subnav_item( array( 'name' => __( 'Send Invites', 'buddypress' ), 'slug' => 'send-invites', 'parent_url' => $group_link, 'parent_slug' => $bp->groups->slug, 'screen_function' => 'groups_screen_group_invite', 'item_css_id' => 'invite', 'position' => 70, 'user_has_access' => $bp->groups->current_group->user_has_access ) );
    141141                        }
    142142                }
     
    16541654                'type' => 'active', // active, newest, alphabetical, random, popular, most-forum-topics or most-forum-posts
    16551655                'user_id' => false, // Pass a user_id to limit to only groups that this user is a member of
    16561656                'include' => false, // Only include these specific groups (group_ids)
     1657                'exclude' => false, // Do not include these specific groups (group_ids)
     1658               
    16571659                'search_terms' => false, // Limit to groups that match these search terms
    16581660
    16591661                'per_page' => 20, // The number of results to return per page
     
    16641666        $params = wp_parse_args( $args, $defaults );
    16651667        extract( $params, EXTR_SKIP );
    16661668
    1667         $groups = BP_Groups_Group::get( $type, $per_page, $page, $user_id, $search_terms, $include, $populate_extras );
     1669        $groups = BP_Groups_Group::get( $type, $per_page, $page, $user_id, $search_terms, $include, $populate_extras, $exclude );
    16681670
    16691671        return apply_filters( 'groups_get_groups', $groups, &$params );
    16701672}
     
    19951997
    19961998/*** Group Invitations *********************************************************/
    19971999
    1998 function groups_get_invites_for_user( $user_id = false, $limit = false, $page = false ) {
     2000function groups_get_invites_for_user( $user_id = false, $limit = false, $page = false, $exclude = false ) {
    19992001        global $bp;
    20002002
    20012003        if ( !$user_id )
    20022004                $user_id = $bp->loggedin_user->id;
    20032005
    2004         return BP_Groups_Member::get_invites( $user_id, $limit, $page );
     2006        return BP_Groups_Member::get_invites( $user_id, $limit, $page, $exclude );
    20052007}
    20062008
    20072009function groups_invite_user( $args = '' ) {
  • bp-groups/bp-groups-classes.php

     
    255255                return array( 'requests' => $paged_requests, 'total' => $total_requests );
    256256        }
    257257
    258         function get( $type = 'newest', $per_page = null, $page = null, $user_id = false, $search_terms = false, $include = false, $populate_extras = true ) {
     258        function get( $type = 'newest', $per_page = null, $page = null, $user_id = false, $search_terms = false, $include = false, $populate_extras = true, $exclude = false ) {
    259259                global $wpdb, $bp;
    260260
    261261                $sql = array();
     
    288288                        $include = $wpdb->escape( $include );
    289289                        $sql['include'] = " AND g.id IN ({$include})";
    290290                }
     291               
     292                if ( !empty( $exclude ) ) {
     293                        $exclude = $wpdb->escape( $exclude );
     294                        $sql['exclude'] = " AND g.id NOT IN ({$exclude})";
     295                }
    291296
    292297                switch ( $type ) {
    293298                        case 'newest': default:
     
    327332                if ( !empty( $user_id ) )
    328333                        $total_sql['where'][] = "m.group_id = g.id AND m.user_id = {$user_id} AND m.is_confirmed = 1 AND m.is_banned = 0";
    329334
     335                if ( !empty( $exclude ) ) {
     336                        $exclude = $wpdb->escape( $exclude );
     337                        $total_sql['where'][] = " g.id NOT IN ({$exclude})";
     338                }
     339
    330340                $t_sql = $total_sql['select'];
    331341
    332342                if ( !empty( $total_sql['where'] ) )
     
    781791                }
    782792        }
    783793
    784         function get_invites( $user_id, $limit = false, $page = false ) {
     794        function get_invites( $user_id, $limit = false, $page = false, $exclude = false ) {
    785795                global $wpdb, $bp;
    786796
    787797                if ( $limit && $page )
    788798                        $pag_sql = $wpdb->prepare( " LIMIT %d, %d", intval( ( $page - 1 ) * $limit), intval( $limit ) );
     799               
     800                if ( $exclude )
     801                        $exclude_sql = $wpdb->prepare( " AND g.id NOT IN (%s)", $exclude );
    789802
    790                 $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND m.is_confirmed = 0 AND m.inviter_id != 0 AND m.invite_sent = 1 AND m.user_id = %d ORDER BY m.date_modified ASC {$pag_sql}", $user_id ) );
    791                 $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND m.is_confirmed = 0 AND m.inviter_id != 0 AND m.invite_sent = 1 AND m.user_id = %d ORDER BY date_modified ASC", $user_id ) );
     803                $paged_groups = $wpdb->get_results( $wpdb->prepare( "SELECT g.*, gm1.meta_value as total_member_count, gm2.meta_value as last_activity FROM {$bp->groups->table_name_groupmeta} gm1, {$bp->groups->table_name_groupmeta} gm2, {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE g.id = m.group_id AND g.id = gm1.group_id AND g.id = gm2.group_id AND gm2.meta_key = 'last_activity' AND gm1.meta_key = 'total_member_count' AND m.is_confirmed = 0 AND m.inviter_id != 0 AND m.invite_sent = 1 AND m.user_id = %d {$exclude_sql} ORDER BY m.date_modified ASC {$pag_sql}", $user_id ) );
     804                $total_groups = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(DISTINCT m.group_id) FROM {$bp->groups->table_name_members} m, {$bp->groups->table_name} g WHERE m.group_id = g.id AND m.is_confirmed = 0 AND m.inviter_id != 0 AND m.invite_sent = 1 AND m.user_id = %d {$exclude_sql} ORDER BY date_modified ASC", $user_id ) );
    792805
    793806                return array( 'groups' => $paged_groups, 'total' => $total_groups );
    794807        }
     
    947960                foreach ( (array)$members as $user ) $user_ids[] = $user->user_id;
    948961                $user_ids = $wpdb->escape( join( ',', (array)$user_ids ) );
    949962
    950                 if ( function_exists( 'friends_install' ) ) {
     963                if ( bp_is_active( 'friends' ) ) {
    951964                        $friend_status = $wpdb->get_results( $wpdb->prepare( "SELECT initiator_user_id, friend_user_id, is_confirmed FROM {$bp->friends->table_name} WHERE (initiator_user_id = %d AND friend_user_id IN ( {$user_ids} ) ) OR (initiator_user_id IN ( {$user_ids} ) AND friend_user_id = %d )", $bp->loggedin_user->id, $bp->loggedin_user->id ) );
    952965                        for ( $i = 0; $i < count( $members ); $i++ ) {
    953966                                foreach ( (array)$friend_status as $status ) {
  • bp-groups/bp-groups-templatetags.php

     
    1919
    2020        var $single_group = false;
    2121
    22         function bp_groups_template( $user_id, $type, $page, $per_page, $max, $slug, $search_terms, $include, $populate_extras ) {
     22        function bp_groups_template( $user_id, $type, $page, $per_page, $max, $slug, $search_terms, $include, $populate_extras, $exclude ) {
    2323                global $bp;
    2424
    2525                $this->pag_page = isset( $_REQUEST['grpage'] ) ? intval( $_REQUEST['grpage'] ) : $page;
    2626                $this->pag_num  = isset( $_REQUEST['num'] ) ? intval( $_REQUEST['num'] ) : $per_page;
    2727
    2828                if ( 'invites' == $type ) {
    29                         $this->groups = groups_get_invites_for_user( $user_id, $this->pag_num, $this->pag_page );
     29                        $this->groups = groups_get_invites_for_user( $user_id, $this->pag_num, $this->pag_page, $exclude );
    3030                } else if ( 'single-group' == $type ) {
    3131                        $group = new stdClass;
    3232                        $group->group_id = BP_Groups_Group::get_id_from_slug($slug);
    3333                        $this->groups    = array( $group );
    3434                } else {
    35                         $this->groups = groups_get_groups( array( 'type' => $type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'search_terms' => $search_terms, 'include' => $include, 'populate_extras' => $populate_extras ) );
     35                        $this->groups = groups_get_groups( array( 'type' => $type, 'per_page' => $this->pag_num, 'page' => $this->pag_page, 'user_id' => $user_id, 'search_terms' => $search_terms, 'include' => $include, 'exclude' => $exclude, 'populate_extras' => $populate_extras ) );
    3636                }
    3737
    3838                if ( 'invites' == $type ) {
     
    172172                'slug' => $slug, // Pass a group slug to only return that group
    173173                'search_terms' => $search_terms, // Pass search terms to return only matching groups
    174174                'include' => false, // Pass comma separated list of group ID's to return only these groups
     175                'exclude' => false, // Pass comma separated list of group ID's to exclude these groups
    175176
    176177                'populate_extras' => true // Get extra meta - is_member, is_banned
    177178        );
     
    179180        $r = wp_parse_args( $args, $defaults );
    180181        extract( $r );
    181182
    182         $groups_template = new BP_Groups_Template( (int)$user_id, $type, (int)$page, (int)$per_page, (int)$max, $slug, $search_terms, $include, (bool)$populate_extras );
     183        $groups_template = new BP_Groups_Template( (int)$user_id, $type, (int)$page, (int)$per_page, (int)$max, $slug, $search_terms, $include, (bool)$populate_extras, $exclude );
    183184        return apply_filters( 'bp_has_groups', $groups_template->has_groups(), &$groups_template );
    184185}
    185186