From 60346c1f6a0f0ed32f68470cc323d839572e79da Mon Sep 17 00:00:00 2001 From: savvasha Date: Wed, 19 Dec 2018 07:15:10 +0200 Subject: [PATCH] First Commit for bypassing default ordering of league tables --- .../class-sp-meta-box-table-details.php | 29 ++++++++++++++ includes/class-sp-league-table.php | 40 ++++++++++++++++++- 2 files changed, 68 insertions(+), 1 deletion(-) diff --git a/includes/admin/post-types/meta-boxes/class-sp-meta-box-table-details.php b/includes/admin/post-types/meta-boxes/class-sp-meta-box-table-details.php index 879bd4a2..7b6e562a 100644 --- a/includes/admin/post-types/meta-boxes/class-sp-meta-box-table-details.php +++ b/includes/admin/post-types/meta-boxes/class-sp-meta-box-table-details.php @@ -29,6 +29,8 @@ class SP_Meta_Box_Table_Details { $date_to = get_post_meta( $post->ID, 'sp_date_to', true ); $date_past = get_post_meta( $post->ID, 'sp_date_past', true ); $date_relative = get_post_meta( $post->ID, 'sp_date_relative', true ); + $orderby = get_post_meta( $post->ID, 'sp_orderby', true ); + $order = get_post_meta( $post->ID, 'sp_order', true ); ?>

@@ -90,6 +92,31 @@ class SP_Meta_Box_Table_Details { } ?>
+

+

+ array( + 'default' => __( 'Default', 'sportspress' ), + 'name' => __( 'Name', 'sportspress' ), + ), + 'post_type' => array( 'sp_column' ), + 'name' => 'sp_orderby', + 'selected' => $orderby, + 'values' => 'slug', + ); + sp_dropdown_pages( $args ); + ?> +

+ +

+

+ +

+ ID, 'sp_columns', true ); $adjustments = get_post_meta( $this->ID, 'sp_adjustments', true ); $select = get_post_meta( $this->ID, 'sp_select', true ); + $this->orderby = get_post_meta( $this->ID, 'sp_orderby', true ); + $this->orderbyorder = get_post_meta( $this->ID, 'sp_order', true ); $link_events = get_option( 'sportspress_link_events', 'yes' ) === 'yes' ? true : false; $form_limit = (int) get_option( 'sportspress_form_limit', 5 ); @@ -47,7 +53,10 @@ class SP_League_Table extends SP_Secondary_Post { $this->date = 0; // Apply defaults + if ( empty( $this->orderby ) ) $this->orderby = 'default'; + if ( empty( $this->orderbyorder ) ) $this->orderbyorder = 'ASC'; if ( empty( $select ) ) $select = 'auto'; + if ( 'range' == $this->date ) { @@ -752,7 +761,12 @@ class SP_League_Table extends SP_Secondary_Post { $merged[ $team_id ]['pos'] = $this->calculate_pos( $team_columns, $team_id, false ); } } - +var_dump($merged); + // Rearrange the table if Default ordering is not selected + if ( $this->orderby != 'default' ) { + uasort( $merged, array( $this, 'simple_order' ) ); + } + // Rearrange data array to reflect values $data = array(); foreach( $merged as $key => $value ): @@ -804,6 +818,30 @@ class SP_League_Table extends SP_Secondary_Post { // Default sort by alphabetical return strcmp( sp_array_value( $a, 'name', '' ), sp_array_value( $b, 'name', '' ) ); } + + /** + * Sort the table by ordering. + * + * @param array $a + * @param array $b + * @return int + */ + public function simple_order( $a, $b ) { + + if ( $this->orderbyorder == 'DESC' ) { + if ( $this->orderby == 'name' ){ + return strcmp( sp_array_value( $b, 'name', '' ), sp_array_value( $a, 'name', '' ) ); + }else{ + return $b[ $this->orderby ] - $a[ $this->orderby ]; + } + }else{ + if ( $this->orderby == 'name' ){ + return strcmp( sp_array_value( $a, 'name', '' ), sp_array_value( $b, 'name', '' ) ); + }else{ + return $a[ $this->orderby ] - $b[ $this->orderby ]; + } + } + } /** * Find accurate position of teams.