diff --git a/modules/sportspress-individual-mode.php b/modules/sportspress-individual-mode.php index fa453ffe..245d306b 100644 --- a/modules/sportspress-individual-mode.php +++ b/modules/sportspress-individual-mode.php @@ -5,7 +5,7 @@ Plugin URI: http://themeboy.com/ Description: Modify SportsPress to work with individual (player vs player) sports. Author: ThemeBoy Author URI: http://themeboy.com/ -Version: 1.6 +Version: 1.7 */ // Exit if accessed directly @@ -17,7 +17,7 @@ if ( ! class_exists( 'SportsPress_Individual_Mode' ) ) : * Main SportsPress Individual Mode Class * * @class SportsPress_Individual_Mode - * @version 1.6 + * @version 1.7 */ class SportsPress_Individual_Mode { @@ -38,6 +38,7 @@ class SportsPress_Individual_Mode { add_filter( 'sportspress_register_post_type_table', array( $this, 'move_table_post_type' ), 99 ); add_filter( 'sportspress_settings_tabs_array', array( $this, 'remove_team_settings_tab' ), 99 ); add_filter( 'sportspress_get_settings_pages', array( $this, 'remove_team_settings' ), 99 ); + add_filter( 'sportspress_performance_options', array( $this, 'remove_performance_options' ), 99 ); add_filter( 'sportspress_player_options', array( $this, 'add_player_options' ), 99 ); add_filter( 'sportspress_player_settings', array( $this, 'add_player_settings' ), 99 ); add_filter( 'sportspress_next_steps', array( $this, 'remove_team_step' ), 99 ); @@ -67,7 +68,7 @@ class SportsPress_Individual_Mode { */ private function define_constants() { if ( !defined( 'SP_INDIVIDUAL_MODE_VERSION' ) ) - define( 'SP_INDIVIDUAL_MODE_VERSION', '1.6' ); + define( 'SP_INDIVIDUAL_MODE_VERSION', '1.7' ); if ( !defined( 'SP_INDIVIDUAL_MODE_URL' ) ) define( 'SP_INDIVIDUAL_MODE_URL', plugin_dir_url( __FILE__ ) ); @@ -171,6 +172,18 @@ class SportsPress_Individual_Mode { return $settings; } + /** + * Remove option to split players by team. + */ + public function remove_performance_options( $options ) { + foreach ( $options as $index => $option ) { + if ( 'sportspress_event_split_players_by_team' == sp_array_value( $option, 'id' ) ) { + unset( $options[ $index ] ); + } + } + return $options; + } + /** * Add options from teams to players tab. */ diff --git a/templates/event-performance-table-combined.php b/templates/event-performance-table-combined.php new file mode 100644 index 00000000..dc49923d --- /dev/null +++ b/templates/event-performance-table-combined.php @@ -0,0 +1,155 @@ + +
+ +

+ +
+ + + + + + + + $label ): ?> + + + + + + + + + $row ): + + if ( ! $player_id ) + continue; + + $name = get_the_title( $player_id ); + + if ( ! $name ) + continue; + + echo ''; + + if ( isset( $labels['number'] ) ): + $number = sp_array_value( $row, 'number', ' ' ); + + // Player number + echo ''; + endif; + + if ( $link_posts ): + $permalink = get_post_permalink( $player_id ); + $name = '' . $name . ''; + endif; + + echo ''; + + if ( $mode == 'icons' ) echo ''; + elseif ( intval( $value ) && $mode == 'icons' ): + $performance_id = sp_array_value( $performance_ids, $key, null ); + if ( $performance_id && has_post_thumbnail( $performance_id ) ): + echo str_repeat( get_the_post_thumbnail( $performance_id, 'sportspress-fit-mini' ) . ' ', $value ); + endif; + endif; + endforeach; + + if ( $mode == 'icons' ) echo ''; + + echo ''; + + $i++; + + endforeach; + + } + ?> + + + + +  '; + endif; + echo ''; + + $row = sp_array_value( $data, 0, array() ); + + if ( $mode == 'icons' ) echo ''; + elseif ( intval( $value ) && $mode == 'icons' ): + $performance_id = sp_array_value( $performance_ids, $key, null ); + if ( $performance_id && has_post_thumbnail( $performance_id ) ): + echo str_repeat( get_the_post_thumbnail( $performance_id, 'sportspress-fit-mini' ) . ' ', $value ); + endif; + endif; + endforeach; + + if ( $mode == 'icons' ) echo ''; + ?> + + + +
# 
' . $number . '' . $name . ''; + + foreach ( $labels as $key => $label ): + if ( in_array( $key, array( 'number', 'name' ) ) ) + continue; + $value = '—'; + if ( $key == 'position' ): + if ( array_key_exists( $key, $row ) && $row[ $key ] != '' ): + $positions = array(); + $position_ids = (array) $row[ $key ]; + foreach ( $position_ids as $position_id ) { + $player_position = get_term_by( 'id', $position_id, 'sp_position' ); + if ( $player_position ) $positions[] = $player_position->name; + } + $value = implode( ', ', $positions ); + endif; + else: + if ( array_key_exists( $key, $row ) && $row[ $key ] != '' ): + $value = $row[ $key ]; + else: + $value = 0; + endif; + endif; + if ( ! array_key_exists( $key, $totals ) ): + $totals[ $key ] = 0; + endif; + $totals[ $key ] += $value; + + if ( $mode == 'values' ): + echo '' . $value . '
' . __( 'Total', 'sportspress' ) . ''; + + foreach ( $labels as $key => $label ): + if ( in_array( $key, array( 'number', 'name' ) ) ) + continue; + if ( $key == 'position' ): + $value = '—'; + elseif ( array_key_exists( $key, $row ) && $row[ $key ] != '' ): + $value = $row[ $key ]; + else: + $value = sp_array_value( $totals, $key, 0 ); + endif; + + if ( $mode == 'values' ): + echo '' . $value . '
+
+
\ No newline at end of file diff --git a/templates/event-performance-table.php b/templates/event-performance-table.php index f89e6428..38686a67 100644 --- a/templates/event-performance-table.php +++ b/templates/event-performance-table.php @@ -4,7 +4,7 @@ * * @author ThemeBoy * @package SportsPress/Templates - * @version 1.6 + * @version 1.7 */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly @@ -13,11 +13,14 @@ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly $totals = array(); ?>
+ +

