? quiz-537046-3.patch
? return_empty_array.patch
Index: quiz.module
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/quiz/quiz.module,v
retrieving revision 1.138.2.84
diff -u -p -r1.138.2.84 quiz.module
--- quiz.module	30 Dec 2009 09:25:47 -0000	1.138.2.84
+++ quiz.module	30 Dec 2009 09:57:09 -0000
@@ -279,7 +279,8 @@ function quiz_menu() {
     'title' => t('My results'),
     'page callback' => 'quiz_get_user_results',
     'page arguments' => array(1),
-    'access arguments' => array('view own results'),
+    'access callback' => '_quiz_user_results_access',
+    'access arguments' => array(1),
     'type' => MENU_LOCAL_TASK,
     'file' => 'quiz.pages.inc',
   );
@@ -2964,3 +2965,11 @@ function _quiz_check_num_random(&$node) 
           WHERE parent_nid = %d AND parent_vid = %d';
   db_query($sql, QUESTION_ALWAYS, $node->nid, $node->vid);
 }
+
+/**
+ * Determine who should have access to the My results tab.
+ */
+function _quiz_user_results_access($user_id) {
+  global $user;
+  return ($user_id == $user->uid && user_access('view own results')) || user_access('view user results');
+}
\ No newline at end of file
Index: quiz.pages.inc
===================================================================
RCS file: /cvs/drupal-contrib/contributions/modules/quiz/quiz.pages.inc,v
retrieving revision 1.3.2.19
diff -u -p -r1.3.2.19 quiz.pages.inc
--- quiz.pages.inc	29 Dec 2009 12:28:08 -0000	1.3.2.19
+++ quiz.pages.inc	30 Dec 2009 09:57:09 -0000
@@ -123,28 +123,22 @@ function quiz_update_total_score_fast($r
  */
 function quiz_get_user_results($user_id) {
   global $user;
-
-  if ($user_id == $user->uid || user_access('view user results')) {
-    $results = array();
-    $sql = "SELECT n.nid, n.title, u.name, qnrs.result_id, qnrs.time_start, qnrs.time_end
-      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 {users} u ON u.uid = qnrs.uid
-      WHERE n.type = 'quiz'
-        AND u.uid = %d
-      ORDER BY qnrs.result_id ASC";
-
-    $dbresult = db_query($sql, $user_id);
-    // Create an array out of the results.
-    while ($line = db_fetch_array($dbresult)) {
-     $results[$line['result_id']] = $line;
-    }
-    return theme('quiz_get_user_results', $results);
-  }
-  else {
-    return 'You have no permission to view the results of this user.';
+  $results = array();
+  $sql = "SELECT n.nid, n.title, u.name, qnrs.result_id, qnrs.time_start, qnrs.time_end
+    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 {users} u ON u.uid = qnrs.uid
+    WHERE n.type = 'quiz'
+      AND u.uid = %d
+    ORDER BY qnrs.result_id ASC";
+
+  $dbresult = db_query($sql, $user_id);
+  // Create an array out of the results.
+  while ($line = db_fetch_array($dbresult)) {
+    $results[$line['result_id']] = $line;
   }
+  return theme('quiz_get_user_results', $results);
 }
 
 // THEME FUNCTIONS
