diff --git a/includes/sp-event-export.php b/includes/sp-event-export.php index fc8d7fb..851a683 100644 --- a/includes/sp-event-export.php +++ b/includes/sp-event-export.php @@ -93,6 +93,15 @@ function tse_sp_event_export_get_default_columns( $format ) { return isset( $defaults[ $format ] ) ? $defaults[ $format ] : $defaults['matchup']; } +/** + * Get supported event title formats. + * + * @return string[] + */ +function tse_sp_event_export_get_title_formats() { + return array( 'selected_first', 'matchup' ); +} + /** * Sanitize event title format. * @@ -102,7 +111,7 @@ function tse_sp_event_export_get_default_columns( $format ) { function tse_sp_event_export_sanitize_title_format( $format ) { $format = sanitize_key( (string) $format ); - return in_array( $format, array( 'selected_first', 'matchup' ), true ) ? $format : 'selected_first'; + return in_array( $format, tse_sp_event_export_get_title_formats(), true ) ? $format : 'selected_first'; } /** @@ -187,26 +196,26 @@ function tse_sp_event_export_parse_id_list( $value ) { * @return array */ function tse_sp_event_export_normalize_request_args( $source = null ) { - $source = is_array( $source ) ? $source : $_GET; - $format = isset( $source['format'] ) ? tse_sp_event_export_sanitize_format( wp_unslash( $source['format'] ) ) : 'matchup'; - $team_ids = isset( $source['team_id'] ) ? tse_sp_event_export_parse_id_list( wp_unslash( $source['team_id'] ) ) : array(); - $season_ids = isset( $source['season_id'] ) ? tse_sp_event_export_parse_id_list( wp_unslash( $source['season_id'] ) ) : array(); - $league_ids = isset( $source['league_id'] ) ? tse_sp_event_export_parse_id_list( wp_unslash( $source['league_id'] ) ) : array(); - $field_ids = isset( $source['field_id'] ) ? tse_sp_event_export_parse_id_list( wp_unslash( $source['field_id'] ) ) : array(); + $source = is_array( $source ) ? $source : $_GET; + $format = isset( $source['format'] ) ? tse_sp_event_export_sanitize_format( wp_unslash( $source['format'] ) ) : 'matchup'; + $team_ids = isset( $source['team_id'] ) ? tse_sp_event_export_parse_id_list( wp_unslash( $source['team_id'] ) ) : array(); + $season_ids = isset( $source['season_id'] ) ? tse_sp_event_export_parse_id_list( wp_unslash( $source['season_id'] ) ) : array(); + $league_ids = isset( $source['league_id'] ) ? tse_sp_event_export_parse_id_list( wp_unslash( $source['league_id'] ) ) : array(); + $field_ids = isset( $source['field_id'] ) ? tse_sp_event_export_parse_id_list( wp_unslash( $source['field_id'] ) ) : array(); $title_format = isset( $source['title_format'] ) ? tse_sp_event_export_sanitize_title_format( wp_unslash( $source['title_format'] ) ) : 'selected_first'; return array( - 'team_id' => isset( $team_ids[0] ) ? $team_ids[0] : 0, - 'team_ids' => $team_ids, - 'season_id' => isset( $season_ids[0] ) ? $season_ids[0] : 0, - 'season_ids'=> $season_ids, - 'league_id' => isset( $league_ids[0] ) ? $league_ids[0] : 0, - 'league_ids'=> $league_ids, - 'field_id' => isset( $field_ids[0] ) ? $field_ids[0] : 0, - 'field_ids' => $field_ids, - 'format' => $format, + 'team_id' => isset( $team_ids[0] ) ? $team_ids[0] : 0, + 'team_ids' => $team_ids, + 'season_id' => isset( $season_ids[0] ) ? $season_ids[0] : 0, + 'season_ids' => $season_ids, + 'league_id' => isset( $league_ids[0] ) ? $league_ids[0] : 0, + 'league_ids' => $league_ids, + 'field_id' => isset( $field_ids[0] ) ? $field_ids[0] : 0, + 'field_ids' => $field_ids, + 'format' => $format, 'title_format' => $title_format, - 'columns' => isset( $source['columns'] ) ? tse_sp_event_export_sanitize_columns( $format, wp_unslash( $source['columns'] ) ) : tse_sp_event_export_get_default_columns( $format ), + 'columns' => isset( $source['columns'] ) ? tse_sp_event_export_sanitize_columns( $format, wp_unslash( $source['columns'] ) ) : tse_sp_event_export_get_default_columns( $format ), ); } @@ -309,8 +318,8 @@ function tse_sp_event_export_query_posts( $filters ) { function tse_sp_event_export_get_events( $filters ) { $selected_ids = isset( $filters['team_ids'] ) && is_array( $filters['team_ids'] ) ? array_values( array_filter( array_map( 'absint', $filters['team_ids'] ) ) ) : array(); $title_format = tse_sp_event_export_sanitize_title_format( isset( $filters['title_format'] ) ? $filters['title_format'] : 'selected_first' ); - $query_posts = tse_sp_event_export_query_posts( $filters ); - $events = array(); + $query_posts = tse_sp_event_export_query_posts( $filters ); + $events = array(); foreach ( $query_posts as $event ) { $event_id = $event instanceof WP_Post ? (int) $event->ID : 0; @@ -583,10 +592,10 @@ function tse_sp_event_export_fold_ical_line( $line ) { * @return string */ function tse_sp_event_export_get_ical_summary( $event, $filters ) { - $format = tse_sp_event_export_sanitize_format( isset( $filters['format'] ) ? $filters['format'] : 'matchup' ); - $team_ids = isset( $filters['team_ids'] ) && is_array( $filters['team_ids'] ) ? array_values( array_filter( array_map( 'absint', $filters['team_ids'] ) ) ) : array(); + $format = tse_sp_event_export_sanitize_format( isset( $filters['format'] ) ? $filters['format'] : 'matchup' ); + $team_ids = isset( $filters['team_ids'] ) && is_array( $filters['team_ids'] ) ? array_values( array_filter( array_map( 'absint', $filters['team_ids'] ) ) ) : array(); $title_format = tse_sp_event_export_sanitize_title_format( isset( $filters['title_format'] ) ? $filters['title_format'] : 'selected_first' ); - $team_id = isset( $team_ids[0] ) ? $team_ids[0] : 0; + $team_id = isset( $team_ids[0] ) ? $team_ids[0] : 0; if ( 'team' === $format && $team_id > 0 ) { $teams = array_values( array_unique( array_map( 'intval', get_post_meta( $event->ID, 'sp_team', false ) ) ) ); @@ -1019,14 +1028,14 @@ function tse_sp_event_export_get_feed_url( $args = array(), $feed_type = 'csv' ) $filters = tse_sp_event_export_normalize_request_args( $args ); $feed = 'ics' === sanitize_key( $feed_type ) ? 'sp-ics' : 'sp-csv'; $query = array( - 'feed' => $feed, - 'format' => $filters['format'], - 'team_id' => ! empty( $filters['team_ids'] ) ? implode( ',', $filters['team_ids'] ) : '', - 'season_id' => ! empty( $filters['season_ids'] ) ? implode( ',', $filters['season_ids'] ) : '', - 'league_id' => ! empty( $filters['league_ids'] ) ? implode( ',', $filters['league_ids'] ) : '', - 'field_id' => ! empty( $filters['field_ids'] ) ? implode( ',', $filters['field_ids'] ) : '', + 'feed' => $feed, + 'format' => $filters['format'], + 'team_id' => ! empty( $filters['team_ids'] ) ? implode( ',', $filters['team_ids'] ) : '', + 'season_id' => ! empty( $filters['season_ids'] ) ? implode( ',', $filters['season_ids'] ) : '', + 'league_id' => ! empty( $filters['league_ids'] ) ? implode( ',', $filters['league_ids'] ) : '', + 'field_id' => ! empty( $filters['field_ids'] ) ? implode( ',', $filters['field_ids'] ) : '', 'title_format' => isset( $filters['title_format'] ) ? tse_sp_event_export_sanitize_title_format( $filters['title_format'] ) : 'selected_first', - 'columns' => implode( ',', $filters['columns'] ), + 'columns' => implode( ',', $filters['columns'] ), ); return add_query_arg( array_filter( $query, 'strlen' ), home_url( '/' ) ); diff --git a/includes/sp-printable-calendars.php b/includes/sp-printable-calendars.php index 2dc0251..720b646 100644 --- a/includes/sp-printable-calendars.php +++ b/includes/sp-printable-calendars.php @@ -1439,10 +1439,10 @@ if ( ! class_exists( 'Tony_Sportspress_Printable_Calendars' ) ) { * @return array */ private function get_schedule_entries( $team_ids, $season_id, $league_id = 0, $field_ids = array(), $team_label_mode = 'abbreviation', $field_label_mode = '', $title_format = 'selected_first' ) { - $team_ids = is_array( $team_ids ) ? array_values( array_filter( array_map( 'absint', $team_ids ) ) ) : array( absint( $team_ids ) ); - $primary_team = isset( $team_ids[0] ) ? (int) $team_ids[0] : 0; - $is_multi_team = count( $team_ids ) > 1; - $field_ids = is_array( $field_ids ) ? array_values( array_filter( array_map( 'absint', $field_ids ) ) ) : array(); + $team_ids = is_array( $team_ids ) ? array_values( array_filter( array_map( 'absint', $team_ids ) ) ) : array( absint( $team_ids ) ); + $primary_team = isset( $team_ids[0] ) ? (int) $team_ids[0] : 0; + $is_multi_team = count( $team_ids ) > 1; + $field_ids = is_array( $field_ids ) ? array_values( array_filter( array_map( 'absint', $field_ids ) ) ) : array(); $team_label_mode = $this->sanitize_label_mode( $team_label_mode, 'abbreviation' ); $field_label_mode = '' === $field_label_mode ? $this->get_venue_label_mode() : $this->sanitize_label_mode( $field_label_mode, $this->get_venue_label_mode() ); $title_format = $this->sanitize_title_format( $title_format ); @@ -1546,26 +1546,26 @@ if ( ! class_exists( 'Tony_Sportspress_Printable_Calendars' ) ) { } $entries[] = array( - 'event_id' => $event_id, - 'day_key' => wp_date( 'Y-m-d', $timestamp ), - 'month_key' => wp_date( 'Y-m', $timestamp ), - 'timestamp' => $timestamp, - 'is_home' => ! $is_multi_team && $home_id === $context_id, - 'is_matchup' => 'matchup' === $title_format, - 'opponent_id' => $opponent_id, - 'opponent_name' => $opponent_id > 0 ? $this->get_team_label( $opponent_id, $team_label_mode ) : __( 'TBD', 'tonys-sportspress-enhancements' ), - 'title_team_name' => $title_data['team_name'], - 'title_separator' => $title_data['separator'], + 'event_id' => $event_id, + 'day_key' => wp_date( 'Y-m-d', $timestamp ), + 'month_key' => wp_date( 'Y-m', $timestamp ), + 'timestamp' => $timestamp, + 'is_home' => ! $is_multi_team && $home_id === $context_id, + 'is_matchup' => 'matchup' === $title_format, + 'opponent_id' => $opponent_id, + 'opponent_name' => $opponent_id > 0 ? $this->get_team_label( $opponent_id, $team_label_mode ) : __( 'TBD', 'tonys-sportspress-enhancements' ), + 'title_team_name' => $title_data['team_name'], + 'title_separator' => $title_data['separator'], 'title_opponent_name' => $title_data['opponent_name'], - 'home_team_id' => $home_id, - 'away_team_id' => $away_id, - 'home_team_name' => $home_id > 0 ? $this->get_team_label( $home_id, $team_label_mode ) : __( 'TBD', 'tonys-sportspress-enhancements' ), - 'away_team_name' => $away_id > 0 ? $this->get_team_label( $away_id, $team_label_mode ) : __( 'TBD', 'tonys-sportspress-enhancements' ), - 'event_time' => function_exists( 'sp_get_time' ) ? sp_get_time( $event_id ) : get_post_time( get_option( 'time_format' ), false, $event_id, true ), - 'venue_name' => $venue_name, - 'venue_label' => $venue_label, - 'venue_id' => $venue_id, - 'venue_key' => $venue_id > 0 ? 'v:' . $venue_id : 'n:' . strtolower( $venue_name ), + 'home_team_id' => $home_id, + 'away_team_id' => $away_id, + 'home_team_name' => $home_id > 0 ? $this->get_team_label( $home_id, $team_label_mode ) : __( 'TBD', 'tonys-sportspress-enhancements' ), + 'away_team_name' => $away_id > 0 ? $this->get_team_label( $away_id, $team_label_mode ) : __( 'TBD', 'tonys-sportspress-enhancements' ), + 'event_time' => function_exists( 'sp_get_time' ) ? sp_get_time( $event_id ) : get_post_time( get_option( 'time_format' ), false, $event_id, true ), + 'venue_name' => $venue_name, + 'venue_label' => $venue_label, + 'venue_id' => $venue_id, + 'venue_key' => $venue_id > 0 ? 'v:' . $venue_id : 'n:' . strtolower( $venue_name ), ); } @@ -1727,15 +1727,15 @@ if ( ! class_exists( 'Tony_Sportspress_Printable_Calendars' ) ) { for ( $day = 1; $day <= $days_in_month; $day++ ) { $day_key = sprintf( '%s-%02d', $month_key, $day ); $day_entries = isset( $entries_by_day[ $day_key ] ) ? $entries_by_day[ $day_key ] : array(); - $has_matchup = false; + $has_split_title = false; foreach ( $day_entries as $day_entry ) { if ( ! empty( $day_entry['is_matchup'] ) || ! empty( $day_entry['title_team_name'] ) ) { - $has_matchup = true; + $has_split_title = true; break; } } $day_class = ! empty( $day_entries ) ? 'day has-events' : 'day no-events'; - if ( $has_matchup ) { + if ( $has_split_title ) { $day_class .= ' has-matchups'; } $day_style = ''; @@ -1743,10 +1743,10 @@ if ( ! class_exists( 'Tony_Sportspress_Printable_Calendars' ) ) { if ( ! empty( $day_entries ) ) { $first_entry = $day_entries[0]; $first_is_home = ! empty( $first_entry['is_home'] ); - $first_is_matchup = ! empty( $first_entry['is_matchup'] ) || ! empty( $first_entry['title_team_name'] ); + $first_split_title = ! empty( $first_entry['is_matchup'] ) || ! empty( $first_entry['title_team_name'] ); $first_venue_key = isset( $first_entry['venue_key'] ) && is_string( $first_entry['venue_key'] ) ? $first_entry['venue_key'] : ''; $first_venue_color = ( '' !== $first_venue_key && isset( $venue_colors[ $first_venue_key ]['color'] ) ) ? (string) $venue_colors[ $first_venue_key ]['color'] : ''; - $first_background = '' !== $first_venue_color ? $first_venue_color : ( $first_is_home || $first_is_matchup ? $team_palette['primary'] : $team_palette['secondary'] ); + $first_background = '' !== $first_venue_color ? $first_venue_color : ( $first_is_home || $first_split_title ? $team_palette['primary'] : $team_palette['secondary'] ); $first_foreground = $this->get_readable_text_color( $first_background ); $first_background = $this->ensure_minimum_contrast( $first_background, $first_foreground, self::MIN_WHITE_CONTRAST ); $first_foreground = $this->get_readable_text_color( $first_background ); @@ -1781,8 +1781,8 @@ if ( ! class_exists( 'Tony_Sportspress_Printable_Calendars' ) ) { echo wp_kses_post( $logo ); } else { if ( $uses_split_title ) { - $team_name = isset( $entry['title_team_name'] ) ? (string) $entry['title_team_name'] : __( 'TBD', 'tonys-sportspress-enhancements' ); - $separator = isset( $entry['title_separator'] ) ? (string) $entry['title_separator'] : 'at'; + $team_name = isset( $entry['title_team_name'] ) ? (string) $entry['title_team_name'] : __( 'TBD', 'tonys-sportspress-enhancements' ); + $separator = isset( $entry['title_separator'] ) ? (string) $entry['title_separator'] : 'at'; $opponent_name = isset( $entry['title_opponent_name'] ) ? (string) $entry['title_opponent_name'] : __( 'TBD', 'tonys-sportspress-enhancements' ); echo '' . esc_html( $team_name ) . '' . esc_html( $separator ) . '' . esc_html( $opponent_name ) . ''; } else { diff --git a/includes/sp-schedule-exporter.php b/includes/sp-schedule-exporter.php index a983472..bf2d0b1 100644 --- a/includes/sp-schedule-exporter.php +++ b/includes/sp-schedule-exporter.php @@ -87,10 +87,10 @@ function tse_sp_schedule_exporter_render_shortcode() { $season_id = tse_sp_schedule_exporter_resolve_season_id( $seasons ); $teams = tse_sp_schedule_exporter_get_teams( $league_id, $season_id ); $team_ids = tse_sp_schedule_exporter_resolve_team_ids( $teams ); - $fields = tse_sp_schedule_exporter_get_fields(); - $field_id = tse_sp_schedule_exporter_resolve_field_id( $fields ); - $export_type = tse_sp_schedule_exporter_resolve_export_type(); - $subformat = tse_sp_schedule_exporter_resolve_subformat(); + $fields = tse_sp_schedule_exporter_get_fields(); + $field_id = tse_sp_schedule_exporter_resolve_field_id( $fields ); + $export_type = tse_sp_schedule_exporter_resolve_export_type(); + $subformat = tse_sp_schedule_exporter_resolve_subformat(); $title_format = tse_sp_schedule_exporter_resolve_title_format(); if ( empty( $teams ) ) { @@ -197,8 +197,15 @@ function tse_sp_schedule_exporter_render_shortcode() { $team_ids, 'season_id' => $season_id, 'league_id' => $league_id, 'field_id' => $field_id, 'format' => $subformat, 'title_format' => $title_format ), 'csv' ); - $ics_url = tse_sp_event_export_get_feed_url( array( 'team_id' => $team_ids, 'season_id' => $season_id, 'league_id' => $league_id, 'field_id' => $field_id, 'title_format' => $title_format ), 'ics' ); + $feed_args = array( + 'team_id' => $team_ids, + 'season_id' => $season_id, + 'league_id' => $league_id, + 'field_id' => $field_id, + 'title_format' => $title_format, + ); + $csv_url = tse_sp_event_export_get_feed_url( array_merge( $feed_args, array( 'format' => $subformat ) ), 'csv' ); + $ics_url = tse_sp_event_export_get_feed_url( $feed_args, 'ics' ); $print_url = tse_sp_schedule_exporter_get_printable_url( $team_ids, $season_id, 'letter', $league_id, false, $field_id, false, 'name', 'name', $title_format ); $current_url = tse_sp_schedule_exporter_get_output_url( $export_type, $csv_url, $ics_url, $print_url ); ?> @@ -588,7 +595,7 @@ function tse_sp_schedule_exporter_resolve_title_format() { function tse_sp_schedule_exporter_resolve_title_format_value( $value ) { $value = sanitize_key( (string) $value ); - return in_array( $value, array( 'selected_first', 'matchup' ), true ) ? $value : 'selected_first'; + return in_array( $value, tse_sp_event_export_get_title_formats(), true ) ? $value : 'selected_first'; } /**