+
- +
- + @@ -37,7 +40,7 @@ $totals = array(); - + - <> + <>  '; } @@ -201,7 +204,7 @@ $totals = array(); ?>  '; } @@ -247,7 +250,7 @@ $totals = array(); - > + >
#
diff --git a/templates/event-performance.php b/templates/event-performance.php index 7f9f0aa8..db5237f1 100644 --- a/templates/event-performance.php +++ b/templates/event-performance.php @@ -43,6 +43,7 @@ if ( is_array( $teams ) ): $link_posts = get_option( 'sportspress_link_players', 'yes' ) == 'yes' ? true : false; $scrollable = get_option( 'sportspress_enable_scrollable_tables', 'yes' ) == 'yes' ? true : false; + $sortable = get_option( 'sportspress_enable_sortable_tables', 'yes' ) == 'yes' ? true : false; $mode = get_option( 'sportspress_event_performance_mode', 'values' ); // Get performance ids for icons @@ -83,18 +84,14 @@ if ( is_array( $teams ) ): } if ( ! $show_team_players && ! $show_staff && ! $show_extras && ! $show_total ) continue; - ?> - -

- - 'slug', ) ); - foreach ( $positions as $position ) { + foreach ( $positions as $position_index => $position ) { $subdata = array(); foreach ( $data as $player_id => $player ) { $player_positions = (array) sp_array_value( $player, 'position' ); @@ -138,10 +135,12 @@ if ( is_array( $teams ) ): sp_get_template( 'event-performance-table.php', array( 'position' => $position->name, 'scrollable' => $scrollable, - 'show_team_players' => $show_team_players, + 'sortable' => $sortable, + 'show_players' => $show_team_players, 'show_numbers' => $show_numbers, 'show_extras' => $show_extras, 'show_total' => $show_total, + 'caption' => 0 == $position_index && $team_id ? get_the_title( $team_id ) : null, 'labels' => $sublabels, 'mode' => $mode, 'data' => $subdata, @@ -155,10 +154,12 @@ if ( is_array( $teams ) ): } else { sp_get_template( 'event-performance-table.php', array( 'scrollable' => $scrollable, - 'show_team_players' => $show_team_players, + 'sortable' => $sortable, + 'show_players' => $show_team_players, 'show_numbers' => $show_numbers, 'show_extras' => $show_extras, 'show_total' => $show_total, + 'caption' => $team_id ? get_the_title( $team_id ) : null, 'labels' => $labels, 'mode' => $mode, 'data' => $data, @@ -178,173 +179,68 @@ if ( is_array( $teams ) ): endforeach; } else { // Combined table - ?> -

-
-
- - - - - - - - $label ): ?> - - - - - - - - - $team_id ) { - if ( -1 == $team_id ) continue; + $data = array(); + foreach ( $performance as $players ) { + foreach ( $players as $player_id => $player ) { + if ( $player_id <= 0 ) continue; + $data[ $player_id ] = $player; + } + } - // Get results for players in the team - $players = sp_array_between( (array) get_post_meta( $id, 'sp_player', false ), 0, $index ); - $has_players = sizeof( $players ) > 1; + if ( $split_positions ) { + $positions = get_terms( 'sp_position', array( + 'orderby' => 'slug', + ) ); - $show_team_players = $show_players && $has_players; - if ( ! $show_team_players && ! $show_total ) continue; + foreach ( $positions as $position_index => $position ) { + $subdata = array(); + foreach ( $data as $player_id => $player ) { + $player_positions = (array) sp_array_value( $player, 'position' ); + $player_positions = array_filter( $player_positions ); + if ( empty( $player_positions ) ) { + $player_positions = (array) sp_get_the_term_id( $player_id, 'sp_position' ); + } + if ( in_array( $position->term_id, $player_positions ) ) { + $subdata[ $player_id ] = $data[ $player_id ]; + } + } - $totals = array(); - - if ( 0 < $team_id ) { - $data = sp_array_combine( $players, sp_array_value( $performance, $team_id, array() ) ); - } elseif ( 0 == $team_id ) { - $data = array(); - foreach ( $players as $player_id ) { - if ( isset( $performance[ $player_id ][ $player_id ] ) ) { - $data[ $player_id ] = $performance[ $player_id ][ $player_id ]; - } - } - } else { - $data = sp_array_value( array_values( $performance ), $index ); - } - - if ( $show_team_players ) { - - $i = 0; - foreach ( $data as $player_id => $row ): - - if ( ! $player_id ) - continue; - - $name = get_the_title( $player_id ); - - if ( ! $name ) - continue; - - echo ''; - - if ( isset( $labels['number'] ) ): - $number = sp_array_value( $row, 'number', ' ' ); - - // Player number - echo ''; - endif; - - if ( $link_posts ): - $permalink = get_post_permalink( $player_id ); - $name = '' . $name . ''; - endif; - - echo ''; - - if ( $mode == 'icons' ) echo ''; - elseif ( intval( $value ) && $mode == 'icons' ): - $performance_id = sp_array_value( $performance_ids, $key, null ); - if ( $performance_id && has_post_thumbnail( $performance_id ) ): - echo str_repeat( get_the_post_thumbnail( $performance_id, 'sportspress-fit-mini' ) . ' ', $value ); - endif; - endif; - endforeach; - - if ( $mode == 'icons' ) echo ''; - - echo ''; - - $i++; - - endforeach; - - } - } - ?> - - - - -  '; - endif; - echo ''; - - $row = sp_array_value( $data, 0, array() ); - - if ( $mode == 'icons' ) echo ''; - elseif ( intval( $value ) && $mode == 'icons' ): - $performance_id = sp_array_value( $performance_ids, $key, null ); - if ( $performance_id && has_post_thumbnail( $performance_id ) ): - echo str_repeat( get_the_post_thumbnail( $performance_id, 'sportspress-fit-mini' ) . ' ', $value ); - endif; - endif; - endforeach; - - if ( $mode == 'icons' ) echo ''; - ?> - - - -
# 
' . $number . '' . $name . ''; - - foreach ( $labels as $key => $label ): - if ( in_array( $key, array( 'number', 'name' ) ) ) - continue; - $value = '—'; - if ( $key == 'position' ): - if ( array_key_exists( $key, $row ) && $row[ $key ] != '' ): - $positions = array(); - $position_ids = (array) $row[ $key ]; - foreach ( $position_ids as $position_id ) { - $player_position = get_term_by( 'id', $position_id, 'sp_position' ); - if ( $player_position ) $positions[] = $player_position->name; - } - $value = implode( ', ', $positions ); - endif; - else: - if ( array_key_exists( $key, $row ) && $row[ $key ] != '' ): - $value = $row[ $key ]; - else: - $value = 0; - endif; - endif; - if ( ! array_key_exists( $key, $totals ) ): - $totals[ $key ] = 0; - endif; - $totals[ $key ] += $value; - - if ( $mode == 'values' ): - echo '' . $value . '
' . __( 'Total', 'sportspress' ) . ''; - - foreach ( $labels as $key => $label ): - if ( in_array( $key, array( 'number', 'name' ) ) ) - continue; - if ( $key == 'position' ): - $value = '—'; - elseif ( array_key_exists( $key, $row ) && $row[ $key ] != '' ): - $value = $row[ $key ]; - else: - $value = sp_array_value( $totals, $key, 0 ); - endif; - - if ( $mode == 'values' ): - echo '' . $value . '
-
-
- $scrollable, + 'sortable' => $sortable, + 'show_players' => $show_players, + 'show_numbers' => $show_numbers, + 'show_extras' => $show_extras, + 'show_total' => $show_total, + 'caption' => $position->name, + 'labels' => $labels, + 'mode' => $mode, + 'data' => $subdata, + 'event' => $event, + 'link_posts' => $link_posts, + 'performance_ids' => isset( $performance_ids ) ? $performance_ids : null, + 'primary' => 'primary' == $total ? $primary : null, + ) ); + } + } + } else { + sp_get_template( 'event-performance-table-combined.php', array( + 'scrollable' => $scrollable, + 'sortable' => $sortable, + 'show_players' => $show_players, + 'show_numbers' => $show_numbers, + 'show_extras' => $show_extras, + 'show_total' => $show_total, + 'caption' => __( 'Performance', 'sportspress' ), + 'labels' => $labels, + 'mode' => $mode, + 'data' => $data, + 'event' => $event, + 'link_posts' => $link_posts, + 'performance_ids' => isset( $performance_ids ) ? $performance_ids : null, + 'primary' => 'primary' == $total ? $primary : null, + ) ); + } } endif;