From: danmarsden <danmarsden>
Date: Fri, 29 Feb 2008 11:53:38 +0000 (+0000)
Subject: MDL-13478 performance fixes.
X-Git-Url: http://git.mjollnir.org/gw?a=commitdiff_plain;h=eabb4dd694cd83e7067801dcab27d89437a4a8ef;p=moodle.git

MDL-13478 performance fixes.
---

diff --git a/mod/choice/lib.php b/mod/choice/lib.php
index 4d66f1063d..bd0b244153 100644
--- a/mod/choice/lib.php
+++ b/mod/choice/lib.php
@@ -304,15 +304,16 @@ function choice_show_reportlink($choice, $courseid, $cm, $groupmode) {
     }
 
     $context = get_context_instance(CONTEXT_MODULE, $cm->id);
-    $availableusers = get_users_by_capability($context, 'mod/choice:choose', 'u.id', '','','',$currentgroup, '', true, true);
-
     $responsecount = 0;
 
-    if(!empty($availableusers)){
-        // flatten the users to get a list of userids
-        $userids = implode( ', ', array_keys($availableusers));
-        $responsecount = count_records_select('choice_answers', "choiceid = {$choice->id} AND userid IN ( $userids );");
-    }
+    $allresponses = get_records("choice_answers", "choiceid", $choice->id); //get all responses for this choice. 
+    $responsecount = 0; 
+    foreach ($allresponses as $usr) { 
+        if (has_capability('mod/choice:choose', $context, $usr->userid, false)) { //if this user is allowed to select a choice. 
+            $responsecount++; 
+        } 
+    } 
+
 
     echo '<div class="reportlink">';
     echo "<a href=\"report.php?id=$cm->id\">".get_string("viewallresponses", "choice", $responsecount)."</a>";