You are here

function quiz_report_form_submit in Quiz 7.5

Same name and namespace in other branches
  1. 8.4 quiz.pages.inc \quiz_report_form_submit()
  2. 6.4 quiz.pages.inc \quiz_report_form_submit()
  3. 7.6 quiz.pages.inc \quiz_report_form_submit()
  4. 7 quiz.pages.inc \quiz_report_form_submit()
  5. 7.4 quiz.pages.inc \quiz_report_form_submit()

Submit the report form.

1 call to quiz_report_form_submit()
quiz_result_form_submit in ./quiz.module
Quiz result submit handler.

File

./quiz.pages.inc, line 26
User pages.

Code

function quiz_report_form_submit($form, &$form_state) {
  global $user;
  $quiz_result = $form_state['quiz_result'];
  $quiz = node_load($quiz_result->nid, $quiz_result->vid);
  if (!empty($form_state['values']['question'])) {
    foreach ($form_state['values']['question'] as $key => $q_values) {
      $question_node = node_load($q_values['nid'], $q_values['vid']);
      $instance = _quiz_question_response_get_instance($quiz_result->result_id, $question_node);
      if ($instance
        ->getReportFormSubmit()) {
        $q_values['quiz'] = node_load($quiz_result->nid, $quiz_result->vid);
        call_user_func($instance
          ->getReportFormSubmit(), $q_values);
      }
    }

    // Scores may have been changed. We take the necessary actions.
    quiz_end_scoring($quiz_result->result_id);
    $results_got_deleted = _quiz_maintain_results($quiz, $quiz_result->result_id);

    // Notify the user if results got deleted as a result of him scoring an
    // answer.
    $add = $quiz->keep_results == QUIZ_KEEP_BEST && $results_got_deleted ? ' ' . t('Note that this @quiz is set to only keep each users best answer.', array(
      '@quiz' => QUIZ_NAME,
    )) : '';
    $score_data = quiz_get_score_array($quiz_result->result_id, $quiz->vid, TRUE);
    module_invoke_all('quiz_scored', $quiz, $score_data, $quiz_result->result_id);
    drupal_set_message(t('The scoring data you provided has been saved.') . $add);
  }
}