Skip to:
Content

BuddyPress.org

Ticket #921: 921.03.diff

File 921.03.diff, 13.8 KB (added by boonebgorges, 11 years ago)
  • bp-groups/bp-groups-classes.php

    diff --git bp-groups/bp-groups-classes.php bp-groups/bp-groups-classes.php
    index 2ed7441..bed0eb7 100644
    class BP_Group_Member_Query extends BP_User_Query { 
    14601460                        'group_id'     => 0,
    14611461                        'group_role'   => array( 'member' ),
    14621462                        'is_confirmed' => true,
     1463                        'type'         => 'last_modified',
    14631464                ) );
    14641465
    14651466                $group_member_ids = $this->get_group_member_ids();
    class BP_Group_Member_Query extends BP_User_Query { 
    15621563
    15631564                /** ORDER BY clause ***************************************************/
    15641565
    1565                 // @todo For now, mimicking legacy behavior of
    1566                 // bp_group_has_members(), which has us order by date_modified
    1567                 // only. Should abstract it in the future
     1566                /**
     1567                 * The order for alphabetical type will be set in
     1568                 * BP_Group_Member_Query->set_orderby() In the group members
     1569                 * table, date_modified is the 'sortable' field available.
     1570                 * The two remaining types, last_modified and first_modified,
     1571                 * are managed here.
     1572                 */
     1573
     1574                if ( isset( $this->query_vars['type'] ) ) {
     1575                        $type = $this->query_vars['type'];
     1576                } else {
     1577                        $type = 'last_modified';
     1578                }
     1579
    15681580                $sql['orderby'] = "ORDER BY date_modified";
    15691581                $sql['order']   = "DESC";
    15701582
     1583                if ( 'first_modified' == $type ) {
     1584                        $sql['order'] = "ASC";
     1585                }
     1586
    15711587                /** LIMIT clause ******************************************************/
    15721588                $this->group_member_ids = $wpdb->get_col( "{$sql['select']} {$sql['where']} {$sql['orderby']} {$sql['order']} {$sql['limit']}" );
    15731589
    1574                 return $this->group_member_ids;
     1590                /**
     1591                 * You can filter the group member ids from here to build your custom query
     1592                 * if you defined a custom type using the action 'bp_groups_members_order_options'
     1593                 * for instance
     1594                 */
     1595                return apply_filters( 'bp_group_member_query_group_member_ids', $this->group_member_ids, $type, $this->query_vars['group_id'] );
    15751596        }
    15761597
    15771598        /**
    class BP_Group_Member_Query extends BP_User_Query { 
    15831604         * @param BP_User_Query $query BP_User_Query object.
    15841605         */
    15851606        public function set_orderby( $query ) {
    1586                 $gm_ids = $this->get_group_member_ids();
     1607
     1608                $gm_ids = $this->get_group_member_ids( $query->query_vars['type'] );
     1609
    15871610                if ( empty( $gm_ids ) ) {
    15881611                        $gm_ids = array( 0 );
    15891612                }
    15901613
    1591                 // The first param in the FIELD() clause is the sort column id
    1592                 $gm_ids = array_merge( array( 'u.id' ), wp_parse_id_list( $gm_ids ) );
    1593                 $gm_ids_sql = implode( ',', $gm_ids );
     1614                // No need to change the order of BP_User_Query in case type is alphabetical
     1615                if ( 'alphabetical' != $query->query_vars['type'] ) {
     1616                        // The first param in the FIELD() clause is the sort column id
     1617                        $gm_ids = array_merge( array( 'u.id' ), wp_parse_id_list( $gm_ids ) );
     1618                        $gm_ids_sql = implode( ',', $gm_ids );
    15941619
    1595                 $query->uid_clauses['orderby'] = "ORDER BY FIELD(" . $gm_ids_sql . ")";
     1620                        $query->uid_clauses['orderby'] = "ORDER BY FIELD(" . $gm_ids_sql . ")";
     1621                }
    15961622
    15971623                // Prevent this filter from running on future BP_User_Query
    15981624                // instances on the same page
  • bp-groups/bp-groups-template.php

    diff --git bp-groups/bp-groups-template.php bp-groups/bp-groups-template.php
    index 675409e..466cef9 100644
    function bp_group_member_admin_pagination() { 
    22822282                return $members_template->pag_links;
    22832283        }
    22842284
     2285/**
     2286 * Output the Group members template
     2287 *
     2288 * @since BuddyPress (?)
     2289 *
     2290 * @return string html output
     2291 */
     2292function bp_groups_members_template_part() {
     2293        ?>
     2294        <div class="item-list-tabs" id="subnav" role="navigation">
     2295                <ul>
     2296                        <li class="groups-members-search" role="search">
     2297                                <?php bp_directory_members_search_form(); ?>
     2298                        </li>
     2299
     2300                        <?php bp_groups_members_filter(); ?>
     2301                        <?php do_action( 'bp_members_directory_member_sub_types' ); ?>
     2302
     2303                </ul>
     2304        </div>
     2305
     2306        <div id="members-group-list" class="group_members dir-list">
     2307
     2308                <?php bp_get_template_part( 'groups/single/members' ); ?>
     2309
     2310        </div>
     2311        <?php
     2312}
     2313
     2314/**
     2315 * Output the Group members filters
     2316 *
     2317 * @since BuddyPress (?)
     2318 *
     2319 * @return string html output
     2320 */
     2321function bp_groups_members_filter() {
     2322        ?>
     2323        <li id="group_members-order-select" class="last filter">
     2324                <label for="group_members-order-by"><?php _e( 'Order By:', 'buddypress' ); ?></label>
     2325                <select id="group_members-order-by">
     2326                        <option value="last_modified"><?php _e( 'Newest', 'buddypress' ); ?></option>
     2327                        <option value="first_modified"><?php _e( 'Oldest', 'buddypress' ); ?></option>
     2328                        <option value="alphabetical"><?php _e( 'Alphabetical', 'buddypress' ); ?></option>
     2329
     2330                        <?php do_action( 'bp_groups_members_order_options' ); ?>
     2331
     2332                </select>
     2333        </li>
     2334        <?php
     2335}
    22852336
    22862337/***************************************************************************
    22872338 * Group Creation Process Template Tags
  • bp-templates/bp-legacy/buddypress-functions.php

    diff --git bp-templates/bp-legacy/buddypress-functions.php bp-templates/bp-legacy/buddypress-functions.php
    index 0cb3153..eeddc24 100644
    function bp_legacy_theme_ajax_querystring( $query_string, $object ) { 
    448448
    449449        $qs = array();
    450450
     451        /* Single Group Members specific case */
     452        if ( bp_is_group_members() ) {
     453                $object = 'group_members';
     454                $qs[]   = 'exclude_admins_mods=0';
     455        }
     456
    451457        /**
    452458         * Check if any cookie values are set. If there are then override the
    453459         * default params passed to the template loop.
    function bp_legacy_theme_object_template_loader() { 
    541547        if ( ! bp_current_action() )
    542548                bp_update_is_directory( true, bp_current_component() );
    543549
     550        $template_part = $object . '/' . $object . '-loop';
     551       
     552        if ( ! empty( $_POST['template'] ) )
     553                $template_part = sanitize_option( 'upload_path', $_POST['template'] );
     554
    544555        // Locate the object template
    545         bp_get_template_part( "$object/$object-loop" );
     556        bp_get_template_part( $template_part );
    546557        exit();
    547558}
    548559
  • bp-templates/bp-legacy/buddypress/groups/single/home.php

    diff --git bp-templates/bp-legacy/buddypress/groups/single/home.php bp-templates/bp-legacy/buddypress/groups/single/home.php
    index 55dd5b0..8499866 100644
     
    4747                                elseif ( bp_is_active( 'activity' ) ) : bp_get_template_part( 'groups/single/activity' );
    4848
    4949                                // Otherwise show members
    50                                 elseif ( bp_is_active( 'members'  ) ) : bp_get_template_part( 'groups/single/members'  );
     50                                elseif ( bp_is_active( 'members'  ) ) : bp_groups_members_template_part();
    5151
    5252                                endif;
    5353                               
     
    6161                                elseif ( bp_is_group_activity()   ) : bp_get_template_part( 'groups/single/activity'     );
    6262
    6363                                // Group Members
    64                                 elseif ( bp_is_group_members()    ) : bp_get_template_part( 'groups/single/members'      );
     64                                elseif ( bp_is_group_members()    ) : bp_groups_members_template_part();
    6565
    6666                                // Group Invitations
    6767                                elseif ( bp_is_group_invites()    ) : bp_get_template_part( 'groups/single/send-invites' );
  • bp-templates/bp-legacy/buddypress/groups/single/members.php

    diff --git bp-templates/bp-legacy/buddypress/groups/single/members.php bp-templates/bp-legacy/buddypress/groups/single/members.php
    index fb7b4e2..f1714a5 100644
     
    1 <?php if ( bp_group_has_members( 'exclude_admins_mods=0' ) ) : ?>
     1<?php if ( bp_group_has_members( bp_ajax_querystring( 'group_members' ) ) ) : ?>
    22
    33        <?php do_action( 'bp_before_group_members_content' ); ?>
    44
    5         <div class="item-list-tabs" id="subnav" role="navigation">
    6                 <ul>
    7 
    8                         <?php do_action( 'bp_members_directory_member_sub_types' ); ?>
    9 
    10                 </ul>
    11         </div>
    12 
    13         <div id="pag-top" class="pagination no-ajax">
     5        <div id="pag-top" class="pagination">
    146
    157                <div class="pag-count" id="member-count-top">
    168
     
    6355
    6456        <?php do_action( 'bp_after_group_members_list' ); ?>
    6557
    66         <div id="pag-bottom" class="pagination no-ajax">
     58        <div id="pag-bottom" class="pagination">
    6759
    6860                <div class="pag-count" id="member-count-bottom">
    6961
  • bp-templates/bp-legacy/css/buddypress.css

    diff --git bp-templates/bp-legacy/css/buddypress.css bp-templates/bp-legacy/css/buddypress.css
    index 81dd03f..995d650 100644
    body.activity-permalink #buddypress div.activity-comments div.acomment-content { 
    486486        float: right;
    487487        margin: -39px 0 0 0;
    488488}
    489 #buddypress div.dir-search input[type=text] {
     489#buddypress div.dir-search input[type=text],
     490#buddypress li.groups-members-search input[type=text] {
    490491        font-size: 90%;
    491492        padding: 1px 3px;
    492493}
    body.activity-permalink #buddypress div.activity-comments div.acomment-content { 
    581582#buddypress .standard-form select,
    582583#buddypress .standard-form input[type=password],
    583584#buddypress .dir-search input[type=search],
    584 #buddypress .dir-search input[type=text] {
     585#buddypress .dir-search input[type=text],
     586#buddypress .groups-members-search input[type=search],
     587#buddypress .groups-members-search input[type=text] {
    585588        border: 1px solid #ccc;
    586589        background: #fafafa;
    587590        border-radius: 0;
  • bp-templates/bp-legacy/js/buddypress.js

    diff --git bp-templates/bp-legacy/js/buddypress.js bp-templates/bp-legacy/js/buddypress.js
    index 350193e..562c734 100644
    jq(document).ready( function() { 
    1717        bp_init_activity();
    1818
    1919        /* Object filter and scope set. */
    20         var objects = [ 'members', 'groups', 'blogs', 'forums' ];
     20        var objects = [ 'members', 'groups', 'blogs', 'forums', 'group_members' ];
    2121        bp_init_objects( objects );
    2222
    2323        /* @mention Compose Scrolling */
    jq(document).ready( function() { 
    663663        /**** Directory Search ****************************************************/
    664664
    665665        /* The search form on all directory pages */
    666         jq('.dir-search').on( 'click', function(event) {
     666        jq('.dir-search, .groups-members-search').on( 'click', function(event) {
    667667                if ( jq(this).hasClass('no-ajax') )
    668668                        return;
    669669
    jq(document).ready( function() { 
    673673                        var css_id = jq('.item-list-tabs li.selected').attr('id').split( '-' );
    674674                        var object = css_id[0];
    675675
    676                         bp_filter_request( object, jq.cookie('bp-' + object + '-filter'), jq.cookie('bp-' + object + '-scope') , 'div.' + object, target.parent().children('label').children('input').val(), 1, jq.cookie('bp-' + object + '-extras') );
     676                        if ( 'members' == object && 'groups' == css_id[1] ) {
     677                                object = 'group_members';
     678                                var template = 'groups/single/members';
     679                        } else {
     680                                var template = null;
     681                        }
     682
     683                        bp_filter_request( object, jq.cookie('bp-' + object + '-filter'), jq.cookie('bp-' + object + '-scope') , 'div.' + object, target.parent().children('label').children('input').val(), 1, jq.cookie('bp-' + object + '-extras'), null, template );
    677684
    678685                        return false;
    679686                }
    jq(document).ready( function() { 
    721728                if ( jq('.dir-search input').length )
    722729                        search_terms = jq('.dir-search input').val();
    723730
     731                if ( jq( '.groups-members-search input' ).length )
     732                        search_terms = jq( '.groups-members-search input' ).val();
     733
     734                if ( 'members' == object && 'groups' == scope ) {
     735                        object = 'group_members';
     736                        var template = 'groups/single/members';
     737                } else {
     738                        var template = null;
     739                }
     740
    724741                if ( 'friends' == object )
    725742                        object = 'members';
    726743
    727                 bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, jq.cookie('bp-' + object + '-extras') );
     744                bp_filter_request( object, filter, scope, 'div.' + object, search_terms, 1, jq.cookie('bp-' + object + '-extras'), null, template );
    728745
    729746                return false;
    730747        });
    jq(document).ready( function() { 
    754771                        if ( jq('div.dir-search input').length )
    755772                                search_terms = jq('.dir-search input').val();
    756773
     774                        if ( jq( '.groups-members-search input' ).length )
     775                                search_terms = jq( '.groups-members-search input' ).val();
     776
     777                        if ( 'members' == object && 'groups' == css_id[1] ) {
     778                                var object = 'group_members';
     779                                var template = 'groups/single/members';
     780                        } else {
     781                                var template = null;
     782                        }
     783
    757784                        if ( jq(target).hasClass('next') )
    758785                                var page_number = Number( jq('.pagination span.current').html() ) + 1;
    759786                        else if ( jq(target).hasClass('prev') )
    jq(document).ready( function() { 
    767794                                var caller = null;
    768795                        }
    769796
    770                         bp_filter_request( object, jq.cookie('bp-' + object + '-filter'), jq.cookie('bp-' + object + '-scope'), 'div.' + object, search_terms, page_number, jq.cookie('bp-' + object + '-extras'), caller );
     797                        bp_filter_request( object, jq.cookie('bp-' + object + '-filter'), jq.cookie('bp-' + object + '-scope'), 'div.' + object, search_terms, page_number, jq.cookie('bp-' + object + '-extras'), caller, template );
    771798
    772799                        return false;
    773800                }
    jq(document).ready( function() { 
    966993        });
    967994
    968995        /* Add / Remove friendship buttons */
    969         jq('#members-dir-list').on('click', '.friendship-button a', function() {
     996        jq( '#members-dir-list, #members-group-list' ).on('click', '.friendship-button a', function() {
    970997                jq(this).parent().addClass('loading');
    971998                var fid = jq(this).attr('id');
    972999                fid = fid.split('-');
    function bp_init_objects(objects) { 
    13831410}
    13841411
    13851412/* Filter the current content list (groups/members/blogs/topics) */
    1386 function bp_filter_request( object, filter, scope, target, search_terms, page, extras, caller ) {
     1413function bp_filter_request( object, filter, scope, target, search_terms, page, extras, caller, template ) {
    13871414        if ( 'activity' == object )
    13881415                return false;
    13891416
    function bp_filter_request( object, filter, scope, target, search_terms, page, e 
    14121439        jq('.item-list-tabs li.selected').addClass('loading');
    14131440        jq('.item-list-tabs select option[value="' + filter + '"]').prop( 'selected', true );
    14141441
    1415         if ( 'friends' == object )
     1442        if ( 'friends' == object || 'group_members' == object ) {
    14161443                object = 'members';
     1444        }
    14171445
    14181446        if ( bp_ajax_request )
    14191447                bp_ajax_request.abort();
    function bp_filter_request( object, filter, scope, target, search_terms, page, e 
    14261454                'search_terms': search_terms,
    14271455                'scope': scope,
    14281456                'page': page,
    1429                 'extras': extras
     1457                'extras': extras,
     1458                'template':template
    14301459        },
    14311460        function(response)
    14321461        {