MDL-12320, problem viewing grades with separate groups

This commit is contained in:
toyomoyo
2007-11-23 04:12:12 +00:00
parent 3e5d5d5741
commit 471e1be772
2 changed files with 27 additions and 10 deletions
+20 -7
View File
@@ -17,7 +17,7 @@
print_header("$course->shortname: ".get_string('grades'), $course->fullname, grade_nav($course, $action));
$groupmode = groupmode($course);
$group = setup_and_print_groups($course, $groupmode, 'exceptions.php?id=' . $course->id);
$group = setup_and_print_groups($course, $groupmode, 'exceptions.php?id=' . $course->id. '&action=excepts');
echo '<div class="clearer"></div>';
grade_preferences_menu($action, $course);
@@ -82,16 +82,26 @@
$grade_items = array();
$grade_items = get_records('grade_item', 'courseid', $course->id);
$grade_itemcount = count($grade_items);
// get current group of students and assign that to be the working list of students
if (groupmode($course) !=0) {
if ($currentgroup = get_current_group($course->id)) { //groupmode is either separate or visible and there is a group
$students = get_group_users($group);
} else {//groupmode is either separate or visible and the current group is all participants
$students = grade_get_course_students($course->id);
}
} else {
$students = grade_get_course_students($course->id); //groupmode is not set (all participants)
}
// we need to create a multidimensional array keyed by grade_itemid with all_students at each level
if (isset($grade_items)) {
foreach($grade_items as $grade_item) {
$nonmembers[$grade_item->id] = array();
if ($students = get_course_students($course->id)) {
if ($students) {
foreach ($students as $student) {
$nonmembers[$grade_item->id][$student->id] = fullname($student, true);
}
unset($students);
}
}
}
@@ -106,9 +116,12 @@
$listmembers[$grade_item->id] = array();
if ($grade_itemexceptions = grade_get_grade_item_exceptions($grade_item->id)) {
foreach ($grade_itemexceptions as $grade_itemexception) {
$listmembers[$grade_item->id][$grade_itemexception->userid] = $nonmembers[$grade_item->id][$grade_itemexception->userid];
unset($nonmembers[$grade_item->id][$grade_itemexception->userid]);
$countusers++;
//if the excepted user is part of the current group of users then list them
if (isset($nonmembers[$grade_item->id][$grade_itemexception->userid])) {
$listmembers[$grade_item->id][$grade_itemexception->userid] = $nonmembers[$grade_item->id][$grade_itemexception->userid];
unset($nonmembers[$grade_item->id][$grade_itemexception->userid]);
$countusers++;
}
}
}
$listgrade_items[$grade_item->id] = strip_tags(format_string($grade_item->name,true))." ($countusers)";
+7 -3
View File
@@ -311,9 +311,13 @@ function grade_get_formatted_grades() {
}
// if the user has selected a group to view by get the group members
if (($currentgroup = get_current_group($course->id)) && groupmode($course) != 0) {
$groupmembers = get_group_users($currentgroup);
// if the user has selected a group to view by get the group members unless the course is not using
if (groupmode($course) != 0) {
if ($currentgroup = get_current_group($course->id)) { // get the current group
$groupmembers = get_group_users($currentgroup); // group members of the group
}
} else {// if not groupmode then the group is the entire course so get all course students
$groupmembers = grade_get_course_students($course->id);
}
// this next block catches any students who do not have a grade for any item in a particular category