From e4bfdb23ca03342f07f680073db63bdd74fb969d Mon Sep 17 00:00:00 2001 From: Brian Miyaji Date: Fri, 18 Sep 2015 11:13:01 +1000 Subject: [PATCH] Add default outcome condition --- .../class-sp-meta-box-event-results.php | 78 +++++++++++-------- .../class-sp-meta-box-outcome-details.php | 1 + includes/class-sp-event.php | 46 +++++++---- includes/sp-core-functions.php | 1 + 4 files changed, 79 insertions(+), 47 deletions(-) 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 0833d750..8245543c 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 @@ -74,40 +74,54 @@ class SP_Meta_Box_Event_Results { } } } else { - reset( $primary_results ); - $max = key( $primary_results ); - if ( ! array_key_exists( 'outcome', $results[ $max ] ) ) { - $args = array( - 'post_type' => 'sp_outcome', - 'numberposts' => -1, - 'posts_per_page' => -1, - 'meta_key' => 'sp_condition', - 'meta_value' => '>', - ); - $outcomes = get_posts( $args ); - if ( $outcomes ) { - $results[ $max ][ 'outcome' ] = array(); - foreach ( $outcomes as $outcome ) { - $results[ $max ][ 'outcome' ][] = $outcome->post_name; - } - } - } + // Get default outcomes + $args = array( + 'post_type' => 'sp_outcome', + 'numberposts' => -1, + 'posts_per_page' => -1, + 'meta_key' => 'sp_condition', + 'meta_value' => 'else', + ); + $default_outcomes = get_posts( $args ); - end( $primary_results ); - $min = key( $primary_results ); - if ( ! array_key_exists( 'outcome', $results[ $min ] ) ) { - $args = array( - 'post_type' => 'sp_outcome', - 'numberposts' => -1, - 'posts_per_page' => -1, - 'meta_key' => 'sp_condition', - 'meta_value' => '<', - ); - $outcomes = get_posts( $args ); - if ( $outcomes ) { - $results[ $min ][ 'outcome' ] = array(); + // Get greater than outcomes + $args = array( + 'post_type' => 'sp_outcome', + 'numberposts' => -1, + 'posts_per_page' => -1, + 'meta_key' => 'sp_condition', + 'meta_value' => '>', + ); + $gt_outcomes = get_posts( $args ); + if ( empty ( $gt_outcomes ) ) $gt_outcomes = $default_outcomes; + + // Get less than outcomes + $args = array( + 'post_type' => 'sp_outcome', + 'numberposts' => -1, + 'posts_per_page' => -1, + 'meta_key' => 'sp_condition', + 'meta_value' => '<', + ); + $lt_outcomes = get_posts( $args ); + if ( empty ( $lt_outcomes ) ) $lt_outcomes = $default_outcomes; + + // Get min and max values + $min = min( $primary_results ); + $max = max( $primary_results ); + + foreach ( $primary_results as $key => $value ) { + if ( ! array_key_exists( 'outcome', $results[ $key ] ) ) { + if ( $min == $value ) { + $outcomes = $lt_outcomes; + } elseif ( $max == $value ) { + $outcomes = $gt_outcomes; + } else { + $outcomes = $default_outcomes; + } + $results[ $key ][ 'outcome' ] = array(); foreach ( $outcomes as $outcome ) { - $results[ $min ][ 'outcome' ][] = $outcome->post_name; + $results[ $key ][ 'outcome' ][] = $outcome->post_name; } } } diff --git a/includes/admin/post-types/meta-boxes/class-sp-meta-box-outcome-details.php b/includes/admin/post-types/meta-boxes/class-sp-meta-box-outcome-details.php index f5a2236f..b7406054 100644 --- a/includes/admin/post-types/meta-boxes/class-sp-meta-box-outcome-details.php +++ b/includes/admin/post-types/meta-boxes/class-sp-meta-box-outcome-details.php @@ -53,6 +53,7 @@ class SP_Meta_Box_Outcome_Details extends SP_Meta_Box_Config { '>' => sprintf( __( 'Most %s', 'sportspress' ), $label ), '<' => sprintf( __( 'Least %s', 'sportspress' ), $label ), '=' => sprintf( __( 'Equal %s', 'sportspress' ), $label ), + 'else' => sprintf( __( 'Default', 'sportspress' ), $label ), ); for( $i = 1; $i <= $count->publish; $i++ ): $options[ $i ] = $i; diff --git a/includes/class-sp-event.php b/includes/class-sp-event.php index bcb6dfaa..6753679d 100644 --- a/includes/class-sp-event.php +++ b/includes/class-sp-event.php @@ -298,8 +298,17 @@ class SP_Event extends SP_Custom_Post{ } } } else { - reset( $primary_results ); - $max = key( $primary_results ); + // Get default outcomes + $args = array( + 'post_type' => 'sp_outcome', + 'numberposts' => -1, + 'posts_per_page' => -1, + 'meta_key' => 'sp_condition', + 'meta_value' => 'else', + ); + $default_outcomes = get_posts( $args ); + + // Get greater than outcomes $args = array( 'post_type' => 'sp_outcome', 'numberposts' => -1, @@ -307,16 +316,10 @@ class SP_Event extends SP_Custom_Post{ 'meta_key' => 'sp_condition', 'meta_value' => '>', ); - $outcomes = get_posts( $args ); - if ( $outcomes ) { - $meta[ $max ][ 'outcome' ] = array(); - foreach ( $outcomes as $outcome ) { - $meta[ $max ][ 'outcome' ][] = $outcome->post_name; - } - } + $gt_outcomes = get_posts( $args ); + if ( empty ( $gt_outcomes ) ) $gt_outcomes = $default_outcomes; - end( $primary_results ); - $min = key( $primary_results ); + // Get less than outcomes $args = array( 'post_type' => 'sp_outcome', 'numberposts' => -1, @@ -324,11 +327,24 @@ class SP_Event extends SP_Custom_Post{ 'meta_key' => 'sp_condition', 'meta_value' => '<', ); - $outcomes = get_posts( $args ); - if ( $outcomes ) { - $meta[ $min ][ 'outcome' ] = array(); + $lt_outcomes = get_posts( $args ); + if ( empty ( $lt_outcomes ) ) $lt_outcomes = $default_outcomes; + + // Get min and max values + $min = min( $primary_results ); + $max = max( $primary_results ); + + foreach ( $primary_results as $key => $value ) { + if ( $min == $value ) { + $outcomes = $lt_outcomes; + } elseif ( $max == $value ) { + $outcomes = $gt_outcomes; + } else { + $outcomes = $default_outcomes; + } + $meta[ $key ][ 'outcome' ] = array(); foreach ( $outcomes as $outcome ) { - $meta[ $min ][ 'outcome' ][] = $outcome->post_name; + $meta[ $key ][ 'outcome' ][] = $outcome->post_name; } } } diff --git a/includes/sp-core-functions.php b/includes/sp-core-functions.php index 01b20ee9..25230b04 100644 --- a/includes/sp-core-functions.php +++ b/includes/sp-core-functions.php @@ -376,6 +376,7 @@ if ( !function_exists( 'sp_get_post_condition' ) ) { '>' => sprintf( __( 'Most %s', 'sportspress' ), $label ), '<' => sprintf( __( 'Least %s', 'sportspress' ), $label ), '=' => sprintf( __( 'Equal %s', 'sportspress' ), $label ), + 'else' => sprintf( __( 'Default', 'sportspress' ), $label ), ); return sp_array_value( $conditions, $condition, '—' ); else: