Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- $original_date = get_post_meta( $args['postId'], 'event_date', true );
- $original_end_date = get_post_meta( $args['postId'], 'event_end_date', true );
- // Convert date format
- $new_date = gmdate( 'd M Y', strtotime( $original_date ) );
- if ( $original_end_date !== '' ) {
- $new_end_date = gmdate( 'd M Y', strtotime( $original_end_date ) );
- }
- $recurrence_type = get_post_meta( $args['postId'], 'event_recurrence', true );
- $recurrence_end_date = get_post_meta( $args['postId'], 'event_recurrence_end', true );
- $custom_dates = get_post_meta( $args['postId'], 'event_custom_dates', true );
- $today_timestamp = strtotime( date( 'Y-m-d' ) );
- $all_event_dates = [];
- $all_event_end_dates = [];
- if ( $recurrence_type === 'custom' && ! empty( $custom_dates ) && is_array( $custom_dates ) ) {
- usort(
- $custom_dates,
- function ( $a, $b ) {
- return strtotime( $a['start'] ) - strtotime( $b['start'] );
- }
- );
- if ( ! empty( $custom_dates[0]['start'] ) ) {
- $new_date = gmdate( 'd M Y', strtotime( $custom_dates[0]['start'] ) );
- $new_end_date = ! empty( $custom_dates[0]['end'] ) ? gmdate( 'd M Y', strtotime( $custom_dates[0]['end'] ) ) : '';
- }
- }
- if ( $recurrence_type ) {
- if ( $recurrence_type === 'single' ) {
- $recurrence_end_timestamp = null;
- } else {
- $recurrence_end_timestamp = ! empty( $recurrence_end_date ) ? strtotime( $recurrence_end_date ) : null;
- }
- $next_start_date = strtotime( $original_date );
- $next_end_date = strtotime( $original_end_date );
- switch ( $recurrence_type ) {
- case 'weekly':
- $counter = 0;
- $max_events = 10;
- while (
- ( $recurrence_end_timestamp && $next_start_date <= $recurrence_end_timestamp ) ||
- ( ! $recurrence_end_timestamp && $counter < $max_events )
- ) {
- if ( $next_start_date >= $today_timestamp ) {
- $all_event_dates[] = gmdate( 'd M Y', $next_start_date );
- if ( $next_end_date ) {
- $all_event_end_dates[] = gmdate( 'd M Y', $next_end_date );
- } else {
- $all_event_end_dates[] = '';
- }
- $counter++;
- }
- $next_start_date = strtotime( '+1 week', $next_start_date );
- if ( $next_end_date ) {
- $next_end_date = strtotime( '+1 week', $next_end_date );
- }
- }
- break;
- case 'monthly':
- $counter = 0;
- $max_events = 10;
- while (
- ( $recurrence_end_timestamp && $next_start_date <= $recurrence_end_timestamp ) ||
- ( ! $recurrence_end_timestamp && $counter < $max_events )
- ) {
- if ( $next_start_date >= $today_timestamp ) {
- $all_event_dates[] = gmdate( 'd M Y', $next_start_date );
- if ( $next_end_date ) {
- $all_event_end_dates[] = gmdate( 'd M Y', $next_end_date );
- } else {
- $all_event_end_dates[] = '';
- }
- $counter++;
- }
- $next_start_date = strtotime( '+1 month', $next_start_date );
- if ( $next_end_date ) {
- $next_end_date = strtotime( '+1 month', $next_end_date );
- }
- }
- break;
- case 'custom':
- if ( ! empty( $custom_dates ) && is_array( $custom_dates ) ) {
- foreach ( $custom_dates as $index => $date_range ) {
- $start = ! empty( $date_range['start'] ) ? $date_range['start'] : '';
- $end = ! empty( $date_range['end'] ) ? $date_range['end'] : '';
- if ( ! empty( $start ) && strtotime( $start ) >= $today_timestamp ) {
- $all_event_dates[] = gmdate( 'd M Y', strtotime( $start ) );
- }
- if ( ! empty( $end ) && strtotime( $end ) >= $today_timestamp ) {
- $all_event_end_dates[] = gmdate( 'd M Y', strtotime( $end ) );
- }
- }
- }
- break;
- }
- }
- ?>
- <p class="event-date">
- <?php
- if ( ! empty( $new_end_date ) && strtotime( $new_end_date ) < $today_timestamp ) {
- foreach ( $all_event_dates as $key => $event_date ) {
- if ( strtotime( $event_date ) >= $today_timestamp ) {
- echo esc_html( $event_date ) . ( ! empty( $all_event_end_dates[ $key ] ) ? ' - ' . esc_html( $all_event_end_dates[ $key ] ) : '' );
- break;
- }
- }
- } elseif ( ! empty( $original_date ) ) {
- echo esc_html( $new_date ) . ( isset( $new_end_date ) && ! empty( $original_end_date ) ? ' - ' . esc_html( $new_end_date ) : '' );
- }
- ?>
- </p>
- <?php
- if ( is_singular( 'event' ) && ! empty( $all_event_dates ) ) {
- foreach ( $all_event_dates as $key => $event_date ) {
- if ( strtotime( $event_date ) >= $today_timestamp ) {
- $next_event = esc_html( $event_date ) . ( ! empty( $all_event_end_dates[ $key ] ) ? ' - ' . esc_html( $all_event_end_dates[ $key ] ) : '' );
- if ( $next_event !== $new_date . ( isset( $new_end_date ) ? ' - ' . $new_end_date : '' ) ) {
- echo '<p class="next-event-date"><strong>' . __( 'Next Event Date:', 'pulsar' ) . '</strong> <span>' . $next_event . '</span></p>';
- break;
- }
- }
- }
- }
- ?>
- <?php
- if ( ! empty( $formatted_custom_date ) ) :
- $found_custom_date = false;
- foreach ( $custom_dates as $index => $date_range ) {
- $start = ! empty( $date_range['start'] ) ? $date_range['start'] : '';
- $end = ! empty( $date_range['end'] ) ? $date_range['end'] : '';
- if ( ! empty( $start ) && strtotime( $start ) >= $today_timestamp ) {
- $next_custom_start = gmdate( 'd M Y', strtotime( $start ) );
- $next_custom_end = ! empty( $end ) ? gmdate( 'd M Y', strtotime( $end ) ) : '';
- $formatted_custom_date = $next_custom_start;
- if ( ! empty( $next_custom_end ) ) {
- $formatted_custom_date .= ' - ' . $next_custom_end;
- }
- if ( $formatted_custom_date !== $new_date . ' - ' . $new_end_date ) {
- echo '<p class="custom-dates">
- <strong>' . __( 'Next Event Date:', 'pulsar' ) . '</strong>
- <span>' . esc_html( $formatted_custom_date ) . '</span>
- </p>';
- $found_custom_date = true;
- break;
- }
- }
- }
- endif;
- ?>
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement