You are here

function questions_import_form_submit in Quiz 6.6

Same name and namespace in other branches
  1. 6.3 includes/questions_import/questions_import.admin.inc \questions_import_form_submit()

@function This is a generic questions import submit function calls specific import function like questions_import_submit_csv, questions_import_submit_multichoice_aiken

Return value

integer number of questions imported to a quiz node.

1 string reference to 'questions_import_form_submit'
questions_import_form in includes/questions_import/questions_import.admin.inc
@function Implementation of hook_form() provides form to upload questions

File

includes/questions_import/questions_import.admin.inc, line 358
Administration file for Questions Import module

Code

function questions_import_form_submit(&$form, &$form_state) {
  $time = 0;
  $op = '';
  $destination_node = _get_destination_node($form_state);
  $import_type_info = explode('_', $form_state['values']['import_type']);
  $import_engine = $import_type_info[0];
  $import_format = $import_type_info[1];
  $question_type = $form_state['values']['question_type'];
  $start = microtime(TRUE);
  $status = array();

  // would be nice to make this a TIMESTAMP field so it's automatic, but that would bind it to MySQL
  $date = date('YmdHis');
  $fid = $form_state['values']['validated_file']->fid;
  db_query("INSERT INTO {quiz_questions_import_record} (file_id, datetime, status_array, importer) VALUES (%d, '%s', '%s', '%s')", $fid, $date, serialize($status), $form_state['values']['import_type']);
  $import_id = db_last_insert_id('quiz_questions_import_record', 'import_id');
  switch ($import_engine) {
    case 'native':
      $file = file_save_upload('upload');
      $import_function_name = "questions_import_submit_{$import_format}";
      $count = $import_function_name($destination_node, $form, $form_state, $import_id);
      break;
    case 'moodle':
      $count = questions_import_submit_moodle_format($destination_node, $import_format, $form, $form_state, $import_id);
      break;
  }

  // $count contains number of questions successfully imported.
  $end = microtime(TRUE);
  $time = substr($end - $start, 0, 6);
  if ($count) {
    drupal_set_message(t('@count questions were imported successfully in @time seconds.', array(
      '@count' => $count,
      '@time' => $time,
    )));

    /*
     * when the questions destination is "new_quiz" questions importer will
     * create a quiz node by itself, whose properties were not defined properly.
     * so redirecting the quiz author to quiz node/$nid/edit page
     * where he/she can set the quiz node properties.
     */
    $url = $form_state['values']['destination_type'] == 'new_quiz' ? "node/{$destination_node->nid}/edit" : "node/{$destination_node->nid}";
    drupal_goto($url);
  }
  return $count;
}