From 779c84054fe41e49a94261048b6d382e90eff28b Mon Sep 17 00:00:00 2001 From: Brian Miyaji Date: Sun, 19 Oct 2014 01:06:30 +1100 Subject: [PATCH] Add option to insert sample data during install --- ...rts.php => class-sp-admin-sample-data.php} | 282 +----------------- includes/admin/class-sp-admin-settings.php | 53 ++++ includes/admin/class-sp-admin-welcome.php | 20 +- .../settings/class-sp-settings-general.php | 6 +- includes/admin/views/html-admin-config.php | 2 +- includes/admin/views/html-admin-overview.php | 2 +- 6 files changed, 87 insertions(+), 278 deletions(-) rename includes/admin/{class-sp-admin-sports.php => class-sp-admin-sample-data.php} (68%) diff --git a/includes/admin/class-sp-admin-sports.php b/includes/admin/class-sp-admin-sample-data.php similarity index 68% rename from includes/admin/class-sp-admin-sports.php rename to includes/admin/class-sp-admin-sample-data.php index 8110a013..706ab85c 100644 --- a/includes/admin/class-sp-admin-sports.php +++ b/includes/admin/class-sp-admin-sample-data.php @@ -1,251 +1,16 @@ array(), - __( 'Esports', 'sportspress' ) => array(), - __( 'Other', 'sportspress' ) => array( 'custom' => __( 'Custom', 'sportspress' ) ), - ); - - $dir = scandir( SP()->plugin_path() . '/presets' ); - $files = array(); - if ( $dir ) { - foreach ( $dir as $key => $value ) { - if ( substr( $value, 0, 1 ) !== '.' && strpos( $value, '.' ) !== false ) { - $files[] = $value; - } - } - } - foreach( $files as $file ) { - $json_data = file_get_contents( SP()->plugin_path() . '/presets/' . $file ); - $data = json_decode( $json_data, true ); - if ( ! is_array( $data ) ) continue; - $id = preg_replace('/\\.[^.\\s]{3,4}$/', '', $file ); - $presets[ $id ] = $data; - $name = array_key_exists( 'name', $data ) ? __( $data['name'], 'sportspress' ) : $id; - self::$options[ __( 'Traditional Sports', 'sportspress' ) ][ $id ] = $name; - } - asort( self::$options[ __( 'Traditional Sports', 'sportspress' ) ] ); - - $dir = scandir( SP()->plugin_path() . '/presets/esports' ); - $files = array(); - if ( $dir ) { - foreach ( $dir as $key => $value ) { - if ( substr( $value, 0, 1 ) !== '.' && strpos( $value, '.' ) !== false ) { - $files[] = $value; - } - } - } - foreach( $files as $file ) { - $json_data = file_get_contents( SP()->plugin_path() . '/presets/esports/' . $file ); - $data = json_decode( $json_data, true ); - if ( ! is_array( $data ) ) continue; - $id = preg_replace('/\\.[^.\\s]{3,4}$/', '', $file ); - $presets[ $id ] = $data; - $name = array_key_exists( 'name', $data ) ? __( $data['name'], 'sportspress' ) : $id; - self::$options[ __( 'Esports', 'sportspress' ) ][ $id ] = $name; - } - asort( self::$options[ __( 'Esports', 'sportspress' ) ] ); - - self::$presets = apply_filters( 'sportspress_get_presets', $presets ); - } - return self::$presets; - } - - public static function get_preset( $id ) { - $json_data = @file_get_contents( SP()->plugin_path() . '/presets/' . $id . '.json', true ); - - if ( $json_data ) return json_decode( $json_data, true ); - - $dir = scandir( SP()->plugin_path() . '/presets' ); - if ( $dir ) { - foreach ( $dir as $key => $value ) { - if ( substr( $value, 0, 1 ) !== '.' && strpos( $value, '.' ) === false ) { - $json_data = @file_get_contents( SP()->plugin_path() . '/presets/' . $value . '/' . $id . '.json', true ); - if ( $json_data ) return json_decode( $json_data, true ); - } - } - } - } - - public static function get_preset_options() { - $presets = self::get_presets(); - return self::$options; - } - - /** - * Apply preset - * - * @access public - * @return void - */ - public static function apply_preset( $id ) { - if ( 'custom' == $id ) { - $preset = array(); - } else { - $preset = self::get_preset( $id ); - } - - // Positions - $positions = sp_array_value( $preset, 'positions', array() ); - foreach ( $positions as $index => $term ) { - $slug = $index . '-' . sanitize_title( $term ); - wp_insert_term( $term, 'sp_position', array( 'description' => $term, 'slug' => $slug ) ); - } - - // Outcomes - $post_type = 'sp_outcome'; - $outcomes = sp_array_value( $preset, 'outcomes', array() ); - self::delete_preset_posts( $post_type ); - foreach ( $outcomes as $index => $outcome ) { - $post = self::get_post_array( $outcome, $post_type ); - if ( empty( $post ) ) continue; - $id = self::insert_preset_post( $post, $index ); - update_post_meta( $id, 'sp_abbreviation', sp_array_value( $outcome, 'abbreviation', null ) ); - } - - // Results - $post_type = 'sp_result'; - $results = sp_array_value( $preset, 'results', array() ); - self::delete_preset_posts( $post_type ); - $primary_result = 0; - foreach ( $results as $index => $result ) { - $post = self::get_post_array( $result, $post_type ); - if ( empty( $post ) ) continue; - $id = self::insert_preset_post( $post, $index ); - if ( is_array( $result ) && array_key_exists( 'primary', $result ) ) $primary_result = $post['post_name']; - } - - // Make sure statistics and metrics have greater menu order than performance - $i = 0; - - // Performance - $post_type = 'sp_performance'; - $performances = sp_array_value( $preset, 'performance', array() ); - self::delete_preset_posts( $post_type ); - foreach ( $performances as $index => $performance ) { - $post = self::get_post_array( $performance, $post_type ); - if ( empty( $post ) ) continue; - $id = self::insert_preset_post( $post, $index ); - $i ++; - } - - // Columns - $post_type = 'sp_column'; - $columns = sp_array_value( $preset, 'columns', array() ); - self::delete_preset_posts( $post_type ); - foreach ( $columns as $index => $column ) { - $post = self::get_post_array( $column, $post_type ); - if ( empty( $post ) ) continue; - $id = self::insert_preset_post( $post, $index ); - update_post_meta( $id, 'sp_equation', sp_array_value( $column, 'equation', null ) ); - update_post_meta( $id, 'sp_precision', sp_array_value( $column, 'precision', 0 ) ); - update_post_meta( $id, 'sp_priority', sp_array_value( $column, 'priority', null ) ); - update_post_meta( $id, 'sp_order', sp_array_value( $column, 'order', 'DESC' ) ); - } - - // Metrics - $post_type = 'sp_metric'; - $metrics = sp_array_value( $preset, 'metrics', array() ); - self::delete_preset_posts( $post_type ); - foreach ( $metrics as $index => $metric ) { - $post = self::get_post_array( $metric, $post_type ); - if ( empty( $post ) ) continue; - $id = self::insert_preset_post( $post, $i + $index ); - $i ++; - } - - // Statistics - $post_type = 'sp_statistic'; - $statistics = sp_array_value( $preset, 'statistics', array() ); - self::delete_preset_posts( $post_type ); - foreach ( $statistics as $index => $statistic ) { - $post = self::get_post_array( $statistic, $post_type ); - if ( empty( $post ) ) continue; - $id = self::insert_preset_post( $post, $i + $index ); - update_post_meta( $id, 'sp_equation', sp_array_value( $statistic, 'equation', null ) ); - update_post_meta( $id, 'sp_precision', sp_array_value( $statistic, 'precision', 0 ) ); - } - update_option( 'sportspress_primary_result', $primary_result ); - - self::delete_sample_data(); - self::add_sample_data(); - } - - public static function delete_preset_posts( $post_type = null ) { - $args = array( - 'post_type' => $post_type, - 'posts_per_page' => -1, - 'post_status' => array( 'publish', 'pending', 'draft', 'auto-draft', 'future', 'private', 'inherit', 'trash' ), - '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; - } - - public static function get_post_array( $post = array(), $post_type = null ) { - $post_array = array(); - if ( is_string( $post ) ) { - $post_array['post_title'] = $post; - $post_array['post_name'] = sp_get_eos_safe_slug( $post_array['post_title'] ); - } elseif ( is_array( $post ) ) { - if ( ! array_key_exists( 'name', $post ) ) $post_array = array(); - $post_array['post_title'] = $post['name']; - $post_array['post_name'] = sp_array_value( $post, 'id', sp_get_eos_safe_slug( $post_array['post_title'] ) ); - } - - // Return empty array if post with same slug already exists - if ( get_page_by_path( $post_array['post_name'], OBJECT, $post_type ) ) return array(); - - // Set post type - $post_array['post_type'] = $post_type; - - // Add post excerpt - $post_array['post_excerpt'] = sp_array_value( $post, 'description', $post_array['post_title'] ); - - return $post_array; - } - - public static function insert_preset_post( $post, $index = 0 ) { - // Increment menu order by 10 and publish post - $post['menu_order'] = $index * 10 + 10; - $post['post_status'] = 'publish'; - $id = wp_insert_post( $post ); - - // Flag as preset - update_post_meta( $id, '_sp_preset', 1 ); - - return $id; - } +class SP_Admin_Sample_Data { /** * Sample data @@ -254,7 +19,7 @@ class SP_Admin_Sports { * * @access public */ - public static function add_sample_data() { + public static function insert_posts() { // Initialize inserted ids array $inserted_ids = array( @@ -414,6 +179,13 @@ class SP_Admin_Sports { 'Bobby Brown', ); + // Define event videos + $event_videos = array( + 'https://www.youtube.com/watch?v=t_aQRQGoXRk', + 'https://www.youtube.com/watch?v=sIrjQyuwteM', + 'https://www.youtube.com/watch?v=PJuqJefZwuA', + ); + // Get countries $countries = new SP_Countries(); @@ -687,6 +459,7 @@ class SP_Admin_Sports { sp_update_post_meta_recursive( $id, 'sp_player', $event_players ); update_post_meta( $id, 'sp_columns', $columns ); update_post_meta( $id, 'sp_format', 'league' ); + update_post_meta( $id, 'sp_video', $event_videos[ $i ] ); } /* @@ -843,7 +616,7 @@ class SP_Admin_Sports { * * @access public */ - public static function delete_sample_data() { + public static function delete_posts() { $post_types = sp_post_types(); $args = array( 'post_type' => $post_types, @@ -863,31 +636,4 @@ class SP_Admin_Sports { wp_delete_post( $post->ID, true ); endforeach; } - - /** - * Sport preset names for localization - * @return null - */ - public static function sport_preset_names() { - __( 'Baseball', 'sportspress' ); - __( 'Basketball', 'sportspress' ); - __( 'Cricket', 'sportspress' ); - __( 'Darts', 'sportspress' ); - __( 'American Football', 'sportspress' ); - __( 'Australian Rules Football', 'sportspress' ); - __( 'Handball', 'sportspress' ); - __( 'Ice Hockey', 'sportspress' ); - __( 'Netball', 'sportspress' ); - __( 'Rugby League', 'sportspress' ); - __( 'Rugby Union', 'sportspress' ); - __( 'Snooker', 'sportspress' ); - __( 'Soccer (Association Football)', 'sportspress' ); - __( 'Squash', 'sportspress' ); - __( 'Table Tennis', 'sportspress' ); - __( 'Tennis', 'sportspress' ); - __( 'Volleyball', 'sportspress' ); - __( 'Water Polo', 'sportspress' ); - __( 'Dota 2', 'sportspress' ); - __( 'League of Legends', 'sportspress' ); - } } diff --git a/includes/admin/class-sp-admin-settings.php b/includes/admin/class-sp-admin-settings.php index 4c9bebb7..fae8eac1 100644 --- a/includes/admin/class-sp-admin-settings.php +++ b/includes/admin/class-sp-admin-settings.php @@ -411,6 +411,58 @@ class SP_Admin_Settings { + + + + + + +

+ +

+ +

- +
@@ -262,16 +267,16 @@ class SP_Admin_Welcome {

+
    +
  • +
  • +
  • +
-
    -
  • -
  • -
  • -
@@ -317,8 +322,9 @@ class SP_Admin_Welcome { $settings = array( array( 'id' => 'sportspress_sport', 'default' => 'custom', - 'type' => 'groupselect', + 'type' => 'sport', 'title' => __( 'Sport', 'sportspress' ), + 'welcome' => true, 'class' => $class, 'options' => $sport_options, )); diff --git a/includes/admin/settings/class-sp-settings-general.php b/includes/admin/settings/class-sp-settings-general.php index 156af419..49ab3051 100644 --- a/includes/admin/settings/class-sp-settings-general.php +++ b/includes/admin/settings/class-sp-settings-general.php @@ -49,7 +49,7 @@ class SP_Settings_General extends SP_Settings_Page { 'title' => __( 'Sport', 'sportspress' ), 'id' => 'sportspress_sport', 'default' => 'custom', - 'type' => 'groupselect', + 'type' => 'sport', 'options' => $presets, ), @@ -184,6 +184,10 @@ class SP_Settings_General extends SP_Settings_Page { update_option( '_sp_needs_welcome', 0 ); endif; + if ( isset( $_POST['add_sample_data'] ) ): + SP_Admin_Sample_Data::insert_posts(); + endif; + $settings = $this->get_settings(); SP_Admin_Settings::save_fields( $settings ); diff --git a/includes/admin/views/html-admin-config.php b/includes/admin/views/html-admin-config.php index 72622638..f5e25169 100644 --- a/includes/admin/views/html-admin-config.php +++ b/includes/admin/views/html-admin-config.php @@ -1,6 +1,6 @@

- +

diff --git a/includes/admin/views/html-admin-overview.php b/includes/admin/views/html-admin-overview.php index eb10bb93..3e135749 100644 --- a/includes/admin/views/html-admin-overview.php +++ b/includes/admin/views/html-admin-overview.php @@ -1,6 +1,6 @@

- +