Order_Repository::handle_order_by( string $order_by )
Handles the order_by
clauses for events
Contents
Parameters
- $order_by
-
(string) (Required) The key used to order items.
Source
File: src/Tickets/Commerce/Repositories/Order_Repository.php
public function handle_order_by( $order_by ) { $check_orderby = $order_by; if ( ! is_array( $check_orderby ) ) { $check_orderby = explode( ' ', $check_orderby ); } $after = false; $loop = 0; foreach ( $check_orderby as $key => $value ) { $order_by = is_numeric( $key ) ? $value : $key; $default_order = Arr::get_in_any( [ $this->query_args, $this->default_args ], 'order', 'ASC' ); $order = is_numeric( $key ) ? $default_order : $value; // Let the first applied ORDER BY clause override the existing ones, then stack the ORDER BY clauses. $override = $loop === 0; switch ( $order_by ) { case 'purchaser_full_name': $this->order_by_purchaser_full_name( $order, $after, $override ); break; case 'purchaser_email': $this->order_by_purchaser_email( $order, $after, $override ); break; case 'total_value': $this->order_by_total_value( $order, $after, $override ); break; case 'status': $this->order_by_status( $order, $after, $override ); break; case 'gateway': $this->order_by_gateway( $order, $after, $override ); break; case 'gateway_id': $this->order_by_gateway_id( $order, $after, $override ); break; case '__none': unset( $this->query_args['orderby'] ); unset( $this->query_args['order'] ); break; default: $after = $after || 1 === $loop; if ( empty( $this->query_args['orderby'] ) ) { // In some versions of WP, [ $order_by, $order ] doesn't work as expected. Using explict value setting instead. $this->query_args['orderby'] = $order_by; $this->query_args['order'] = $order; } else { $add = [ $order_by => $order ]; // Make sure all `orderby` clauses have the shape `<orderby> => <order>`. $normalized = []; if ( ! is_array( $this->query_args['orderby'] ) ) { $this->query_args['orderby'] = [ $this->query_args['orderby'] => $this->query_args['order'] ]; } foreach ( $this->query_args['orderby'] as $k => $v ) { $the_order_by = is_numeric( $k ) ? $v : $k; $the_order = is_numeric( $k ) ? $default_order : $v; $normalized[ $the_order_by ] = $the_order; } $this->query_args['orderby'] = $normalized; $this->query_args['orderby'] = array_merge( $this->query_args['orderby'], $add ); } } } }
Changelog
Version | Description |
---|---|
5.5.0 | Introduced. |