245 lines
6.8 KiB
PHP
245 lines
6.8 KiB
PHP
<?php
|
|
/**
|
|
* Countdown
|
|
*
|
|
* @author ThemeBoy
|
|
* @package SportsPress/Templates
|
|
* @version 2.7.9
|
|
*/
|
|
|
|
if ( ! defined( 'ABSPATH' ) ) {
|
|
exit; // Exit if accessed directly
|
|
}
|
|
|
|
$defaults = array(
|
|
'team' => null,
|
|
'calendar' => null,
|
|
'order' => null,
|
|
'orderby' => null,
|
|
'league' => null,
|
|
'season' => null,
|
|
'id' => null,
|
|
'title' => null,
|
|
'live' => get_option( 'sportspress_enable_live_countdowns', 'yes' ) == 'yes' ? true : false,
|
|
'link_events' => get_option( 'sportspress_link_events', 'yes' ) == 'yes' ? true : false,
|
|
'link_teams' => get_option( 'sportspress_link_teams', 'no' ) == 'yes' ? true : false,
|
|
'link_venues' => get_option( 'sportspress_link_venues', 'no' ) == 'yes' ? true : false,
|
|
'show_logos' => get_option( 'sportspress_countdown_show_logos', 'no' ) == 'yes' ? true : false,
|
|
'show_thumbnail' => get_option( 'sportspress_countdown_show_thumbnail', 'no' ) == 'yes' ? true : false,
|
|
);
|
|
|
|
if ( isset( $show_excluded ) && $show_excluded ) {
|
|
$excluded_statuses = array();
|
|
} else {
|
|
$excluded_statuses = apply_filters(
|
|
'sp_countdown_excluded_statuses',
|
|
array(
|
|
'postponed',
|
|
'cancelled',
|
|
)
|
|
);
|
|
}
|
|
|
|
if ( isset( $id ) ) :
|
|
$post = get_post( $id );
|
|
elseif ( $calendar ) :
|
|
$calendar = new SP_Calendar( $calendar );
|
|
if ( $team ) {
|
|
$calendar->team = $team;
|
|
}
|
|
$calendar->status = 'future';
|
|
if ( $order ) {
|
|
$calendar->order = $order;
|
|
} else {
|
|
$calendar->order = 'ASC';
|
|
}
|
|
if ( $orderby ) {
|
|
$calendar->orderby = $orderby;
|
|
}
|
|
$data = $calendar->data();
|
|
|
|
/**
|
|
* Exclude postponed or cancelled events.
|
|
*/
|
|
while ( $post = array_shift( $data ) ) {
|
|
$sp_status = get_post_meta( $post->ID, 'sp_status', true );
|
|
if ( ! in_array( $sp_status, $excluded_statuses ) ) {
|
|
break;
|
|
}
|
|
}
|
|
else :
|
|
$args = array();
|
|
if ( isset( $team ) ) {
|
|
$args['meta_query'] = array(
|
|
array(
|
|
'key' => 'sp_team',
|
|
'value' => $team,
|
|
),
|
|
);
|
|
}
|
|
if ( isset( $league ) || isset( $season ) ) {
|
|
$args['tax_query'] = array( 'relation' => 'AND' );
|
|
|
|
if ( isset( $league ) ) {
|
|
$args['tax_query'][] = array(
|
|
'taxonomy' => 'sp_league',
|
|
'terms' => $league,
|
|
);
|
|
}
|
|
|
|
if ( isset( $season ) ) {
|
|
$args['tax_query'][] = array(
|
|
'taxonomy' => 'sp_season',
|
|
'terms' => $season,
|
|
);
|
|
}
|
|
}
|
|
|
|
/**
|
|
* Exclude postponed or cancelled events.
|
|
*/
|
|
$args['meta_query'][] = array(
|
|
'key' => 'sp_status',
|
|
'compare' => 'NOT IN',
|
|
'value' => $excluded_statuses,
|
|
);
|
|
|
|
$post = sp_get_next_event( $args );
|
|
endif;
|
|
|
|
extract( $defaults, EXTR_SKIP );
|
|
|
|
if ( ! isset( $post ) || ! $post ) {
|
|
return;
|
|
}
|
|
|
|
if ( $title ) {
|
|
echo '<h4 class="sp-table-caption">' . wp_kses_post( $title ) . '</h4>';
|
|
}
|
|
|
|
$title = $post->post_title;
|
|
if ( $link_events ) {
|
|
$title = '<a href="' . get_post_permalink( $post->ID, false, true ) . '">' . $title . '</a>';
|
|
}
|
|
if ( isset( $show_status ) && $show_status ) {
|
|
$sp_status = get_post_meta( $post->ID, 'sp_status', true );
|
|
// Avoid Undefined index warnings if no status is set (i.e. during import)
|
|
if ( $sp_status == '' ) {
|
|
$sp_status = 'ok';
|
|
}
|
|
$statuses = apply_filters(
|
|
'sportspress_event_statuses',
|
|
array(
|
|
'ok' => esc_attr__( 'On time', 'sportspress' ),
|
|
'tbd' => esc_attr__( 'TBD', 'sportspress' ),
|
|
'postponed' => esc_attr__( 'Postponed', 'sportspress' ),
|
|
'cancelled' => esc_attr__( 'Canceled', 'sportspress' ),
|
|
)
|
|
);
|
|
$title = $title . ' (' . $statuses[ $sp_status ] . ')';
|
|
}
|
|
|
|
?>
|
|
<div class="sp-template sp-template-countdown">
|
|
<div class="sp-countdown-wrapper">
|
|
<?php
|
|
if ( $show_thumbnail && has_post_thumbnail( $post ) ) {
|
|
?>
|
|
<div class="event-image sp-event-image">
|
|
<?php echo get_the_post_thumbnail( $post ); ?>
|
|
</div>
|
|
<?php } ?>
|
|
<h3 class="event-name sp-event-name">
|
|
<?php
|
|
if ( $show_logos ) {
|
|
$teams = array_unique( (array) get_post_meta( $post->ID, 'sp_team' ) );
|
|
$i = 0;
|
|
|
|
if ( is_array( $teams ) ) {
|
|
foreach ( $teams as $team ) {
|
|
$i++;
|
|
if ( has_post_thumbnail( $team ) ) {
|
|
if ( $link_teams ) {
|
|
echo '<a class="team-logo logo-' . ( $i % 2 ? 'odd' : 'even' ) . '" href="' . esc_url( get_post_permalink( $team ) ) . '" title="' . esc_attr( get_the_title( $team ) ) . '">' . get_the_post_thumbnail( $team, 'sportspress-fit-icon' ) . '</a>';
|
|
} else {
|
|
echo get_the_post_thumbnail( $team, 'sportspress-fit-icon', array( 'class' => 'team-logo logo-' . ( $i % 2 ? 'odd' : 'even' ) ) );
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
?>
|
|
<?php echo wp_kses_post( $title ); ?>
|
|
</h3>
|
|
<?php
|
|
if ( isset( $show_date ) && $show_date ) :
|
|
?>
|
|
<h5 class="event-venue sp-event-venue event-date sp-event-date">
|
|
<?php
|
|
echo wp_kses_post( get_the_time( get_option( 'date_format' ), $post ) );
|
|
?>
|
|
</h5>
|
|
<?php
|
|
endif;
|
|
|
|
if ( isset( $show_venue ) && $show_venue ) :
|
|
$venues = get_the_terms( $post->ID, 'sp_venue' );
|
|
if ( $venues ) :
|
|
?>
|
|
<h5 class="event-venue sp-event-venue">
|
|
<?php
|
|
if ( $link_venues ) {
|
|
the_terms( $post->ID, 'sp_venue' );
|
|
} else {
|
|
$venue_names = array();
|
|
foreach ( $venues as $venue ) {
|
|
$venue_names[] = $venue->name;
|
|
}
|
|
echo wp_kses_post( implode( '/', $venue_names ) );
|
|
}
|
|
?>
|
|
</h5>
|
|
<?php
|
|
endif;
|
|
endif;
|
|
|
|
if ( isset( $show_league ) && $show_league ) :
|
|
$leagues = get_the_terms( $post->ID, 'sp_league' );
|
|
if ( $leagues ) :
|
|
foreach ( $leagues as $league ) :
|
|
$term = get_term( $league->term_id, 'sp_league' );
|
|
?>
|
|
<h5 class="event-league sp-event-league"><?php echo wp_kses_post( $term->name ); ?></h5>
|
|
<?php
|
|
endforeach;
|
|
endif;
|
|
endif;
|
|
|
|
$now = new DateTime( current_time( 'mysql', 0 ) );
|
|
$date = new DateTime( $post->post_date );
|
|
$interval = date_diff( $now, $date );
|
|
|
|
$days = $interval->invert ? 0 : $interval->days;
|
|
$h = $interval->invert ? 0 : $interval->h;
|
|
$i = $interval->invert ? 0 : $interval->i;
|
|
$s = $interval->invert ? 0 : $interval->s;
|
|
?>
|
|
<p class="countdown sp-countdown
|
|
<?php
|
|
if ( $days >= 10 ) :
|
|
?>
|
|
long-countdown<?php endif; ?>">
|
|
<time datetime="<?php echo esc_attr( $post->post_date ); ?>"
|
|
<?php
|
|
if ( $live ) :
|
|
?>
|
|
data-countdown="<?php echo esc_attr( str_replace( '-', '/', get_gmt_from_date( $post->post_date ) ) ); ?>"<?php endif; ?>>
|
|
<span><?php echo wp_kses_post( sprintf( '%02s', $days ) ); ?> <small><?php esc_attr_e( 'days', 'sportspress' ); ?></small></span>
|
|
<span><?php echo wp_kses_post( sprintf( '%02s', $h ) ); ?> <small><?php esc_attr_e( 'hrs', 'sportspress' ); ?></small></span>
|
|
<span><?php echo wp_kses_post( sprintf( '%02s', $i ) ); ?> <small><?php esc_attr_e( 'mins', 'sportspress' ); ?></small></span>
|
|
<span><?php echo wp_kses_post( sprintf( '%02s', $s ) ); ?> <small><?php esc_attr_e( 'secs', 'sportspress' ); ?></small></span>
|
|
</time>
|
|
</p>
|
|
</div>
|
|
</div>
|