Fix event results save function
This commit is contained in:
@@ -82,18 +82,15 @@ function sp_event_results_meta( $post ) {
|
|||||||
$results = (array)get_post_meta( $post->ID, 'sp_results', true );
|
$results = (array)get_post_meta( $post->ID, 'sp_results', true );
|
||||||
|
|
||||||
// Get results for all teams
|
// Get results for all teams
|
||||||
$data = sp_array_combine( $teams, sp_array_value( $results, 0, array() ) );
|
$data = sp_array_combine( $teams, $results );
|
||||||
|
|
||||||
// Get column names from settings
|
// Get column names from settings
|
||||||
$stats_settings = get_option( 'sportspress_stats' );
|
$stats_settings = get_option( 'sportspress_stats' );
|
||||||
$columns = sp_get_eos_keys( $stats_settings['event'] );
|
|
||||||
|
|
||||||
// Add first column label
|
|
||||||
array_unshift( $columns, __( 'Team', 'sportspress' ) );
|
|
||||||
|
|
||||||
|
$columns = sp_get_var_columns( 'sp_result', $post->ID );
|
||||||
?>
|
?>
|
||||||
<div>
|
<div>
|
||||||
<?php sp_stats_table( $data, array(), 0, $columns, false, 'post', 'sp_results' ); ?>
|
<?php sp_results_table( $columns, $data, array() ); ?>
|
||||||
</div>
|
</div>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -132,15 +132,6 @@ function sp_save_post( $post_id ) {
|
|||||||
// Update results
|
// Update results
|
||||||
update_post_meta( $post_id, 'sp_results', $results );
|
update_post_meta( $post_id, 'sp_results', $results );
|
||||||
|
|
||||||
// Delete result values
|
|
||||||
delete_post_meta( $post_id, 'sp_result');
|
|
||||||
|
|
||||||
// Add result values for each team (first column of results table)
|
|
||||||
$teams = (array)sp_array_value( $results, 0, null );
|
|
||||||
foreach ( $teams as $team ):
|
|
||||||
add_post_meta( $post_id, 'sp_result', sp_array_value( $team, 0, null ) );
|
|
||||||
endforeach;
|
|
||||||
|
|
||||||
// Update stats
|
// Update stats
|
||||||
update_post_meta( $post_id, 'sp_stats', sp_array_value( $_POST, 'sp_stats', array() ) );
|
update_post_meta( $post_id, 'sp_stats', sp_array_value( $_POST, 'sp_stats', array() ) );
|
||||||
|
|
||||||
|
|||||||
@@ -383,6 +383,28 @@ if ( !function_exists( 'sp_get_eos_keys' ) ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if ( !function_exists( 'sp_get_var_columns' ) ) {
|
||||||
|
function sp_get_var_columns( $post_type, $exclude ) {
|
||||||
|
$args = array(
|
||||||
|
'post_type' => $post_type,
|
||||||
|
'numberposts' => -1,
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'orderby' => 'menu_order',
|
||||||
|
'order' => 'ASC',
|
||||||
|
'exclude' => $exclude
|
||||||
|
);
|
||||||
|
$vars = get_posts( $args );
|
||||||
|
|
||||||
|
$output = array();
|
||||||
|
foreach ( $vars as $var ):
|
||||||
|
$output[ $var->post_name ] = $var->post_title;
|
||||||
|
endforeach;
|
||||||
|
|
||||||
|
return $output;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( !function_exists( 'sp_get_stats_row' ) ) {
|
if ( !function_exists( 'sp_get_stats_row' ) ) {
|
||||||
function sp_get_stats_row( $post_id, $post_type = 'post', $args = array(), $static = false ) {
|
function sp_get_stats_row( $post_id, $post_type = 'post', $args = array(), $static = false ) {
|
||||||
$args = array_merge(
|
$args = array_merge(
|
||||||
@@ -415,7 +437,7 @@ if ( !function_exists( 'sp_get_stats_row' ) ) {
|
|||||||
'orderby' => 'menu_order',
|
'orderby' => 'menu_order',
|
||||||
'order' => 'ASC'
|
'order' => 'ASC'
|
||||||
);
|
);
|
||||||
$results = (array)get_posts( $args );
|
$result_vars = (array)get_posts( $args );
|
||||||
|
|
||||||
// Get outcome variables
|
// Get outcome variables
|
||||||
$args = array(
|
$args = array(
|
||||||
@@ -425,26 +447,26 @@ if ( !function_exists( 'sp_get_stats_row' ) ) {
|
|||||||
'orderby' => 'menu_order',
|
'orderby' => 'menu_order',
|
||||||
'order' => 'ASC'
|
'order' => 'ASC'
|
||||||
);
|
);
|
||||||
$outcomes = (array)get_posts( $args );
|
$outcome_vars = (array)get_posts( $args );
|
||||||
|
|
||||||
// Initialize outcome variables
|
// Initialize outcome variables
|
||||||
foreach( $outcomes as $outcome ):
|
foreach( $outcome_vars as $outcome_var ):
|
||||||
$vars[ $outcome->post_name ] = 0;
|
$vars[ $outcome_var->post_name ] = 0;
|
||||||
$vars[ $outcome->post_name . '_max' ] = 0;
|
$vars[ $outcome_var->post_name . '_max' ] = 0;
|
||||||
$vars[ $outcome->post_name . '_min' ] = 0;
|
$vars[ $outcome_var->post_name . '_min' ] = 0;
|
||||||
endforeach;
|
endforeach;
|
||||||
|
|
||||||
// Populate each result variable
|
// Populate each result variable
|
||||||
foreach( $results as $result ):
|
foreach( $result_vars as $result_var ):
|
||||||
|
|
||||||
// Initialize and add for element to array
|
// Initialize and add for element to array
|
||||||
if ( ! array_key_exists( $result->post_name, $vars . '_for' ) ):
|
if ( ! array_key_exists( $result_var->post_name, $vars . '_for' ) ):
|
||||||
$vars[ $result->post_name . '_for' ] = 0;
|
$vars[ $result_var->post_name . '_for' ] = 0;
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
// Initialize and add against element to array
|
// Initialize and add against element to array
|
||||||
if ( ! array_key_exists( $result->post_name, $vars . '_against' ) ):
|
if ( ! array_key_exists( $result_var->post_name, $vars . '_against' ) ):
|
||||||
$vars[ $result->post_name . '_against' ] = 0;
|
$vars[ $result_var->post_name . '_against' ] = 0;
|
||||||
endif;
|
endif;
|
||||||
|
|
||||||
foreach( $posts as $event ):
|
foreach( $posts as $event ):
|
||||||
@@ -453,15 +475,15 @@ if ( !function_exists( 'sp_get_stats_row' ) ) {
|
|||||||
$stats = get_post_meta( $event->ID, 'sp_stats', true );
|
$stats = get_post_meta( $event->ID, 'sp_stats', true );
|
||||||
|
|
||||||
// Get value for the team in this match
|
// Get value for the team in this match
|
||||||
$value = (double) sp_array_value( $stats[ $post_id ][0], $result->post_name, 0 );
|
$value = (double) sp_array_value( $stats[ $post_id ][0], $result_var->post_name, 0 );
|
||||||
|
|
||||||
// Add value for
|
// Add value for
|
||||||
$vars[ $result->post_name . '_for' ] += $value;
|
$vars[ $result_var->post_name . '_for' ] += $value;
|
||||||
|
|
||||||
// Add values against
|
// Add values against
|
||||||
foreach ( $stats as $team_post_id => $stat_array ):
|
foreach ( $stats as $team_post_id => $stat_array ):
|
||||||
if ( $team_post_id != $post_id ):
|
if ( $team_post_id != $post_id ):
|
||||||
$vars[ $result->post_name . '_against' ] += sp_array_value( $stat_array[0], $result->post_name, 0 );
|
$vars[ $result_var->post_name . '_against' ] += sp_array_value( $stat_array[0], $result_var->post_name, 0 );
|
||||||
endif;
|
endif;
|
||||||
endforeach;
|
endforeach;
|
||||||
|
|
||||||
@@ -638,6 +660,95 @@ if ( !function_exists( 'sp_stats_table' ) ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( !function_exists( 'sp_results_table' ) ) {
|
||||||
|
function sp_results_table( $columns = array(), $data = array(), $placeholders = array() ) {
|
||||||
|
?>
|
||||||
|
<table class="widefat sp-stats-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><?php _e( 'Team', 'sportspress' ); ?></th>
|
||||||
|
<?php foreach ( $columns as $label ): ?>
|
||||||
|
<th><?php echo $label; ?></th>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
$i = 0;
|
||||||
|
foreach ( $data as $team_id => $team_results ):
|
||||||
|
if ( !$team_id ) continue;
|
||||||
|
?>
|
||||||
|
<tr class="sp-row sp-post<?php if ( $i % 2 == 0 ) echo ' alternate'; ?>">
|
||||||
|
<td>
|
||||||
|
<?php echo get_the_title( $team_id ); ?>
|
||||||
|
</td>
|
||||||
|
<?php foreach( $columns as $column => $label ):
|
||||||
|
$value = sp_array_value( $team_results, $column, '' );
|
||||||
|
$placeholder = (int)sp_array_value( sp_array_value( $placeholders, $team_id, 0), $column, 0 );
|
||||||
|
?>
|
||||||
|
<td><input type="text" name="sp_results[<?php echo $team_id; ?>][<?php echo $column; ?>]" value="<?php echo $value; ?>" placeholder="<?php echo $placeholder; ?>" /></td>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tr>
|
||||||
|
<?php
|
||||||
|
$i++;
|
||||||
|
endforeach;
|
||||||
|
?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !function_exists( 'sp_players_table' ) ) {
|
||||||
|
function sp_players_table( $columns = array(), $data = array(), $placeholders = array() ) {
|
||||||
|
?>
|
||||||
|
<table class="widefat sp-stats-table">
|
||||||
|
<thead>
|
||||||
|
<tr>
|
||||||
|
<th><?php _e( 'Team', 'sportspress' ); ?></th>
|
||||||
|
<?php foreach ( $columns as $label ): ?>
|
||||||
|
<th><?php echo $label; ?></th>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
$i = 0;
|
||||||
|
foreach ( $data as $team_id => $team_results ):
|
||||||
|
if ( !$team_id ) continue;
|
||||||
|
?>
|
||||||
|
<tr class="sp-row sp-post<?php if ( $i % 2 == 0 ) echo ' alternate'; ?>">
|
||||||
|
<td>
|
||||||
|
<?php echo get_the_title( $team_id ); ?>
|
||||||
|
</td>
|
||||||
|
<?php foreach( $columns as $column => $label ):
|
||||||
|
$value = sp_array_value( $team_results, $column, '' );
|
||||||
|
$placeholder = (int)sp_array_value( sp_array_value( $placeholders, $team_id, 0), $column, 0 );
|
||||||
|
?>
|
||||||
|
<td><input type="text" name="sp_results[<?php echo $team_id; ?>][<?php echo $column; ?>]" value="<?php echo $value; ?>" placeholder="<?php echo $placeholder; ?>" /></td>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tr>
|
||||||
|
<?php
|
||||||
|
$i++;
|
||||||
|
endforeach;
|
||||||
|
$total_results = sp_array_value( $data, 0, array() );
|
||||||
|
?>
|
||||||
|
<tr class="sp-row sp-total<?php if ( $i % 2 == 0 ) echo ' alternate'; ?>">
|
||||||
|
<td><strong><?php _e( 'Total', 'sportspress' ); ?></strong></td>
|
||||||
|
<?php foreach( $columns as $column => $label ):
|
||||||
|
$team_id = 0;
|
||||||
|
$value = sp_array_value( $team_results, $column, '' );
|
||||||
|
$placeholder = (int)sp_array_value( sp_array_value( $placeholders, $team_id, 0), $column, 0 );
|
||||||
|
?>
|
||||||
|
<td><input type="text" name="sp_results[<?php echo $team_id; ?>][<?php echo $column; ?>]" value="<?php echo $value; ?>" placeholder="<?php echo $placeholder; ?>" /></td>
|
||||||
|
<?php endforeach; ?>
|
||||||
|
</tr>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
<?php
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
if ( !function_exists( 'sp_team_stats_sport_choice' ) ) {
|
if ( !function_exists( 'sp_team_stats_sport_choice' ) ) {
|
||||||
function sp_team_stats_sport_choice( $selected = null ) {
|
function sp_team_stats_sport_choice( $selected = null ) {
|
||||||
|
|||||||
Reference in New Issue
Block a user