Create New Item
Item Type
File
Folder
Item Name
Search file in folder and subfolders...
Are you sure want to rename?
File Manager
/
06
/
wp-content
/
plugins
/
sportspress
/
includes
/
admin
:
class-sp-admin-sports.php
Advanced Search
Upload
New Item
Settings
Back
Back Up
Advanced Editor
Save
<?php /** * SportsPress Admin Sports Class. * * The SportsPress admin sports class stores preset sport data. * * @class SP_Admin_Sports * @version 2.6 * @package SportsPress/Admin * @category Class * @author ThemeBoy */ class SP_Admin_Sports { public static $presets = array(); public static $options = array(); /** * Include the preset classes */ public static function get_presets() { if ( empty( self::$presets ) ) { $presets = array(); self::$options = array( 'team-sports' => array(), 'racket-sports' => array(), 'water-sports' => array(), 'target-sports' => array(), 'esports' => array(), 'other' => array(), ); foreach ( self::$options as $slug => $options ) { $dir = scandir( SP()->plugin_path() . '/presets/' . $slug ); $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/' . $slug . '/' . $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 ) ? esc_attr__( $data['name'], 'sportspress' ) : $id; // Conditionally append filename in parentheses for clarity if ( false === strpos( str_replace( ' ', '', strtolower( $data['name'] ) ), str_replace( '-', '', $id ) ) ) { if ( 4 < strlen( $id ) ) { $name .= ' (' . ucfirst( $id ) . ')'; } else { $name .= ' (' . strtoupper( $id ) . ')'; } } self::$options[ $slug ][ $id ] = $name; } asort( self::$options[ $slug ] ); } 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 ) { $preset = self::get_preset( $id ); // Positions $positions = sp_array_value( $preset, 'positions', array() ); $i = 0; foreach ( $positions as $position ) { if ( is_string( $position ) ) { $name = $position; $sections = array( 0, 1 ); } else { $name = sp_array_value( $position, 'name', esc_attr__( 'Position', 'sportspress' ) ); $sections = sp_array_value( $position, 'sections', array( 0, 1 ) ); } $term = wp_insert_term( $name, 'sp_position' ); if ( is_wp_error( $term ) ) { continue; } $t_id = $term['term_id']; $term_meta = get_option( "taxonomy_$t_id" ); $term_meta['sp_sections'] = $sections; update_option( "taxonomy_$t_id", $term_meta ); update_term_meta( $t_id, 'sp_order', $i + 1 ); $i++; } // 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 ) ); update_post_meta( $id, 'sp_condition', sp_array_value( $outcome, 'condition', 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']; } update_post_meta( $id, 'sp_equation', sp_array_value( $result, 'equation', null ) ); } // Make sure statistics, metrics and specs 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 ); if ( isset( $performance['position'] ) ) { wp_set_object_terms( $id, $performance['position'], 'sp_position', false ); } update_post_meta( $id, 'sp_singular', sp_array_value( $performance, 'singular', null ) ); update_post_meta( $id, 'sp_icon', sp_array_value( $performance, 'icon', null ) ); update_post_meta( $id, 'sp_color', sp_array_value( $performance, 'color', null ) ); update_post_meta( $id, 'sp_section', sp_array_value( $performance, 'section', -1 ) ); update_post_meta( $id, 'sp_format', sp_array_value( $performance, 'format', 'number' ) ); update_post_meta( $id, 'sp_equation', sp_array_value( $performance, 'equation', null ) ); update_post_meta( $id, 'sp_precision', sp_array_value( $performance, 'precision', 0 ) ); update_post_meta( $id, 'sp_timed', sp_array_value( $performance, 'timed', null ) ); $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 ++; } // Event Specs $post_type = 'sp_spec'; $specs = sp_array_value( $preset, 'specs', array() ); self::delete_preset_posts( $post_type ); foreach ( $specs as $index => $spec ) { $post = self::get_post_array( $spec, $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_post_meta( $id, 'sp_type', sp_array_value( $statistic, 'type', 'total' ) ); } // Options $options = sp_array_value( $preset, 'options', array() ); foreach ( $options as $option => $value ) { update_option( 'sportspress_' . $option, $value ); } // Primary Result update_option( 'sportspress_primary_result', $primary_result ); } 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 if ( is_array( $post ) && array_key_exists( 'description', $post ) ) { $post_array['post_excerpt'] = $post['description']; } 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; } /** * Sport category names * * @return null */ public static function sport_category_names() { return apply_filters( 'sportspress_sport_categories', array( 'team-sports' => esc_attr__( 'Team Sports', 'sportspress' ), 'racket-sports' => esc_attr__( 'Racket Sports', 'sportspress' ), 'water-sports' => esc_attr__( 'Water Sports', 'sportspress' ), 'target-sports' => esc_attr__( 'Target Sports', 'sportspress' ), 'esports' => esc_attr__( 'Esports', 'sportspress' ), 'other' => esc_attr__( 'Other', 'sportspress' ), ) ); } /** * Sport preset names for localization * * @return null */ public static function sport_preset_names() { __( 'Baseball', 'sportspress' ); __( 'Basketball', 'sportspress' ); __( 'Cricket', 'sportspress' ); __( 'Darts', 'sportspress' ); __( 'Floorball', 'sportspress' ); __( 'Association Football', 'sportspress' ); __( 'American Football', 'sportspress' ); __( 'Australian Rules Football', 'sportspress' ); __( 'Handball', 'sportspress' ); __( 'Ice Hockey', 'sportspress' ); __( 'Lacrosse', 'sportspress' ); __( 'Netball', 'sportspress' ); __( 'Rugby League', 'sportspress' ); __( 'Rugby Union', 'sportspress' ); __( 'Snooker', 'sportspress' ); __( 'Softball', 'sportspress' ); __( 'Squash', 'sportspress' ); __( 'Table Tennis', 'sportspress' ); __( 'Tennis', 'sportspress' ); __( 'Volleyball', 'sportspress' ); __( 'Water Polo', 'sportspress' ); __( 'Dota 2', 'sportspress' ); __( 'League of Legends', 'sportspress' ); __( 'Counter-Strike: Global Offensive', 'sportspress' ); } }