Skip to:
Content

BuddyPress.org


Ignore:
Timestamp:
02/05/2022 08:51:55 AM (4 years ago)
Author:
imath
Message:

Bring back custom order to xProfile field options sorting

r13147 introduced a regression about this type of xProfile field options order. To make sure we preserve it, we need to check $this->order_by value before sanitizing it otherwise the potential custom value is sanitized to ASC and the SQL sort part is never set to use the option_order db field.

Props oztaser, espellcaste, niftythree

Fixes #8623 (trunk)

File:
1 edited

Legend:

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

    r13147 r13231  
    571571                global $wpdb;
    572572
    573                 // Sanitize 'order_by'.
    574                 $order_by = bp_esc_sql_order( $this->order_by );
    575 
    576573                // This is done here so we don't have problems with sql injection.
    577                 if ( empty( $for_editing ) ) {
    578                         $sort_sql = "ORDER BY name {$order_by}";
     574                if ( empty( $for_editing ) && in_array( $this->order_by, array( 'asc', 'desc' ), true ) ) {
     575                        $sort_sql = sprintf( 'ORDER BY name %s', bp_esc_sql_order( $this->order_by ) );
    579576                } else {
    580577                        $sort_sql = 'ORDER BY option_order ASC';
     
    599596                 * @since 3.0.0 Added the `$this` parameter.
    600597                 *
    601                  * @param array             $children    Found children for a field.
    602                  * @param bool              $for_editing Whether or not the field is for editing.
    603                  * @param BP_XProfile_Field $this        Field object
     598                 * @param array             $children     Found children for a field.
     599                 * @param bool              $for_editing  Whether or not the field is for editing.
     600                 * @param BP_XProfile_Field $field_object BP_XProfile_Field Field object.
    604601                 */
    605602                return apply_filters( 'bp_xprofile_field_get_children', $children, $for_editing, $this );
Note: See TracChangeset for help on using the changeset viewer.