Issue Details (XML | Word | Printable)

Key: MDL-6812
Type: Bug Bug
Status: Open Open
Priority: Major Major
Assignee: Martin Dougiamas
Reporter: Sunner Sun
Votes: 0
Watchers: 0
Operations

Add/Edit UI Mockup to this issue
If you were logged in you would be able to see more operations.
Moodle

Block quiz_results doesn't support multi-groups

Created: 04/Oct/06 12:52 PM   Updated: 04/Oct/06 01:07 PM
Return to search
Component/s: Blocks
Affects Version/s: 1.6.2
Fix Version/s: None

Database: MySQL
Participants: Martin Dougiamas and Sunner Sun
Security Level: None
Affected Branches: MOODLE_16_STABLE


 Description  « Hide
If one student belongs to two or more groups, the block only count its grade in one group and ignore others. This makes the groupmode quiz result shows wrong group ranklist.

 All   Comments   Change History   Version Control      Sort Order: Ascending order - Click to sort in descending order
Sunner Sun added a comment - 04/Oct/06 01:07 PM
my patch
Since it call get_groups() so many times, perhaps there are some performance problem.

126,131d125
< // Now find which groups these users belong in
< $groupofuser = get_records_sql(
< 'SELECT m.userid, m.groupid, g.name FROM '.$CFG->prefix.'groups g LEFT JOIN '.$CFG->prefix.'groups_members m ON g.id = m.groupid '.
< 'WHERE g.courseid = '.$courseid.' AND m.userid IN ('.implode(',', $userids).')'
< );
<
136c130
< if(isset($groupofuser[$grade->userid])) {

> if ($usergroups = get_groups($courseid, $grade->userid)) {
138,144c132,140
< $groupid = $groupofuser[$grade->userid]->groupid;
< if(!isset($groupgrades[$groupid])) { < $groupgrades[$groupid] = array('sum' => (float)$grade->grade, 'number' => 1, 'group' => $groupofuser[$grade->userid]->name); < }
< else {
< $groupgrades[$groupid]['sum'] += $grade->grade;
< ++$groupgrades[$groupid]['number'];

> foreach ($usergroups as $usergroup) {
> $groupid = $usergroup->id;
> if(!isset($groupgrades[$groupid])) { > $groupgrades[$groupid] = array('sum' => (float)$grade->grade, 'number' => 1, 'group' => $usergroup->name); > }
> else { > $groupgrades[$groupid]['sum'] += $grade->grade; > ++$groupgrades[$groupid]['number']; > }