diff --git a/admin/hooks/admin-init.php b/admin/hooks/admin-init.php deleted file mode 100644 index d7090412..00000000 --- a/admin/hooks/admin-init.php +++ /dev/null @@ -1,130 +0,0 @@ - $posts ): - - $args = array( - 'post_type' => $post_type, - 'numberposts' => -1, - 'posts_per_page' => -1, - 'meta_query' => array( - array( - 'key' => 'sp_preset', - 'value' => 1 - ) - ) - ); - - // Delete posts - $old_posts = get_posts( $args ); - - foreach( $old_posts as $post ): - wp_delete_post( $post->ID, true); - endforeach; - - // Add posts - foreach( $posts as $index => $post ): - - // Make sure post doesn't overlap - if ( ! get_page_by_path( $post['post_name'], OBJECT, $post_type ) ): - - // Translate post title - $post['post_title'] = __( $post['post_title'], 'sportspress' ); - - // Set post type - $post['post_type'] = $post_type; - - // Increment menu order by 2 and publish post - $post['menu_order'] = $index * 2 + 2; - $post['post_status'] = 'publish'; - $id = wp_insert_post( $post ); - - // Flag as preset - update_post_meta( $id, 'sp_preset', 1 ); - - // Update meta - if ( array_key_exists( 'meta', $post ) ): - - foreach ( $post['meta'] as $key => $value ): - - update_post_meta( $id, $key, $value ); - - endforeach; - - endif; - - endif; - - endforeach; - - endforeach; - - return $input; -} \ No newline at end of file diff --git a/admin/hooks/manage-posts-custom-column.php b/admin/hooks/manage-posts-custom-column.php index fb10c975..9d737598 100644 --- a/admin/hooks/manage-posts-custom-column.php +++ b/admin/hooks/manage-posts-custom-column.php @@ -11,7 +11,10 @@ function sportspress_manage_posts_custom_column( $column, $post_id ) { case 'sp_team': $post_type = get_post_type( $post ); $teams = get_post_meta ( $post_id, 'sp_team', false ); - if ( $post_type == 'sp_event' ): + if ( empty( $teams ) ): + echo '—'; + break; + elseif ( $post_type == 'sp_event' ): $results = get_post_meta( $post_id, 'sp_results', true ); foreach( $teams as $team_id ): if ( ! $team_id ) continue; @@ -69,6 +72,9 @@ function sportspress_manage_posts_custom_column( $column, $post_id ) { case 'sp_season': echo get_the_terms ( $post_id, 'sp_season' ) ? the_terms( $post_id, 'sp_season' ) : '—'; break; + case 'sp_venue': + echo get_the_terms ( $post_id, 'sp_venue' ) ? the_terms( $post_id, 'sp_venue' ) : '—'; + break; case 'sp_sponsor': echo get_the_terms ( $post_id, 'sp_sponsor' ) ? the_terms( $post_id, 'sp_sponsor' ) : '—'; break; diff --git a/admin/hooks/sanitize-title.php b/admin/hooks/sanitize-title.php index 01c736aa..bf13e435 100644 --- a/admin/hooks/sanitize-title.php +++ b/admin/hooks/sanitize-title.php @@ -1,7 +1,11 @@ $name, + 'labels' => $labels, + 'public' => true, + 'hierarchical' => false, + 'supports' => array( 'title', 'author', 'excerpt' ), + 'register_meta_box_cb' => 'sportspress_calendar_meta_init', + 'rewrite' => array( 'slug' => get_option( 'sp_calendar_slug', 'calendars' ) ), + 'show_in_menu' => 'edit.php?post_type=sp_event', + 'show_in_admin_bar' => true, +// 'capability_type' => 'sp_calendar' + ); + register_post_type( 'sp_calendar', $args ); +} +add_action( 'init', 'sportspress_calendar_post_init' ); + +function sportspress_calendar_edit_columns() { + $columns = array( + 'cb' => '', + 'title' => __( 'Title' ), + 'sp_team' => __( 'Teams', 'sportspress' ), + 'sp_season' => __( 'Seasons', 'sportspress' ), + ); + return $columns; +} +add_filter( 'manage_edit-sp_calendar_columns', 'sportspress_calendar_edit_columns' ); + +function sportspress_calendar_meta_init( $post ) { + $teams = (array)get_post_meta( $post->ID, 'sp_team', false ); + + add_meta_box( 'sp_teamdiv', __( 'Teams', 'sportspress' ), 'sportspress_calendar_team_meta', 'sp_calendar', 'side', 'high' ); + + if ( $teams && $teams != array(0) ): + add_meta_box( 'sp_columnsdiv', __( 'League Table', 'sportspress' ), 'sportspress_calendar_columns_meta', 'sp_calendar', 'normal', 'high' ); + endif; +} + +function sportspress_calendar_team_meta( $post, $test ) { + $league_id = sportspress_get_the_term_id( $post->ID, 'sp_season', 0 ); + ?> +
+ 'sp_season', + 'name' => 'sp_season', + 'selected' => $league_id, + 'value' => 'term_id' + ); + sportspress_dropdown_taxonomies( $args ); + ?> +
+ ID, 'sp_team', 'block', 'sp_season' ); + sportspress_post_adder( 'sp_team' ); + ?> +
+
+
ID, 'sp_player', 'block', 'sp_team' ); sportspress_post_adder( 'sp_player' ); diff --git a/admin/post-types/table.php b/admin/post-types/table.php index 4d37c54c..ac3fb53a 100644 --- a/admin/post-types/table.php +++ b/admin/post-types/table.php @@ -34,6 +34,7 @@ add_filter( 'manage_edit-sp_table_columns', 'sportspress_table_edit_columns' ); function sportspress_table_meta_init( $post ) { $teams = (array)get_post_meta( $post->ID, 'sp_team', false ); + remove_meta_box( 'sp_seasondiv', 'sp_table', 'side' ); add_meta_box( 'sp_teamdiv', __( 'Teams', 'sportspress' ), 'sportspress_table_team_meta', 'sp_table', 'side', 'high' ); if ( $teams && $teams != array(0) ): diff --git a/admin/settings/settings.php b/admin/settings/settings.php index 4417ab17..cf35bbe7 100644 --- a/admin/settings/settings.php +++ b/admin/settings/settings.php @@ -55,3 +55,131 @@ function sportspress_event_stats_callback() { function sportspress_player_stats_callback() { sportspress_render_option_field( 'sportspress_stats', 'player', 'textarea' ); } + +function sportspress_settings_init() { + + $installed = get_option( 'sportspress_installed', false ); + + // General settings + register_setting( + 'sportspress_general', + 'sportspress', + 'sportspress_validate' + ); + + add_settings_section( + 'general', + '', + '', + 'sportspress_general' + ); + + add_settings_field( + 'sport', + __( 'Sport', 'sportspress' ), + 'sportspress_sport_callback', + 'sportspress_general', + 'general' + ); + + // Event Settings + register_setting( + 'sportspress_events', + 'sportspress', + 'sportspress_validate' + ); + + add_settings_section( + 'events', + '', + '', + 'sportspress_events' + ); + + add_settings_field( + 'sport', + __( 'Sport', 'sportspress' ), + 'sportspress_sport_callback', + 'sportspress_events', + 'events' + ); + +} +add_action( 'admin_init', 'sportspress_settings_init', 1 ); + +function sportspress_validate( $input ) { + + $options = get_option( 'sportspress' ); + + // Do nothing if sport is the same as currently selected + if ( sportspress_array_value( $options, 'sport', null ) == sportspress_array_value( $input, 'sport', null ) ) + + return $input; + + // Get sports presets + global $sportspress_sports; + + // Get array of post types to insert + $post_groups = sportspress_array_value( sportspress_array_value( $sportspress_sports, sportspress_array_value( $input, 'sport', null ), array() ), 'posts', array() ); + + // Loop through each post type + foreach( $post_groups as $post_type => $posts ): + + $args = array( + 'post_type' => $post_type, + 'numberposts' => -1, + 'posts_per_page' => -1, + 'meta_query' => array( + array( + 'key' => 'sp_preset', + 'value' => 1 + ) + ) + ); + + // Delete posts + $old_posts = get_posts( $args ); + + foreach( $old_posts as $post ): + wp_delete_post( $post->ID, true); + endforeach; + + // Add posts + foreach( $posts as $index => $post ): + + // Make sure post doesn't overlap + if ( ! get_page_by_path( $post['post_name'], OBJECT, $post_type ) ): + + // Translate post title + $post['post_title'] = __( $post['post_title'], 'sportspress' ); + + // Set post type + $post['post_type'] = $post_type; + + // Increment menu order by 2 and publish post + $post['menu_order'] = $index * 2 + 2; + $post['post_status'] = 'publish'; + $id = wp_insert_post( $post ); + + // Flag as preset + update_post_meta( $id, 'sp_preset', 1 ); + + // Update meta + if ( array_key_exists( 'meta', $post ) ): + + foreach ( $post['meta'] as $key => $value ): + + update_post_meta( $id, $key, $value ); + + endforeach; + + endif; + + endif; + + endforeach; + + endforeach; + + return $input; +} diff --git a/admin/terms/season.php b/admin/terms/season.php index 6528c656..c4a33cb3 100644 --- a/admin/terms/season.php +++ b/admin/terms/season.php @@ -3,19 +3,21 @@ function sportspress_season_term_init() { $name = __( 'Seasons', 'sportspress' ); $singular_name = __( 'Season', 'sportspress' ); $lowercase_name = __( 'season', 'sportspress' ); - $object_type = array( 'sp_team', 'sp_event', 'sp_player', 'sp_staff' ); + $object_type = array( 'sp_event', 'sp_calendar', 'sp_team', 'sp_table', 'sp_player', 'sp_list', 'sp_staff' ); $labels = sportspress_get_term_labels( $name, $singular_name, $lowercase_name ); $args = array( 'label' => $name, 'labels' => $labels, 'public' => true, 'hierarchical' => true, - 'rewrite' => array( 'slug' => 'league' ) + 'rewrite' => array( 'slug' => 'season' ) ); register_taxonomy( 'sp_season', $object_type, $args ); - register_taxonomy_for_object_type( 'sp_season', 'sp_team' ); register_taxonomy_for_object_type( 'sp_season', 'sp_event' ); + register_taxonomy_for_object_type( 'sp_season', 'sp_calendar' ); + register_taxonomy_for_object_type( 'sp_season', 'sp_team' ); register_taxonomy_for_object_type( 'sp_season', 'sp_player' ); + register_taxonomy_for_object_type( 'sp_season', 'sp_list' ); register_taxonomy_for_object_type( 'sp_season', 'sp_staff' ); } add_action( 'init', 'sportspress_season_term_init' ); diff --git a/admin/terms/venue.php b/admin/terms/venue.php new file mode 100644 index 00000000..65fad099 --- /dev/null +++ b/admin/terms/venue.php @@ -0,0 +1,58 @@ + $name, + 'labels' => $labels, + 'public' => true, + 'hierarchical' => true, + 'rewrite' => array( 'slug' => 'venue' ) + ); + register_taxonomy( 'sp_venue', $object_type, $args ); + register_taxonomy_for_object_type( 'sp_venue', 'sp_event' ); + register_taxonomy_for_object_type( 'sp_venue', 'sp_calendar' ); +} +add_action( 'init', 'sportspress_venue_term_init' ); + +function sportspress_venue_edit_form_fields( $term ) { + $t_id = $term->term_id; + $term_meta = get_option( "taxonomy_$t_id" ); ?> +