$current = get_record('choice_answers', 'choiceid', $choice->id, 'userid', $userid);
$context = get_context_instance(CONTEXT_MODULE, $cm->id);
- $countanswers = get_records("choice_answers", "optionid", $formanswer);
- if ($countanswers) {
- $countans = 0;
- foreach ($countanswers as $ca) { //only return enrolled users.
- if (has_capability('mod/choice:choose', $context, $ca->userid, false)) {
- $countans = $countans+1;
- }
+
+ $countanswers=0;
+ if($choice->limitanswers) {
+ // Find out whether groups are being used and enabled
+ if (groups_get_activity_groupmode($cm) > 0) {
+ $currentgroup = groups_get_activity_group($cm);
+ } else {
+ $currentgroup = 0;
+ }
+ if($currentgroup) {
+ // If groups are being used, retrieve responses only for users in
+ // current group
+ global $CFG;
+ $answers = get_records_sql("
+SELECT
+ ca.*
+FROM
+ {$CFG->prefix}choice_answers ca
+ INNER JOIN {$CFG->prefix}groups_members gm ON ca.userid=gm.userid
+WHERE
+ optionid=$formanswer
+ AND gm.groupid=$currentgroup");
+ } else {
+ // Groups are not used, retrieve all answers for this option ID
+ $answers = get_records("choice_answers", "optionid", $formanswer);
}
- $countanswers = $countans;
- } else {
- $countanswers = 0;
+ $countanswers=0;
+ if ($answers) {
+ foreach ($answers as $a) { //only return enrolled users.
+ if (has_capability('mod/choice:choose', $context, $a->userid, false)) {
+ $countanswers++;
+ }
+ }
+ }
+ $maxans = $choice->maxanswers[$formanswer];
}
- $maxans = $choice->maxanswers[$formanswer];
if (!($choice->limitanswers && ($countanswers >= $maxans) )) {
if ($current) {