public function save_post($post_id, WP_Post $post, $update) { if (defined('DOING_AJAX') && DOING_AJAX) { return $post_id; } if (defined('DOING_AUTOSAVE') && DOING_AUTOSAVE) { return $post_id; } if (!current_user_can('edit_post', $post_id)) { return $post_id; } // settings if (isset($_POST['type'])) { update_post_meta($post_id, 'type', icit_fields::validate_text($_POST['type'])); } //if ( isset( $_POST[ 'timelimit' ] ) ) // update_post_meta( $post_id, 'timelimit', icit_fields::validate_numeric( $_POST[ 'timelimit' ] ) ); if (isset($_POST['nextdelay'])) { update_post_meta($post_id, 'nextdelay', icit_fields::validate_numeric($_POST['nextdelay'])); } if (isset($_POST['correct'])) { update_post_meta($post_id, 'correct', icit_fields::validate_text($_POST['correct'])); } if (isset($_POST['incorrect'])) { update_post_meta($post_id, 'incorrect', icit_fields::validate_text($_POST['incorrect'])); } // questions if (isset($_POST['questions'])) { $questions = is_array($_POST['questions']) ? $_POST['questions'] : array(); // remove js placeholder from data if (isset($questions['__i__'])) { unset($questions['__i__']); } // add a new empty question to array if (isset($_POST['addquestion'])) { $questions[] = array(); } // remove by index if (isset($_POST['deletequestion'])) { unset($questions[array_pop(array_keys($_POST['deletequestion']))]); } // process & validate questions if ($questions) { array_walk($questions, function (&$q, $i) { // add a new empty answer to question if (isset($_POST['addanswer']) && isset($_POST['addanswer'][$i])) { $q['answers'][] = array(); } // remove by index if (isset($_POST['deleteanswer']) && isset($_POST['deleteanswer'][$i])) { unset($q['answers'][array_pop(array_keys($_POST['deleteanswer'][$i]))]); } // fix the ridiculous lack of square brackets in names for editors $q['result'] = isset($_POST["questions_{$i}_result"]) ? $_POST["questions_{$i}_result"] : ''; $q['resultcorrect'] = isset($_POST["questions_{$i}_resultcorrect"]) ? $_POST["questions_{$i}_resultcorrect"] : ''; $q['resultincorrect'] = isset($_POST["questions_{$i}_resultincorrect"]) ? $_POST["questions_{$i}_resultincorrect"] : ''; foreach ($q['answers'] as $a => $answer) { $q['answers'][$a]['description'] = isset($_POST["answer_{$a}_answer_description"]) ? $_POST["answer_{$a}_answer_description"] : ''; } $q = apply_filters('quizzlestick_save_questions', $q, $i); return $q; }); } update_post_meta($post_id, 'questions', $questions); } // results if (isset($_POST['result_introduction'])) { update_post_meta($post_id, 'result_introduction', icit_fields::validate_textarea($_POST['result_introduction'])); } if (isset($_POST['result_heading'])) { update_post_meta($post_id, 'result_heading', icit_fields::validate_text($_POST['result_heading'])); } if (isset($_POST['result'])) { update_post_meta($post_id, 'result', icit_fields::validate_textarea($_POST['result'])); } if (isset($_POST['result_title'])) { update_post_meta($post_id, 'result_title', icit_fields::validate_text($_POST['result_title'])); } if (isset($_POST['results']) || isset($_POST['addresult'])) { $results = is_array($_POST['results']) ? $_POST['results'] : array(); // remove js placeholder from data if (isset($results['__i__'])) { unset($results['__i__']); } // order by points usort($results, function ($a, $b) { return $a['points'] > $b['points']; }); // add a new empty answer to question if (isset($_POST['addresult'])) { $results[] = array(); } // remove by index if (isset($_POST['deleteresult'])) { unset($results[array_pop(array_keys($_POST['deleteresult']))]); } // process & validate questions if ($results) { array_walk($results, function (&$r, $i) { // fix the ridiculous lack of square brackets in names for editors $r['result'] = isset($_POST["results_{$i}_result"]) ? $_POST["results_{$i}_result"] : ''; return $r; }); } update_post_meta($post_id, 'results', $results); } }