
--- a/question_types/multichoice/multichoice.classes.inc	2012-04-15 21:38:38.000000000 +0200
+++ b/question_types/multichoice/multichoice.classes.inc	2012-04-17 11:36:26.559541821 +0200
@@ -773,7 +773,7 @@
         $this->choice_order = $tries['choice_order'];
       }
       unset($tries['choice_order']);
-      if (is_array($tries['answer'])) {
+      if (isset($tries['answer']) && is_array($tries['answer'])) {
         foreach ($tries['answer'] as $answer_id) {
           $this->user_answer_ids[] = $answer_id;
           $this->answer = $this->user_answer_ids; //@todo: Stop using user_answer_ids and only use answer instead...
@@ -870,7 +870,7 @@
    */
   public function score() {
     if ($this->question->choice_boolean || $this->isAllWrong()) {
-      $score = 1;
+      $score = $this->getMaxScore();
       foreach ($this->question->alternatives as $key => $alt) {
         if (in_array($alt['id'], $this->user_answer_ids)) {
           if ($alt['score_if_chosen'] <= $alt['score_if_not_chosen']) {
 
--- a/question_types/quiz_question/quiz_question.core.inc	2012-04-15 21:38:38.000000000 +0200
+++ b/question_types/quiz_question/quiz_question.core.inc	2012-04-17 11:36:26.559541821 +0200
@@ -143,7 +152,7 @@
     $form = array_merge($form, $this->getCreationForm($form_state));
 
     // If access to edit quizzes we add the add to quiz fieldset
-    $edit_access = quiz_access_multi_or('edit any quiz', 'edit own quiz', 'administer nodes');
+    $edit_access = quiz_access_multi_or('edit any quiz content', 'edit own quiz content', 'administer nodes');
     if ($edit_access) {
       $own_filter = quiz_access_multi_or('edit any quiz', 'administer nodes') ? '' : 'AND n.uid = ' . intval($user->uid);
 
@@ -227,7 +236,7 @@
         $latest_default[] = $quiz->nid . '-' . $quiz->vid;
       }
     }
-    if ($edit_access || quiz_access_multi_or('create quiz', 'administer nodes')) {
+    if ($edit_access || quiz_access_multi_or('create quiz content', 'administer nodes')) {
       $form['add_directly'] = array(
         '#type' => 'fieldset',
         '#title' => t('Add to @quiz', array('@quiz' => QUIZ_NAME)),
 
--- a/question_types/quiz_question/quiz_question.module	2012-04-15 21:38:38.000000000 +0200
+++ b/question_types/quiz_question/quiz_question.module	2012-04-17 11:36:26.559541821 +0200
@@ -95,19 +95,23 @@
     case 'view':
       if (!user_access('view quiz question outside of a quiz')) {
          return NODE_ACCESS_DENY;
-       }
+      }
+      break;
     case 'create':
       if (!user_access('create quiz content', $account)) {
         return NODE_ACCESS_DENY;
       }
+      break;
     case 'update':
       if (user_access('edit any quiz content', $account) || (user_access('edit own quiz content', $account) && ($account->uid == $node->uid))) {
         return NODE_ACCESS_ALLOW;
       }
+      break;
     case 'delete':
       if (user_access('delete any quiz content', $account) || (user_access('delete own quiz content', $account) && ($account->uid == $node->uid))) {
         return NODE_ACCESS_ALLOW;
       }
+      break;
   }
   // Returning nothing from this function would have the same effect.
   return NODE_ACCESS_IGNORE;
 
--- a/quiz.module	2012-04-17 13:54:07.323570915 +0200
+++ b/quiz.module	2012-04-17 11:36:26.563541821 +0200
@@ -2722,7 +2735,7 @@
       array('%num_attempts' => $quiz->takes));
   }
 
-  $user_is_admin = user_access('edit any quiz') || (user_access('edit own quiz') && $quiz->uid == $user->uid);
+  $user_is_admin = user_access('edit any quiz content') || (user_access('edit own quiz content') && $quiz->uid == $user->uid);
   if ($user_is_admin || $quiz->quiz_always == 1) {
     return TRUE;
   }

--- a/quiz.pages.inc	2012-04-15 21:38:38.000000000 +0200
+++ b/quiz.pages.inc	2012-03-20 18:32:04.847678558 +0200
@@ -252,8 +254,8 @@
   $results = array();
   $dbresult = db_query('SELECT DISTINCT(n.nid), n.title, qnp.pass_rate, qnrs.result_id, qnrs.time_start, qnrs.time_end, qnrs.score, qnrs.is_evaluated
     FROM {node} n
-    INNER JOIN {quiz_node_properties} qnp ON n.nid = qnp.nid
-    INNER JOIN {quiz_node_results} qnrs ON qnrs.nid = qnp.nid
+    INNER JOIN {quiz_node_properties} qnp ON qnp.vid = n.vid
+    INNER JOIN {quiz_node_results} qnrs ON qnrs.vid = n.vid
     INNER JOIN {users} u ON u.uid = qnrs.uid
     WHERE n.type = :type
       AND u.uid = :uid
@@ -276,7 +278,7 @@
   $res = db_query('
     SELECT qnp.nid, qnp.pass_rate, qnrs.result_id, qnrs.time_start, qnrs.time_end, qnrs.score
     FROM {quiz_node_properties} qnp
-    INNER JOIN {quiz_node_results} qnrs ON qnrs.nid = qnp.nid
+    INNER JOIN {quiz_node_results} qnrs ON qnrs.vid = qnp.vid 
     WHERE qnrs.uid = :uid AND qnrs.nid = :nid AND qnrs.is_evaluated = 1
     ORDER BY qnrs.result_id DESC',
     array(':uid' => $user->uid, ':nid' => $node->nid)
