Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

MDL-15015: Choice limited answers don't work with group mode

  • Loading branch information...
commit e7c3b7e8111c37399292719f2f31f1273ae551d1 1 parent e31e99f
sam_marshall authored
Showing with 33 additions and 11 deletions.
  1. +33 −11 mod/choice/lib.php
View
44 mod/choice/lib.php
@@ -242,20 +242,42 @@ function choice_user_submit_response($formanswer, $choice, $userid, $courseid, $
$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;
+ 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) {
Please sign in to comment.
Something went wrong with that request. Please try again.