Skip to:
Content

BuddyPress.org

Changeset 11580


Ignore:
Timestamp:
06/07/2017 02:01:53 AM (9 years ago)
Author:
tw2113
Message:

Adds support for customizing the orderby parameer for BP_Activity_Acitivty::get() method.

Fixes #7205.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/bp-activity/classes/class-bp-activity-activity.php

    r11516 r11580  
    321321         * @since 1.2.0
    322322         * @since 2.4.0 Introduced the `$fields` parameter.
     323         * @since 2.9.0 Introduced the `$order_by` parameter.
    323324         *
    324325         * @see BP_Activity_Activity::get_filter_sql() for a description of the
     
    336337         *                                           'all' returns full activity objects.
    337338         *     @type string       $sort              ASC or DESC. Default: 'DESC'.
     339         *     @type string       $order_by          Column to order results by.
    338340         *     @type array        $exclude           Array of activity IDs to exclude. Default: false.
    339341         *     @type array        $in                Array of ids to limit query by (IN). Default: false.
     
    382384                $bp = buddypress();
    383385                $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.
     386                        'page'              => 1,               // The current page.
     387                        'per_page'          => 25,              // Activity items per page.
     388                        'max'               => false,           // Max number of items to return.
     389                        'fields'            => 'all',           // Fields to include.
     390                        'sort'              => 'DESC',          // ASC or DESC.
     391                        'order_by'          => 'date_recorded', // Column to order by.
     392                        'exclude'           => false,           // Array of ids to exclude.
     393                        'in'                => false,           // Array of ids to limit query by (IN).
     394                        'meta_query'        => false,           // Filter by activitymeta.
     395                        'date_query'        => false,           // Filter by date.
     396                        'filter_query'      => false,           // Advanced filtering - see BP_Activity_Query.
     397                        'filter'            => false,           // See self::get_filter_sql().
     398                        'scope'             => false,           // Preset activity arguments.
     399                        'search_terms'      => false,           // Terms to search by.
     400                        'display_comments'  => false,           // Whether to include activity comments.
     401                        'show_hidden'       => false,           // Show items marked hide_sitewide.
     402                        'spam'              => 'ham_only',      // Spam status.
     403                        'update_meta_cache' => true,            // Whether or not to update meta cache.
     404                        'count_total'       => false,           // Whether or not to use count_total.
    402405                ) );
    403406
     
    461464                        $sort = 'DESC';
    462465                }
     466
     467                switch( $r['order_by'] ) {
     468                        case 'id' :
     469                        case 'user_id' :
     470                        case 'component' :
     471                        case 'type' :
     472                        case 'action' :
     473                        case 'content' :
     474                        case 'primary_link' :
     475                        case 'item_id' :
     476                        case 'secondary_item_id' :
     477                        case 'date_recorded' :
     478                        case 'hide_sitewide' :
     479                        case 'mptt_left' :
     480                        case 'mptt_right' :
     481                        case 'is_spam' :
     482                                break;
     483
     484                        default :
     485                                $r['order_by'] = 'date_recorded';
     486                                break;
     487                }
     488                $order_by = 'a.' . $r['order_by'];
    463489
    464490                // Hide Hidden Items?
     
    608634                } else {
    609635                        // 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}";
     636                        $activity_ids_sql = "{$select_sql} {$from_sql} {$join_sql} {$where_sql} ORDER BY {$order_by} {$sort}, a.id {$sort}";
    611637
    612638                        if ( ! empty( $per_page ) && ! empty( $page ) ) {
Note: See TracChangeset for help on using the changeset viewer.