Auto calculate event outcomes based on primary results close #57
This commit is contained in:
@@ -29,6 +29,81 @@ class SP_Meta_Box_Event_Results {
|
|||||||
*/
|
*/
|
||||||
public static function save( $post_id, $post ) {
|
public static function save( $post_id, $post ) {
|
||||||
$results = (array)sp_array_value( $_POST, 'sp_results', array() );
|
$results = (array)sp_array_value( $_POST, 'sp_results', array() );
|
||||||
|
$main_result = get_option( 'sportspress_primary_result', null );
|
||||||
|
|
||||||
|
// Auto outcome
|
||||||
|
$primary_results = array();
|
||||||
|
foreach ( $results as $team => $team_results ) {
|
||||||
|
if ( $main_result ) {
|
||||||
|
$primary_results[ $team ] = sportspress_array_value( $team_results, $main_result, null );
|
||||||
|
} else {
|
||||||
|
if ( is_array( $team_results ) ) {
|
||||||
|
end( $team_results );
|
||||||
|
$primary_results[ $team ] = prev( $team_results );
|
||||||
|
} else {
|
||||||
|
$primary_results[ $team ] = null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
arsort( $primary_results );
|
||||||
|
|
||||||
|
if ( count( $primary_results ) && ! in_array( null, $primary_results ) && count( array_unique( $primary_results ) ) === 1 ) {
|
||||||
|
$args = array(
|
||||||
|
'post_type' => 'sp_outcome',
|
||||||
|
'numberposts' => -1,
|
||||||
|
'posts_per_page' => -1,
|
||||||
|
'meta_key' => 'sp_condition',
|
||||||
|
'meta_value' => '=',
|
||||||
|
);
|
||||||
|
$outcomes = get_posts( $args );
|
||||||
|
foreach ( $results as $team => $team_results ) {
|
||||||
|
if ( array_key_exists( 'outcome', $team_results ) ) continue;
|
||||||
|
if ( $outcomes ) {
|
||||||
|
foreach ( $outcomes as $outcome ) {
|
||||||
|
$results[ $team ][ 'outcome' ] = $outcome->post_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
} 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 ) {
|
||||||
|
foreach ( $outcomes as $outcome ) {
|
||||||
|
$results[ $max ][ 'outcome' ] = $outcome->post_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
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 ) {
|
||||||
|
foreach ( $outcomes as $outcome ) {
|
||||||
|
$results[ $min ][ 'outcome' ] = $outcome->post_name;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// Update meta
|
||||||
update_post_meta( $post_id, 'sp_results', $results );
|
update_post_meta( $post_id, 'sp_results', $results );
|
||||||
update_post_meta( $post_id, 'sp_result_columns', sp_array_value( $_POST, 'sp_result_columns', array() ) );
|
update_post_meta( $post_id, 'sp_result_columns', sp_array_value( $_POST, 'sp_result_columns', array() ) );
|
||||||
}
|
}
|
||||||
@@ -90,6 +165,7 @@ class SP_Meta_Box_Event_Results {
|
|||||||
'class' => 'sp-outcome',
|
'class' => 'sp-outcome',
|
||||||
'property' => 'multiple',
|
'property' => 'multiple',
|
||||||
'chosen' => true,
|
'chosen' => true,
|
||||||
|
'placeholder' => __( '(Auto)', 'sportspress' ),
|
||||||
);
|
);
|
||||||
sp_dropdown_pages( $args );
|
sp_dropdown_pages( $args );
|
||||||
?>
|
?>
|
||||||
|
|||||||
@@ -24,6 +24,10 @@ class SP_Meta_Box_Outcome_Details extends SP_Meta_Box_Config {
|
|||||||
public static function output( $post ) {
|
public static function output( $post ) {
|
||||||
wp_nonce_field( 'sportspress_save_data', 'sportspress_meta_nonce' );
|
wp_nonce_field( 'sportspress_save_data', 'sportspress_meta_nonce' );
|
||||||
$abbreviation = get_post_meta( $post->ID, 'sp_abbreviation', true );
|
$abbreviation = get_post_meta( $post->ID, 'sp_abbreviation', true );
|
||||||
|
$condition = get_post_meta( $post->ID, 'sp_condition', true );
|
||||||
|
$main_result = get_option( 'sportspress_primary_result', null );
|
||||||
|
$result = get_page_by_path( $main_result, ARRAY_A, 'sp_result' );
|
||||||
|
$label = sp_array_value( $result, 'post_title', __( 'Primary', 'sportspress' ) );
|
||||||
?>
|
?>
|
||||||
<p><strong><?php _e( 'Variable', 'sportspress' ); ?></strong></p>
|
<p><strong><?php _e( 'Variable', 'sportspress' ); ?></strong></p>
|
||||||
<p>
|
<p>
|
||||||
@@ -34,6 +38,25 @@ class SP_Meta_Box_Outcome_Details extends SP_Meta_Box_Config {
|
|||||||
<p>
|
<p>
|
||||||
<input name="sp_abbreviation" type="text" id="sp_abbreviation" value="<?php echo $abbreviation; ?>" placeholder="<?php echo substr( $post->post_title, 0, 1 ); ?>">
|
<input name="sp_abbreviation" type="text" id="sp_abbreviation" value="<?php echo $abbreviation; ?>" placeholder="<?php echo substr( $post->post_title, 0, 1 ); ?>">
|
||||||
</p>
|
</p>
|
||||||
|
<p><strong><?php _e( 'Condition', 'sportspress' ); ?></strong></p>
|
||||||
|
<p>
|
||||||
|
<select name="sp_condition">
|
||||||
|
<?php
|
||||||
|
$options = array(
|
||||||
|
'0' => __( '—', 'sportspress' ),
|
||||||
|
'>' => sprintf( __( 'Most %s', 'sportspress' ), $label ),
|
||||||
|
'<' => sprintf( __( 'Least %s', 'sportspress' ), $label ),
|
||||||
|
'=' => sprintf( __( 'Equal %s', 'sportspress' ), $label ),
|
||||||
|
);
|
||||||
|
for( $i = 1; $i <= $count->publish; $i++ ):
|
||||||
|
$options[ $i ] = $i;
|
||||||
|
endfor;
|
||||||
|
foreach ( $options as $key => $value ):
|
||||||
|
printf( '<option value="%s" %s>%s</option>', $key, selected( true, $key == $condition, false ), $value );
|
||||||
|
endforeach;
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
</p>
|
||||||
<?php
|
<?php
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -42,5 +65,6 @@ class SP_Meta_Box_Outcome_Details extends SP_Meta_Box_Config {
|
|||||||
*/
|
*/
|
||||||
public static function save( $post_id, $post ) {
|
public static function save( $post_id, $post ) {
|
||||||
update_post_meta( $post_id, 'sp_abbreviation', sp_array_value( $_POST, 'sp_abbreviation', array() ) );
|
update_post_meta( $post_id, 'sp_abbreviation', sp_array_value( $_POST, 'sp_abbreviation', array() ) );
|
||||||
|
update_post_meta( $post_id, 'sp_condition', sp_array_value( $_POST, 'sp_condition', array() ) );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -26,6 +26,7 @@
|
|||||||
<th scope="col"><?php _e( 'Label', 'sportspress' ); ?></th>
|
<th scope="col"><?php _e( 'Label', 'sportspress' ); ?></th>
|
||||||
<th scope="col"><?php _e( 'Variable', 'sportspress' ); ?></th>
|
<th scope="col"><?php _e( 'Variable', 'sportspress' ); ?></th>
|
||||||
<th scope="col"><?php _e( 'Abbreviation', 'sportspress' ); ?></th>
|
<th scope="col"><?php _e( 'Abbreviation', 'sportspress' ); ?></th>
|
||||||
|
<th scope="col"><?php _e( 'Condition', 'sportspress' ); ?></th>
|
||||||
<th scope="col"><?php _e( 'Description', 'sportspress' ); ?></th>
|
<th scope="col"><?php _e( 'Description', 'sportspress' ); ?></th>
|
||||||
<th scope="col" class="edit"></th>
|
<th scope="col" class="edit"></th>
|
||||||
</tr>
|
</tr>
|
||||||
@@ -35,6 +36,7 @@
|
|||||||
<td class="row-title"><?php echo $row->post_title; ?></td>
|
<td class="row-title"><?php echo $row->post_title; ?></td>
|
||||||
<td><?php echo $row->post_name; ?></td>
|
<td><?php echo $row->post_name; ?></td>
|
||||||
<td><?php echo sp_get_post_abbreviation( $row->ID ); ?></td>
|
<td><?php echo sp_get_post_abbreviation( $row->ID ); ?></td>
|
||||||
|
<td><?php echo sp_get_post_condition( $row->ID ); ?></td>
|
||||||
<td><p class="description"><?php echo $row->post_excerpt; ?></p></td>
|
<td><p class="description"><?php echo $row->post_excerpt; ?></p></td>
|
||||||
<td class="edit"><a class="button" href="<?php echo get_edit_post_link( $row->ID ); ?>"><?php _e( 'Edit', 'sportspress' ); ?></s></td>
|
<td class="edit"><a class="button" href="<?php echo get_edit_post_link( $row->ID ); ?>"><?php _e( 'Edit', 'sportspress' ); ?></s></td>
|
||||||
</tr>
|
</tr>
|
||||||
|
|||||||
@@ -352,6 +352,26 @@ if ( !function_exists( 'sp_get_post_abbreviation' ) ) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if ( !function_exists( 'sp_get_post_condition' ) ) {
|
||||||
|
function sp_get_post_condition( $post_id ) {
|
||||||
|
$condition = get_post_meta ( $post_id, 'sp_condition', true );
|
||||||
|
$main_result = get_option( 'sportspress_primary_result', null );
|
||||||
|
$result = get_page_by_path( $main_result, ARRAY_A, 'sp_result' );
|
||||||
|
$label = sp_array_value( $result, 'post_title', __( 'Primary', 'sportspress' ) );
|
||||||
|
if ( $condition ):
|
||||||
|
$conditions = array(
|
||||||
|
'0' => '—',
|
||||||
|
'>' => sprintf( __( 'Most %s', 'sportspress' ), $label ),
|
||||||
|
'<' => sprintf( __( 'Least %s', 'sportspress' ), $label ),
|
||||||
|
'=' => sprintf( __( 'Equal %s', 'sportspress' ), $label ),
|
||||||
|
);
|
||||||
|
return sp_array_value( $conditions, $condition, '—' );
|
||||||
|
else:
|
||||||
|
return '—';
|
||||||
|
endif;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
if ( !function_exists( 'sp_get_post_precision' ) ) {
|
if ( !function_exists( 'sp_get_post_precision' ) ) {
|
||||||
function sp_get_post_precision( $post_id ) {
|
function sp_get_post_precision( $post_id ) {
|
||||||
$precision = get_post_meta ( $post_id, 'sp_precision', true );
|
$precision = get_post_meta ( $post_id, 'sp_precision', true );
|
||||||
@@ -752,7 +772,7 @@ if ( !function_exists( 'sp_post_checklist' ) ) {
|
|||||||
<?php
|
<?php
|
||||||
$selected = sp_array_between( (array)get_post_meta( $post_id, $meta, false ), 0, $index );
|
$selected = sp_array_between( (array)get_post_meta( $post_id, $meta, false ), 0, $index );
|
||||||
if ( empty( $posts ) ):
|
if ( empty( $posts ) ):
|
||||||
$query = array( 'post_type' => $meta, 'numberposts' => -1, 'post_per_page' => -1 );
|
$query = array( 'post_type' => $meta, 'numberposts' => -1, 'post_per_page' => -1, 'orderby' => 'menu_order' );
|
||||||
if ( $meta == 'sp_player' ):
|
if ( $meta == 'sp_player' ):
|
||||||
$query['meta_key'] = 'sp_number';
|
$query['meta_key'] = 'sp_number';
|
||||||
$query['orderby'] = 'meta_value_num';
|
$query['orderby'] = 'meta_value_num';
|
||||||
|
|||||||
Reference in New Issue
Block a user