You are here

function quiz_data_update_2 in Quiz 5.2

Updates data from quiz 1.1.

1 call to quiz_data_update_2()
quiz_update_2 in ./quiz.install
Implementation of hook_update_N().

File

./quiz.install, line 534

Code

function quiz_data_update_2() {
  $results = db_query("SELECT * FROM {quiz}");
  while ($row = db_fetch_object($results)) {
    $nid = $row->nid;
    $number_of_random_questions = 0;
    $pass_rate = $row->pass_rate;
    $summary_pass = $row->summary_pass;
    $summary_default = $row->summary_default;
    $shuffle = $row->shuffle;
    $backwards_navigation = $row->backwards_navigation;
    $feedback_time = $row->feedback_time;
    $quiz_open = $row->quiz_open;
    $quiz_close = $row->quiz_close;
    $takes = $row->takes;
    $time_limit = $row->time_limit;
    $quiz_always = $row->quiz_always;
    $node = node_load($nid);
    $vid = $node->vid;
    $tid = $node->tid;
    $sql = "INSERT INTO {quiz_node_properties} " . "(vid, nid, number_of_random_questions, shuffle, quiz_open, quiz_close, takes, pass_rate, " . "summary_pass, summary_default, quiz_always, feedback_time, tid) " . "VALUES(%d, %d, %d, %d, %d, %d, %d, %d, '%s', '%s', %d, %d, %d)";
    db_query($sql, $vid, $nid, $number_of_random_questions, $shuffle, $quiz_open, $quiz_close, $takes, $pass_rate, $summary_pass, $summary_default, $quiz_always, $feedback_time, $tid);
  }
  $results = db_query("SELECT * FROM {quiz_question_answer}");
  while ($row = db_fetch_object($results)) {
    $question_nid = $row->question_nid;
    $answer = $row->answer;
    $feedback = $row->feedback;
    $points = $row->points;
    $result_option = $row->result_option;
    $node = node_load($question_nid);
    $vid = $node->vid;
    $is_correct = $points;
    db_query("INSERT INTO {quiz_multichoice_answers} (nid, vid, answer, feedback, result_option, is_correct) " . "VALUES(%d, %d, '%s', '%s', %d, %d)", $question_nid, $vid, $answer, $feedback, $result_option, $is_correct);
  }
  $results = db_query("SELECT * FROM {quiz_questions}");
  while ($row = db_fetch_object($results)) {
    $parent_nid = $row->quiz_nid;
    $child_nid = $row->question_nid;
    $parent = node_load($parent_nid);
    $parent_vid = $parent->vid;
    $child = node_load($child_nid);
    $child_vid = $child->vid;
    $question_status = $row->question_status;
    db_query("INSERT INTO {quiz_node_relationship} (parent_nid, parent_vid, child_nid, child_vid, question_status) " . "VALUES (%d, %d, %d, %d, %d)", $parent_nid, $parent_vid, $child_nid, $child_vid, $question_status);
  }
  $results = db_query("SELECT nid, properties FROM {quiz_question}");
  while ($row = db_fetch_object($results)) {
    $count = 0;
    $nid = $row->nid;
    $count = db_result(db_query("SELECT COUNT(aid) FROM {quiz_question_answer} WHERE question_nid = %d AND points = 1 ", $nid));
    db_query("INSERT INTO {quiz_node_question_properties} (nid, vid, number_of_answers) " . "VALUES (%d, %d, %d)", $nid, $vid, $count);
  }
  $results = db_query("SELECT * FROM {quiz_result}");
  while ($row = db_fetch_object($results)) {
    $rid = $row->rid;
    $quiz_nid = $row->quiz_nid;
    $quiz = node_load($quiz_nid);
    $quiz_vid = $quiz->vid;
    $uid = $row->uid;
    $time_start = $row->time_start;
    $time_end = $row->time_end;
    $released = $row->released;
    $score = $row->score;
    db_query("INSERT INTO {quiz_node_results} (nid, vid, uid, time_start, time_end, released, score) " . "VALUES (%d, %d, %d, %d, %d, %d, %d)", $nid, $vid, $uid, $time_start, $time_end, $released, $score);
    $results2 = db_query("SELECT * FROM {quiz_question_results} WHERE result_rid=%d", $rid);
    while ($row2 = db_fetch_object($results2)) {
      $result_rid = $row2->result_rid;
      $question_nid = $row2->question_nid;
      $answer = $row2->answer;
      $temp_answers = unserialize($answer);
      $tried = $temp_answers['tried'][0];
      foreach ($temp_answers['answers'] as $line) {
        $aid = $line['aid'];
        if ($aid == $tried) {
          $question_nid = $line['question_nid'];
          $question = node_load($question_nid);
          $question_vid = $question->vid;
          $is_correct = $line['points'];
          $points_awarded = $line['points'];
          $answer_timestamp = time();
          db_query("INSERT INTO {quiz_multichoice_user_answers} (question_nid, question_vid, result_id, answer_id) " . "VALUES (%d, %d, %d, %d)", $question_nid, $question_vid, $rid, $aid);
          db_query("INSERT INTO {quiz_node_results_answers} " . "(result_id, question_nid, question_vid, is_correct, points_awarded, answer_timestamp) " . "VALUES (%d, %d, %d, %d, %d, %d)", $rid, $question_nid, $question_vid, $is_correct, $points_awarded, $answer_timestamp);
        }

        /* endif */
      }

      /* end foreach */
    }

    /* end while */
  }

  /* end while */
  switch ($GLOBALS['db_type']) {
    case 'mysql':
    case 'mysqli':
      $select_questionanswer = db_query("SELECT name,id FROM {sequences} WHERE name='%s'", '({quiz_multichoice_answers}_answer_id');
      $results = db_fetch_object($select_questionanswer);
      if ($results->id > 0) {
        $old_value = db_fetch_object(db_query("SELECT name,id FROM {sequences} WHERE name='%s'", '{quiz_question_answer}_aid'));
        $value = $results->id + $old_value->id;
        db_query("UPDATE {sequences} SET id = %d, WHERE name = '%d'", $value, '{quiz_multichoice_answers}_answer_id');
      }
      else {
        $old_value = db_fetch_object(db_query("SELECT name,id FROM {sequences} WHERE name='%s'", '{quiz_question_answer}_aid'));
        $value = $old_value->id;
        db_query("INSERT INTO {sequences} (name,id) VALUES('%s',%d)", '{quiz_multichoice_answers}_answer_id', $value);
      }
      $select_questionanswer = db_query("SELECT name,id FROM {sequences} WHERE name='%s'", '{quiz_node_results}_result_id');
      $results = db_fetch_object($select_questionanswer);
      if ($results->id > 0) {
        $old_value = db_fetch_object(db_query("SELECT name,id FROM {sequences} WHERE name='%s'", '{quiz_results}_rid'));
        $value = $results->id + $old_value->id;
        db_query("UPDATE {sequences} SET id = %d, WHERE name = '%d'", $value, '{quiz_node_results}_result_id');
      }
      else {
        $old_value = db_fetch_object(db_query("SELECT name,id FROM {sequences} WHERE name='%s'", '{quiz_results}_rid'));
        $value = $old_value->id;
        db_query("INSERT INTO {sequences} (name,id) VALUES('%s',%d)", '{quiz_node_results}_result_id', $value);
      }
      break;
    case 'pgsql':

      // {quiz_multichoice_answers}_answer_id_seq
      $select = db_query("SELECT max(answer_id) AS id FROM {quiz_multichoice_answers}");
      $results = db_fetch_object($select);
      if ($results->id > 0) {
        db_query("SELECT setval('%s',%d)", '{quiz_multichoice_answers}_answer_id_seq', $results->id);
      }

      // {quiz_node_properties}_property_id_seq
      $select = db_query("SELECT max(property_id) AS id FROM {quiz_node_properties}");
      $results = db_fetch_object($select);
      if ($results->id > 0) {
        db_query("SELECT setval('%s',%d)", '{quiz_node_properties}_property_id_seq', $results->id);
      }

      // {quiz_node_result_options}_option_id_seq
      $select = db_query("SELECT max(option_id) AS id FROM {quiz_node_result_options}");
      $results = db_fetch_object($select);
      if ($results->id > 0) {
        db_query("SELECT setval('%s',%d)", '{quiz_node_result_options}_option_id_seq', $results->id);
      }

      // {quiz_node_results}_result_id_seq
      $select = db_query("SELECT max(result_id) AS id FROM {quiz_node_results}");
      $results = db_fetch_object($select);
      if ($results->id > 0) {
        db_query("SELECT setval('%s',%d)", '{quiz_node_results}_result_id_seq', $results->id);
      }
      break;
  }

  /* end switch */
}