Add event results to equation builder

This commit is contained in:
Brian Miyaji
2015-09-17 12:36:01 +10:00
parent 922866f521
commit ecbac64351
3 changed files with 148 additions and 99 deletions

View File

@@ -23,7 +23,7 @@ class SP_Meta_Box_Statistic_Equation extends SP_Meta_Box_Equation {
*/
public static function output( $post ) {
$equation = get_post_meta( $post->ID, 'sp_equation', true );
$groups = array( 'player_event', 'outcome', 'performance', 'metric' );
$groups = array( 'player_event', 'outcome', 'result', 'performance', 'metric' );
self::builder( $post->post_title, $equation, $groups );
}
}

View File

@@ -51,6 +51,9 @@ class SP_Player_List extends SP_Custom_Post {
// Get labels from outcome variables
$outcome_labels = (array)sp_get_var_labels( 'sp_outcome' );
// Get labels from result variables
$result_labels = (array)sp_get_var_labels( 'sp_result' );
// Get players automatically if set to auto
if ( 'auto' == $select ) {
$player_ids = array();
@@ -148,13 +151,17 @@ class SP_Player_List extends SP_Custom_Post {
foreach ( $performance_labels as $key => $value ):
$totals[ $player_id ][ $key ] = 0;
$totals[ $player_id ][ $key ] = 0;
endforeach;
foreach ( $outcome_labels as $key => $value ):
$totals[ $player_id ][ $key ] = 0;
endforeach;
foreach ( $result_labels as $key => $value ):
$totals[ $player_id ][ $key . 'for' ] = 0;
$totals[ $player_id ][ $key . 'against' ] = 0;
endforeach;
// Get metrics
$metrics = (array) get_post_meta( $player_id, 'sp_metrics', true );
foreach ( $metrics as $key => $value ):
@@ -274,60 +281,79 @@ class SP_Player_List extends SP_Custom_Post {
endforeach;
$team_results = sp_array_value( $results, $team_id, array() );
unset( $results[ $team_id ] );
// Find the outcome
if ( array_key_exists( 'outcome', $team_results ) ):
// Loop through home team
foreach ( $team_results as $result_slug => $team_result ):
if ( 'outcome' == $result_slug ):
// Increment events attended
$totals[ $player_id ]['eventsattended'] ++;
// Increment events attended
$totals[ $player_id ]['eventsattended'] ++;
// Continue with incrementing values if active in event
if ( sp_array_value( $player_performance, 'status' ) != 'sub' || sp_array_value( $player_performance, 'sub', 0 ) ):
$totals[ $player_id ]['eventsplayed'] ++;
$totals[ $player_id ]['eventminutes'] += $minutes;
// Continue with incrementing values if active in event
if ( sp_array_value( $player_performance, 'status' ) != 'sub' || sp_array_value( $player_performance, 'sub', 0 ) ):
$totals[ $player_id ]['eventsplayed'] ++;
$totals[ $player_id ]['eventminutes'] += $minutes;
if ( sp_array_value( $player_performance, 'status' ) == 'lineup' ):
$totals[ $player_id ]['eventsstarted'] ++;
elseif ( sp_array_value( $player_performance, 'status' ) == 'sub' && sp_array_value( $player_performance, 'sub', 0 ) ):
$totals[ $player_id ]['eventssubbed'] ++;
endif;
$value = $team_results['outcome'];
// Convert to array
if ( ! is_array( $value ) ):
$value = array( $value );
endif;
foreach ( $value as $outcome ):
if ( $outcome && $outcome != '-1' ):
// Increment events attended and outcome count
if ( array_key_exists( $outcome, $totals[ $player_id ] ) ):
$totals[ $player_id ][ $outcome ] ++;
endif;
// Add to streak counter
if ( $streaks[ $player_id ]['fire'] && ( $streaks[ $player_id ]['name'] == '' || $streaks[ $player_id ]['name'] == $outcome ) ):
$streaks[ $player_id ]['name'] = $outcome;
$streaks[ $player_id ]['count'] ++;
else:
$streaks[ $player_id ]['fire'] = 0;
endif;
// Add to last 5 counter if sum is less than 5
if ( array_key_exists( $player_id, $last5s ) && array_key_exists( $outcome, $last5s[ $player_id ] ) && array_sum( $last5s[ $player_id ] ) < 5 ):
$last5s[ $player_id ][ $outcome ] ++;
endif;
// Add to last 10 counter if sum is less than 10
if ( array_key_exists( $player_id, $last10s ) && array_key_exists( $outcome, $last10s[ $player_id ] ) && array_sum( $last10s[ $player_id ] ) < 10 ):
$last10s[ $player_id ][ $outcome ] ++;
endif;
if ( sp_array_value( $player_performance, 'status' ) == 'lineup' ):
$totals[ $player_id ]['eventsstarted'] ++;
elseif ( sp_array_value( $player_performance, 'status' ) == 'sub' && sp_array_value( $player_performance, 'sub', 0 ) ):
$totals[ $player_id ]['eventssubbed'] ++;
endif;
endforeach;
$value = $team_result;
// Convert to array
if ( ! is_array( $value ) ):
$value = array( $value );
endif;
foreach ( $value as $outcome ):
if ( $outcome && $outcome != '-1' ):
// Increment events attended and outcome count
if ( array_key_exists( $outcome, $totals[ $player_id ] ) ):
$totals[ $player_id ][ $outcome ] ++;
endif;
// Add to streak counter
if ( $streaks[ $player_id ]['fire'] && ( $streaks[ $player_id ]['name'] == '' || $streaks[ $player_id ]['name'] == $outcome ) ):
$streaks[ $player_id ]['name'] = $outcome;
$streaks[ $player_id ]['count'] ++;
else:
$streaks[ $player_id ]['fire'] = 0;
endif;
// Add to last 5 counter if sum is less than 5
if ( array_key_exists( $player_id, $last5s ) && array_key_exists( $outcome, $last5s[ $player_id ] ) && array_sum( $last5s[ $player_id ] ) < 5 ):
$last5s[ $player_id ][ $outcome ] ++;
endif;
// Add to last 10 counter if sum is less than 10
if ( array_key_exists( $player_id, $last10s ) && array_key_exists( $outcome, $last10s[ $player_id ] ) && array_sum( $last10s[ $player_id ] ) < 10 ):
$last10s[ $player_id ][ $outcome ] ++;
endif;
endif;
endforeach;
endif;
else:
$value = sp_array_value( $totals[ $player_id ], $result_slug . 'for', 0 );
$value += $team_result;
$totals[ $player_id ][ $result_slug . 'for' ] = $value;
endif;
endforeach;
// Loop through away teams
if ( sizeof( $results ) ):
foreach ( $results as $team_results ):
unset( $team_results['outcome'] );
foreach ( $team_results as $result_slug => $team_result ):
$value = sp_array_value( $totals[ $player_id ], $result_slug . 'against', 0 );
$value += $team_result;
$totals[ $player_id ][ $result_slug . 'against' ] = $value;
endforeach;
endforeach;
endif;
endif;
endforeach; endif;
@@ -347,7 +373,9 @@ class SP_Player_List extends SP_Custom_Post {
if ( $outcomes ):
$outcome = reset( $outcomes );
$totals[ $player_id ]['streak'] = $outcome->post_title . $streak['count'];
$abbreviation = sp_get_abbreviation( $outcome->ID );
if ( empty( $abbreviation ) ) $abbreviation = strtoupper( substr( $outcome->post_title, 0, 1 ) );
$totals[ $player_id ]['streak'] = $abbreviation . $streak['count'];
else:
$totals[ $player_id ]['streak'] = null;
endif;

View File

@@ -244,59 +244,78 @@ class SP_Player extends SP_Custom_Post {
endforeach;
$team_results = sp_array_value( $results, $team_id, array() );
unset( $results[ $team_id ] );
// Find the outcome
if ( array_key_exists( 'outcome', $team_results ) ):
// Loop through home team
foreach ( $team_results as $result_slug => $team_result ):
if ( 'outcome' == $result_slug ):
// Increment events attended
$totals['eventsattended'] ++;
// Increment events attended
$totals['eventsattended'] ++;
// Continue with incrementing values if active in event
if ( sp_array_value( $player_performance, 'status' ) != 'sub' || sp_array_value( $player_performance, 'sub', 0 ) ):
$totals['eventsplayed'] ++;
$totals['eventminutes'] += $minutes;
// Continue with incrementing values if active in event
if ( sp_array_value( $player_performance, 'status' ) != 'sub' || sp_array_value( $player_performance, 'sub', 0 ) ):
$totals['eventsplayed'] ++;
$totals['eventminutes'] += $minutes;
if ( sp_array_value( $player_performance, 'status' ) == 'lineup' ):
$totals['eventsstarted'] ++;
elseif ( sp_array_value( $player_performance, 'status' ) == 'sub' && sp_array_value( $player_performance, 'sub', 0 ) ):
$totals['eventssubbed'] ++;
endif;
$value = $team_results['outcome'];
// Convert to array
if ( ! is_array( $value ) ):
$value = array( $value );
endif;
foreach ( $value as $outcome ):
if ( $outcome && $outcome != '-1' ):
// Increment outcome count
if ( array_key_exists( $outcome, $totals ) ):
$totals[ $outcome ] ++;
endif;
// Add to streak counter
if ( $streak['fire'] && ( $streak['name'] == '' || $streak['name'] == $outcome ) ):
$streak['name'] = $outcome;
$streak['count'] ++;
else:
$streak['fire'] = 0;
endif;
// Add to last 5 counter if sum is less than 5
if ( array_key_exists( $outcome, $last5 ) && array_sum( $last5 ) < 5 ):
$last5[ $outcome ] ++;
endif;
// Add to last 10 counter if sum is less than 10
if ( array_key_exists( $outcome, $last10 ) && array_sum( $last10 ) < 10 ):
$last10[ $outcome ] ++;
endif;
if ( sp_array_value( $player_performance, 'status' ) == 'lineup' ):
$totals['eventsstarted'] ++;
elseif ( sp_array_value( $player_performance, 'status' ) == 'sub' && sp_array_value( $player_performance, 'sub', 0 ) ):
$totals['eventssubbed'] ++;
endif;
endforeach;
$value = $team_result;
// Convert to array
if ( ! is_array( $value ) ):
$value = array( $value );
endif;
foreach ( $value as $outcome ):
if ( $outcome && $outcome != '-1' ):
// Increment outcome count
if ( array_key_exists( $outcome, $totals ) ):
$totals[ $outcome ] ++;
endif;
// Add to streak counter
if ( $streak['fire'] && ( $streak['name'] == '' || $streak['name'] == $outcome ) ):
$streak['name'] = $outcome;
$streak['count'] ++;
else:
$streak['fire'] = 0;
endif;
// Add to last 5 counter if sum is less than 5
if ( array_key_exists( $outcome, $last5 ) && array_sum( $last5 ) < 5 ):
$last5[ $outcome ] ++;
endif;
// Add to last 10 counter if sum is less than 10
if ( array_key_exists( $outcome, $last10 ) && array_sum( $last10 ) < 10 ):
$last10[ $outcome ] ++;
endif;
endif;
endforeach;
endif;
else:
$value = sp_array_value( $totals, $result_slug . 'for', 0 );
$value += $team_result;
$totals[ $result_slug . 'for' ] = $value;
endif;
endforeach;
// Loop through away teams
if ( sizeof( $results ) ):
foreach ( $results as $team_results ):
unset( $team_results['outcome'] );
foreach ( $team_results as $result_slug => $team_result ):
$val = sp_array_value( $totals, $result_slug . 'against', 0 );
$val += $team_result;
$totals[ $result_slug . 'against' ] = $val;
endforeach;
endforeach;
endif;
endif;
endforeach;
@@ -313,7 +332,9 @@ class SP_Player extends SP_Custom_Post {
if ( $outcomes ):
$outcome = reset( $outcomes );
$totals['streak'] = $outcome->post_title . $streak['count'];
$abbreviation = sp_get_abbreviation( $outcome->ID );
if ( empty( $abbreviation ) ) $abbreviation = strtoupper( substr( $outcome->post_title, 0, 1 ) );
$totals['streak'] = $abbreviation . $streak['count'];
endif;
// Add last counters to totals