diff --git a/feeds/ical.php b/feeds/ical.php index 4b8ec5e8..c2fa8955 100644 --- a/feeds/ical.php +++ b/feeds/ical.php @@ -21,6 +21,9 @@ $events = $calendar->data(); // Get blog locale $locale = substr( get_locale(), 0, 2 ); +// Get main result setting +$main_result = get_option( 'sportspress_primary_result', null ); + // Initialize output. Max line length is 75 chars. $output = "BEGIN:VCALENDAR\n" . @@ -46,8 +49,8 @@ foreach ( $events as $event): $end = new DateTime( $event->post_date_gmt ); // Get full time minutes - $minutes = get_post_meta( $event->post_id, 'sp_minutes', true ); - if ( false === $minutes ) $minutes = get_option( 'sportspress_event_minutes', 90 ); + $minutes = get_post_meta( $event->ID, 'sp_minutes', true ); + if ( '' === $minutes ) $minutes = get_option( 'sportspress_event_minutes', 90 ); // Add full time minutes to end time $end->add( new DateInterval( 'PT' . $minutes . 'M' ) ); @@ -81,10 +84,47 @@ foreach ( $events as $event): } } + // Get title or write summary based on scores + $results = array(); + $teams = (array)get_post_meta( $event->ID, 'sp_team', false ); + $teams = array_filter( $teams ); + $teams = array_unique( $teams ); + if ( ! empty( $teams ) ) { + $event_results = get_post_meta( $event->ID, 'sp_results', true ); + foreach( $teams as $team_id ) { + if ( ! $team_id ) continue; + $team = get_post( $team_id ); + + if ( $team ) { + $team_results = sportspress_array_value( $event_results, $team_id, null ); + + if ( $main_result ) { + $team_result = sportspress_array_value( $team_results, $main_result, null ); + } else { + if ( is_array( $team_results ) ) { + end( $team_results ); + $team_result = prev( $team_results ); + } else { + $team_result = null; + } + } + + if ( $team_result != null ) { + $results[] = get_the_title( $team_id ) . ' ' . $team_result; + } + } + } + } + if ( sizeof( $results ) ) { + $summary = implode( ' ', $results ); + } else { + $summary = $event->post_title; + } + // Append to output string $output .= "BEGIN:VEVENT\n" . - "SUMMARY:$event->post_title\n" . + "SUMMARY:" . $summary . "\n" . "UID:$event->ID\n" . "STATUS:CONFIRMED\n" . "DTSTART:" . mysql2date( $date_format, $event->post_date_gmt ) . "\n" . @@ -102,4 +142,9 @@ endforeach; // End output $output .= "END:VCALENDAR"; +// Print headers +header('Content-type: text/calendar; charset=utf-8'); +header('Content-Disposition: inline; filename=' . $post->post_name . '.ics'); + +// Print content echo $output; diff --git a/includes/admin/post-types/meta-boxes/class-sp-meta-box-calendar-feeds.php b/includes/admin/post-types/meta-boxes/class-sp-meta-box-calendar-feeds.php index dd34bb0f..9c5e3dcd 100644 --- a/includes/admin/post-types/meta-boxes/class-sp-meta-box-calendar-feeds.php +++ b/includes/admin/post-types/meta-boxes/class-sp-meta-box-calendar-feeds.php @@ -25,11 +25,11 @@ class SP_Meta_Box_Calendar_Feeds { $calendar_feeds = $feeds->calendar; ?>
diff --git a/includes/class-sp-feeds.php b/includes/class-sp-feeds.php index 85db1a05..dbdc3f91 100644 --- a/includes/class-sp-feeds.php +++ b/includes/class-sp-feeds.php @@ -31,7 +31,7 @@ class SP_Feeds { foreach ( $data as $type => $feeds ) { foreach ( $feeds as $slug => $name ) { $this->feed = $slug; - add_feed( 'sp-' . $type . '-' . $slug, array( $this, 'load_' . $type . '_' . $slug . '_feed' ) ); + add_feed( 'sp-' . $slug, array( $this, $slug . '_feed' ) ); } } } @@ -44,9 +44,8 @@ class SP_Feeds { $this->data[ $key ] = $value; } - public static function load_calendar_ical_feed() { + public static function ical_feed() { $feed_template = SP()->plugin_path() . '/feeds/ical.php'; load_template( $feed_template ); } } -