MDL-15015: Choice limited answers don't work with group mode
This commit is contained in:
+34
-11
@@ -242,20 +242,43 @@ 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;
|
||||
$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) {
|
||||
|
||||
Reference in New Issue
Block a user