コード例 #1
0
 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);
     }
 }