/** * Save event results inline. * * @since 1.5 */ function save_inline_results() { check_ajax_referer('sp-save-inline-results', 'nonce'); $id = sp_array_value($_POST, 'post_id'); $results = sp_array_value($_POST, 'results'); if (sp_update_main_results($id, $results)) { wp_send_json_success(); } else { wp_send_json_error(); } }
/** * Save meta boxes data */ public static function save($post_id) { // Format update_post_meta($post_id, 'sp_format', sp_array_value($_POST, 'sp_format', 'bracket')); // Rounds $limit = intval(get_option('sportspress_tournament_rounds', '6')); $rounds = sp_array_value($_POST, 'sp_rounds', 1); if ($rounds < 1) { $rounds = 1; } elseif ($rounds > $limit) { $rounds = $limit; } update_post_meta($post_id, 'sp_rounds', $rounds); // Winner update_post_meta($post_id, 'sp_winner', sp_array_value($_POST, 'sp_winner')); // Labels update_post_meta($post_id, 'sp_labels', sp_array_value($_POST, 'sp_labels', array())); // Get main result option $main_result = sp_get_main_result_option(); // Get terms $tax_input = sp_array_value($_POST, 'tax_input', array()); $leagues = array_map('intval', sp_array_value($tax_input, 'sp_league', array())); $seasons = array_map('intval', sp_array_value($tax_input, 'sp_season', array())); // Events $events = sp_array_value($_POST, 'sp_event', array()); ksort($events); $event_ids = array(); foreach ($events as $event) { // Get details $id = sp_array_value($event, 'id', 0); $teams = sp_array_value($event, 'teams', array()); $results = sp_array_value($event, 'results', array()); $date = sp_array_value($event, 'date', ''); $h = sp_array_value($event, 'hh', ''); $m = sp_array_value($event, 'mm', '00'); // Update or add new event if (strlen($date)) { // Add time to date if given if (strlen($h)) { $h = substr(str_pad($h, 2, '0', STR_PAD_LEFT), 0, 2); $m = substr(str_pad($m, 2, '0', STR_PAD_LEFT), 0, 2); $time = $h . ':' . $m; $date .= ' ' . trim($time); } // Generate title $team_names = array(); foreach ($teams as $team) { if (!$team) { continue; } $team_names[] = get_the_title($team); } $new_title = implode(' ' . get_option('sportspress_event_teams_delimiter', 'vs') . ' ', $team_names); // Update or add new event if ($id) { $post = array('ID' => $id, 'post_date' => $date); // Update title if not set $title = get_the_title($id); if (!strlen($title)) { $post['post_title'] = $new_title; wp_update_post($post); } } else { $args = array('post_type' => 'sp_event', 'post_title' => $new_title, 'post_status' => 'publish', 'post_date' => $date); $id = wp_insert_post($args); // Update league if (array_filter($leagues)) { wp_set_object_terms($id, $leagues, 'sp_league', false); } // Update season if (array_filter($seasons)) { wp_set_object_terms($id, $seasons, 'sp_season', false); } } // Update teams delete_post_meta($id, 'sp_team'); foreach ($teams as $team) { add_post_meta($id, 'sp_team', $team); } // Update results if (sizeof($results) && sizeof($teams)) { $results = array_combine($teams, $results); if ($results) { sp_update_main_results($id, $results); } } // Update event format update_post_meta($id, 'sp_format', 'tournament'); } // Add to event IDs $event_ids[] = $id; } update_post_meta($post_id, 'sp_events', $events); sp_update_post_meta_recursive($post_id, 'sp_event', $event_ids); }