diff --git a/includes/admin/post-types/meta-boxes/class-sp-meta-box-event-performance.php b/includes/admin/post-types/meta-boxes/class-sp-meta-box-event-performance.php index 83bc1819..d1eb6146 100644 --- a/includes/admin/post-types/meta-boxes/class-sp-meta-box-event-performance.php +++ b/includes/admin/post-types/meta-boxes/class-sp-meta-box-event-performance.php @@ -4,7 +4,7 @@ * * @author ThemeBoy * @category Admin - * @package SportsPress/Admin/Meta Boxes + * @package SportsPress/Admin/Meta_Boxes * @version 0.8 */ @@ -19,11 +19,10 @@ class SP_Meta_Box_Event_Performance { * Output the metabox */ public static function output( $post ) { - $teams = (array)get_post_meta( $post->ID, 'sp_team', false ); - $stats = (array)get_post_meta( $post->ID, 'sp_players', true ); + $event = new SP_Event( $post ); + list( $labels, $columns, $stats, $teams ) = $event->performance( true ); - // Get columns from performance variables - $columns = sp_get_var_labels( 'sp_performance' ); + $i = 0; foreach ( $teams as $key => $team_id ): if ( ! $team_id ) continue; @@ -35,10 +34,10 @@ class SP_Meta_Box_Event_Performance { ?>

- +
@@ -60,8 +60,17 @@ class SP_Meta_Box_Event_Performance { - - + $label ): ?> + @@ -76,7 +85,7 @@ class SP_Meta_Box_Event_Performance { - $label ): + $label ): $value = sp_array_value( $player_performance, $column, '' ); ?> - $label ): + $label ): $player_id = 0; $player_performance = sp_array_value( $data, 0, array() ); $value = sp_array_value( $player_performance, $column, '' ); diff --git a/includes/admin/post-types/meta-boxes/class-sp-meta-box-event-results.php b/includes/admin/post-types/meta-boxes/class-sp-meta-box-event-results.php index 8c1201c4..8bfb1940 100644 --- a/includes/admin/post-types/meta-boxes/class-sp-meta-box-event-results.php +++ b/includes/admin/post-types/meta-boxes/class-sp-meta-box-event-results.php @@ -4,7 +4,7 @@ * * @author ThemeBoy * @category Admin - * @package SportsPress/Admin/Meta Boxes + * @package SportsPress/Admin/Meta_Boxes * @version 0.8 */ @@ -19,21 +19,9 @@ class SP_Meta_Box_Event_Results { * Output the metabox */ public static function output( $post ) { - $teams = (array)get_post_meta( $post->ID, 'sp_team', false ); - - $results = (array)get_post_meta( $post->ID, 'sp_results', true ); - - // Get columns from result variables - $columns = sp_get_var_labels( 'sp_result' ); - - // Get results for all teams - $data = sp_array_combine( $teams, $results ); - - ?> -
- -
- results( true ); + self::table( $columns, $usecolumns, $data ); } /** @@ -42,12 +30,13 @@ class SP_Meta_Box_Event_Results { public static function save( $post_id, $post ) { $results = (array)sp_array_value( $_POST, 'sp_results', array() ); update_post_meta( $post_id, 'sp_results', $results ); + update_post_meta( $post_id, 'sp_result_columns', sp_array_value( $_POST, 'sp_result_columns', array() ) ); } /** * Admin edit table */ - public static function table( $columns = array(), $data = array() ) { + public static function table( $columns = array(), $usecolumns = array(), $data = array() ) { ?>
# + + + + + +
@@ -95,7 +104,7 @@ class SP_Meta_Box_Event_Performance {
 
@@ -55,9 +44,19 @@ class SP_Meta_Box_Event_Results { $label ): ?> - + - + diff --git a/includes/admin/settings/class-sp-settings-events.php b/includes/admin/settings/class-sp-settings-events.php index 050ffaa1..89a901a6 100644 --- a/includes/admin/settings/class-sp-settings-events.php +++ b/includes/admin/settings/class-sp-settings-events.php @@ -97,6 +97,23 @@ class SP_Settings_Events extends SP_Settings_Page { 'type' => 'checkbox', ), + array( + 'title' => __( 'Staff', 'sportspress' ), + 'desc' => __( 'Display staff', 'sportspress' ), + 'id' => 'sportspress_event_show_staff', + 'default' => 'yes', + 'type' => 'checkbox', + 'checkboxgroup' => 'start', + ), + + array( + 'desc' => __( 'Link staff', 'sportspress' ), + 'id' => 'sportspress_event_link_staff', + 'default' => 'yes', + 'type' => 'checkbox', + 'checkboxgroup' => 'end', + ), + array( 'type' => 'sectionend', 'id' => 'event_options' ), array( 'title' => __( 'Calendars', 'sportspress' ), 'type' => 'title', 'id' => 'calendar_options' ), diff --git a/includes/class-sp-event.php b/includes/class-sp-event.php index 0090610e..b3186d1f 100644 --- a/includes/class-sp-event.php +++ b/includes/class-sp-event.php @@ -23,22 +23,53 @@ class SP_Event extends SP_Custom_Post{ return $post_status; } - public function performance() { + public function results( $admin = false ) { + $teams = (array)get_post_meta( $this->ID, 'sp_team', false ); + $results = (array)get_post_meta( $this->ID, 'sp_results', true ); + + // Get columns from result variables + $columns = sp_get_var_labels( 'sp_result' ); + + // Get result columns to display + $usecolumns = get_post_meta( $this->ID, 'sp_result_columns', true ); + + // Get results for all teams + $data = sp_array_combine( $teams, $results ); + + if ( $admin ): + return array( $columns, $usecolumns, $data ); + else: + // Add outcome to result columns + $columns['outcome'] = __( 'Outcome', 'sportspress' ); + if ( ! is_array( $usecolumns ) ) + $usecolumns = array(); + foreach ( $columns as $key => $label ): + if ( ! in_array( $key, $usecolumns ) ): + unset( $columns[ $key ] ); + endif; + endforeach; + $data[0] = $columns; + return $data; + endif; + } + + public function performance( $admin = false ) { $teams = (array)get_post_meta( $this->ID, 'sp_team', false ); $performance = (array)get_post_meta( $this->ID, 'sp_players', true ); - $performance_labels = sp_get_var_labels( 'sp_performance' ); + $labels = sp_get_var_labels( 'sp_performance' ); + $columns = get_post_meta( $this->ID, 'sp_columns', true ); $output = array(); foreach( $teams as $i => $team_id ): $players = sp_array_between( (array)get_post_meta( $this->ID, 'sp_player', false ), 0, $i ); $data = sp_array_combine( $players, sp_array_value( $performance, $team_id, array() ) ); $totals = array(); - foreach( $performance_labels as $key => $label ): + foreach( $labels as $key => $label ): $totals[ $key ] = 0; endforeach; foreach( $data as $player_id => $player_performance ): - foreach( $performance_labels as $key => $label ): + foreach( $labels as $key => $label ): if ( array_key_exists( $key, $totals ) ): $totals[ $key ] += sp_array_value( $player_performance, $key, 0 ); endif; @@ -74,7 +105,21 @@ class SP_Event extends SP_Custom_Post{ ); endforeach; - return $output; + if ( $admin ): + return array( $labels, $columns, $performance, $teams ); + else: + // Add status to performance labels + $labels['status'] = __( 'Status', 'sportspress' ); + if ( ! is_array( $columns ) ) + $columns = array(); + foreach ( $labels as $key => $label ): + if ( ! in_array( $key, $columns ) ): + unset( $labels[ $key ] ); + endif; + endforeach; + $performance[0] = $labels; + return $performance; + endif; } public function lineup_filter( $v ) { diff --git a/includes/sp-template-hooks.php b/includes/sp-template-hooks.php index 03ca6103..be4c6a39 100644 --- a/includes/sp-template-hooks.php +++ b/includes/sp-template-hooks.php @@ -7,7 +7,7 @@ * @author ThemeBoy * @category Core * @package SportsPress/Functions - * @version 0.8.4 + * @version 1.1 */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly @@ -107,6 +107,7 @@ function sportspress_the_title( $title, $id = null ) { endif; elseif ( is_singular( 'sp_event' ) && get_option( 'sportspress_event_show_logos', 'yes' ) == 'yes' ): $teams = get_post_meta( $id, 'sp_team' ); + $teams = array_filter( $teams ); if ( $teams ): $title .= '
'; $delimiter = get_option( 'sportspress_event_teams_delimiter', 'vs' ); diff --git a/templates/event-performance.php b/templates/event-performance.php index e2448324..b590574f 100644 --- a/templates/event-performance.php +++ b/templates/event-performance.php @@ -13,32 +13,35 @@ if ( ! isset( $id ) ) $id = get_the_ID(); $event = new SP_Event( $id ); +$data = $event->performance(); + +// The first row should be column labels +$labels = $data[0]; + +// Remove the first row to leave us with the actual data +unset( $data[0] ); + +$data = array_filter( $data ); $teams = (array)get_post_meta( $id, 'sp_team', false ); -$staff = (array)get_post_meta( $id, 'sp_staff', false ); - $status = $event->status(); -$stats = (array)get_post_meta( $id, 'sp_players', true ); -if ( $status == 'results' ): - $performance_labels = sp_get_var_labels( 'sp_performance' ); -else: - $performance_labels = array(); -endif; $link_posts = get_option( 'sportspress_event_link_players', 'yes' ) == 'yes' ? true : false; $sortable = get_option( 'sportspress_enable_sortable_tables', 'yes' ) == 'yes' ? true : false; $responsive = get_option( 'sportspress_enable_responsive_tables', 'yes' ) == 'yes' ? true : false; -foreach( $teams as $key => $team_id ): +foreach( $teams as $index => $team_id ): if ( ! $team_id ) continue; + // 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 ( ! $has_players && $status != 'results' ) continue; + $totals = array(); - // Get results for players in the team - $players = sp_array_between( (array)get_post_meta( $id, 'sp_player', false ), 0, $key ); - $has_players = sizeof( $players ) > 1; - - $data = sp_array_combine( $players, sp_array_value( $stats, $team_id, array() ) ); + $data = sp_array_combine( $players, sp_array_value( $data, $team_id, array() ) ); ?>

@@ -47,8 +50,8 @@ foreach( $teams as $key => $team_id ):
- - $label ): ?> + + $label ): ?> @@ -101,7 +104,7 @@ foreach( $teams as $key => $team_id ): echo ''; - foreach( $performance_labels as $key => $label ): + foreach( $labels as $key => $label ): if ( $key == 'name' ) continue; if ( array_key_exists( $key, $row ) && $row[ $key ] != '' ): @@ -135,7 +138,7 @@ foreach( $teams as $key => $team_id ): $row = $data[0]; - foreach( $performance_labels as $key => $label ): + foreach( $labels as $key => $label ): if ( $key == 'name' ): continue; endif; @@ -152,4 +155,5 @@ foreach( $teams as $key => $team_id ):
+ + + +
#
' . $name . '
+ $id, 'index' => $index ) ); ?> get_option( 'sportspress_event_show_outcomes', 'yes' ) == 'yes' ? true : false, -); +$event = new SP_Event( $id ); +$status = $event->status(); -extract( $defaults, EXTR_SKIP ); +if ( 'results' != $status ) return; -$teams = (array)get_post_meta( $id, 'sp_team', false ); -$results = array_filter( sp_array_combine( $teams, (array)get_post_meta( $id, 'sp_results', true ) ), 'array_filter' ); -$result_labels = sp_get_var_labels( 'sp_result' ); +// Get event result data +$data = $event->results(); -$output = ''; +// The first row should be column labels +$labels = $data[0]; -// Initialize and check -$table_rows = ''; +// Remove the first row to leave us with the actual data +unset( $data[0] ); -$i = 0; +$data = array_filter( $data ); -if ( empty( $results ) ) +if ( empty( $data ) ) return false; -foreach( $results as $team_id => $result ): - if ( count( array_filter( $results ) ) ): +$show_outcomes = array_key_exists( 'outcome', $labels ); - if ( $show_outcomes ): - $outcomes = array(); - $result_outcome = $result['outcome']; - if ( ! is_array( $result_outcome ) ): - $result_outcome = (array) $result_outcome; - endif; +// Initialize +$output = ''; +$table_rows = ''; +$i = 0; + +foreach( $data as $team_id => $result ): + if ( $show_outcomes ): + $outcomes = array(); + $result_outcome = sp_array_value( $result, 'outcome' ); + if ( ! is_array( $result_outcome ) ): + $outcomes = array( '—' ); + else: foreach( $result_outcome as $outcome ): $the_outcome = get_page_by_path( $outcome, OBJECT, 'sp_outcome' ); if ( is_object( $the_outcome ) ): @@ -48,33 +52,32 @@ foreach( $results as $team_id => $result ): endif; endforeach; endif; - - unset( $result['outcome'] ); - - $table_rows .= ''; - - $table_rows .= '' . get_the_title( $team_id ) . ''; - - foreach( $result_labels as $key => $label ): - if ( $key == 'name' ) - continue; - if ( array_key_exists( $key, $result ) && $result[ $key ] != '' ): - $value = $result[ $key ]; - else: - $value = '—'; - endif; - $table_rows .= '' . $value . ''; - endforeach; - - if ( $show_outcomes ): - $table_rows .= '' . implode( ', ', $outcomes ) . ''; - endif; - - $table_rows .= ''; - - $i++; - endif; + + unset( $result['outcome'] ); + + $table_rows .= ''; + + $table_rows .= '' . get_the_title( $team_id ) . ''; + + foreach( $labels as $key => $label ): + if ( in_array( $key, array( 'name', 'outcome' ) ) ) + continue; + if ( array_key_exists( $key, $result ) && $result[ $key ] != '' ): + $value = $result[ $key ]; + else: + $value = '—'; + endif; + $table_rows .= '' . $value . ''; + endforeach; + + if ( $show_outcomes ): + $table_rows .= '' . implode( ', ', $outcomes ) . ''; + endif; + + $table_rows .= ''; + + $i++; endforeach; if ( empty( $table_rows ) ): @@ -88,12 +91,9 @@ else: $output .= '
' . '' . ''; - foreach( $result_labels as $key => $label ): + foreach( $labels as $key => $label ): $output .= ''; endforeach; - if ( $show_outcomes ): - $output .= ''; - endif; $output .= '' . '' . ''; $output .= $table_rows; $output .= '' . '
' . __( 'Team', 'sportspress' ) . '' . $label . '' . __( 'Outcome', 'sportspress' ) . '
' . '
'; diff --git a/templates/event-staff.php b/templates/event-staff.php index 98cf180e..8730c83f 100644 --- a/templates/event-staff.php +++ b/templates/event-staff.php @@ -4,15 +4,67 @@ * * @author ThemeBoy * @package SportsPress/Templates - * @version 0.8 + * @version 1.1 */ if ( ! defined( 'ABSPATH' ) ) exit; // Exit if accessed directly -if ( ! isset( $id ) ) - $id = get_the_ID(); -$staff = (array)get_post_meta( $id, 'sp_staff', false ); +$defaults = array( + 'id' => get_the_ID(), + 'index' => 0, + 'number' => -1, + 'link_posts' => get_option( 'sportspress_event_link_staff', 'yes' ) == 'yes' ? true : false, + 'sortable' => get_option( 'sportspress_enable_sortable_tables', 'yes' ) == 'yes' ? true : false, + 'responsive' => get_option( 'sportspress_enable_responsive_tables', 'yes' ) == 'yes' ? true : false, +); -$output = ''; +$staff = array_filter( sp_array_between( (array)get_post_meta( $id, 'sp_staff', false ), 0, $index ) ); -echo apply_filters( 'sportspress_event_staff', $output ); +if ( ! $staff ) return; + +extract( $defaults, EXTR_SKIP ); +?> +
+ + + + + + + + + '; + + if ( $link_posts ): + $permalink = get_post_permalink( $staff_id ); + $name = '' . $name . ''; + endif; + + echo ''; + + $role = get_post_meta( $staff_id, 'sp_role', true ); + + // Staff role + echo ''; + + echo ''; + + $i++; + + endforeach; + ?> + +
' . $name . '' . $role . '
+
\ No newline at end of file