Skip to:
Content

BuddyPress.org

Ticket #7205: 7205-custom-orderby-1.diff

File 7205-custom-orderby-1.diff, 4.1 KB (added by tw2113, 2 years ago)
  • src/bp-activity/classes/class-bp-activity-activity.php

    diff --git src/bp-activity/classes/class-bp-activity-activity.php src/bp-activity/classes/class-bp-activity-activity.php
    index ad1266f7c..9087fa8e7 100644
    class BP_Activity_Activity { 
    381381
    382382                $bp = buddypress();
    383383                $r  = wp_parse_args( $args, array(
    384                         'page'              => 1,          // The current page.
    385                         'per_page'          => 25,         // Activity items per page.
    386                         'max'               => false,      // Max number of items to return.
    387                         'fields'            => 'all',      // Fields to include.
    388                         'sort'              => 'DESC',     // ASC or DESC.
    389                         'exclude'           => false,      // Array of ids to exclude.
    390                         'in'                => false,      // Array of ids to limit query by (IN).
    391                         'meta_query'        => false,      // Filter by activitymeta.
    392                         'date_query'        => false,      // Filter by date.
    393                         'filter_query'      => false,      // Advanced filtering - see BP_Activity_Query.
    394                         'filter'            => false,      // See self::get_filter_sql().
    395                         'scope'             => false,      // Preset activity arguments.
    396                         'search_terms'      => false,      // Terms to search by.
    397                         'display_comments'  => false,      // Whether to include activity comments.
    398                         'show_hidden'       => false,      // Show items marked hide_sitewide.
    399                         'spam'              => 'ham_only', // Spam status.
    400                         'update_meta_cache' => true,       // Whether or not to update meta cache.
    401                         'count_total'       => false,      // Whether or not to use count_total.
     384                        'page'              => 1,               // The current page.
     385                        'per_page'          => 25,              // Activity items per page.
     386                        'max'               => false,           // Max number of items to return.
     387                        'fields'            => 'all',           // Fields to include.
     388                        'sort'              => 'DESC',          // ASC or DESC.
     389                        'order_by'          => 'date_recorded', // Column to order by.
     390                        'exclude'           => false,           // Array of ids to exclude.
     391                        'in'                => false,           // Array of ids to limit query by (IN).
     392                        'meta_query'        => false,           // Filter by activitymeta.
     393                        'date_query'        => false,           // Filter by date.
     394                        'filter_query'      => false,           // Advanced filtering - see BP_Activity_Query.
     395                        'filter'            => false,           // See self::get_filter_sql().
     396                        'scope'             => false,           // Preset activity arguments.
     397                        'search_terms'      => false,           // Terms to search by.
     398                        'display_comments'  => false,           // Whether to include activity comments.
     399                        'show_hidden'       => false,           // Show items marked hide_sitewide.
     400                        'spam'              => 'ham_only',      // Spam status.
     401                        'update_meta_cache' => true,            // Whether or not to update meta cache.
     402                        'count_total'       => false,           // Whether or not to use count_total.
    402403                ) );
    403404
    404405                // Select conditions.
    class BP_Activity_Activity { 
    461462                        $sort = 'DESC';
    462463                }
    463464
     465                switch( $r['order_by'] ) {
     466                        case 'id' :
     467                        case 'user_id' :
     468                        case 'component' :
     469                        case 'type' :
     470                        case 'action' :
     471                        case 'content' :
     472                        case 'primary_link' :
     473                        case 'item_id' :
     474                        case 'secondary_item_id' :
     475                        case 'date_recorded' :
     476                        case 'hide_sitewide' :
     477                        case 'mptt_left' :
     478                        case 'mptt_right' :
     479                        case 'is_spam' :
     480                                break;
     481
     482                        default :
     483                                $r['order_by'] = 'date_recorded';
     484                                break;
     485                }
     486                $order_by = 'a.' . $r['order_by'];
     487
    464488                // Hide Hidden Items?
    465489                if ( ! $r['show_hidden'] ) {
    466490                        $where_conditions['hidden_sql'] = "a.hide_sitewide = 0";
    class BP_Activity_Activity { 
    607631
    608632                } else {
    609633                        // Query first for activity IDs.
    610                         $activity_ids_sql = "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY a.date_recorded {$sort}, a.id {$sort}";
     634                        $activity_ids_sql = "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY {$order_by} {$sort}, a.id {$sort}";
    611635
    612636                        if ( ! empty( $per_page ) && ! empty( $page ) ) {
    613637                                // We query for $per_page + 1 items in order to