mirror of
https://github.com/moodle/moodle.git
synced 2025-01-18 22:08:20 +01:00
281ffa4aaa
logic fixes, API fixes, variable fixes etc ... there is still plenty to do but this is enough to check in and get others working on it.
145 lines
5.9 KiB
PHP
145 lines
5.9 KiB
PHP
<?php // $Id$
|
|
|
|
require_once("../config.php");
|
|
require_once("lib.php");
|
|
|
|
$id = required_param('id'); // course id
|
|
$action = optional_param('action', '');
|
|
|
|
if (!$course = get_record('course', 'id', $id)) {
|
|
error('No course ID');
|
|
}
|
|
|
|
require_login($course->id);
|
|
|
|
$group = get_current_group($course->id);
|
|
|
|
print_header("$course->shortname: ".get_string('grades'), "$course->fullname", grade_get_grades_menu());
|
|
|
|
grade_preferences_menu($action, $course, $group);
|
|
|
|
grade_set_uncategorized();
|
|
|
|
|
|
/// We are in editing mode. First, process any inputs there may be.
|
|
|
|
if ($data = data_submitted()) {
|
|
// make sure it is safe to process data
|
|
if (!empty($USER->id)) {
|
|
if (!confirm_sesskey()) {
|
|
error(get_string('confirmsesskeybad', 'error'));
|
|
}
|
|
}
|
|
|
|
if (!empty($data->nonmembersadd)) { /// Add people to a grade_item
|
|
if (!empty($data->nonmembers) and !empty($data->grade_itemid)) {
|
|
$grade_itemmodified = false;
|
|
foreach ($data->nonmembers as $userid) {
|
|
$record->courseid = $course->id;
|
|
$record->grade_itemid = $data->grade_itemid;
|
|
$record->userid = $userid;
|
|
if (!record_exists('grade_exceptions','courseid',$course->id,'grade_itemid',$data->grade_itemid,'userid',$userid)) {
|
|
if (!insert_record('grade_exceptions', $record)) {
|
|
notify(get_string('addexceptionerror','grades').$userid.':'.$data->grade_itemid);
|
|
}
|
|
}
|
|
$grade_itemmodified = true;
|
|
}
|
|
}
|
|
$selectedgrade_item = $data->grade_itemid;
|
|
|
|
} else if (!empty($data->membersremove)) { /// Remove selected people from a particular grade_item
|
|
|
|
if (!empty($data->members) and !empty($data->grade_itemid)) {
|
|
foreach ($data->members as $userid) {
|
|
delete_records('grade_exceptions', 'userid', $userid, "grade_itemid", $data->grade_itemid, 'course', $course->id);
|
|
}
|
|
}
|
|
$selectedgrade_item = $data->grade_itemid;
|
|
}
|
|
}
|
|
if (isset($selectedgrade_item)) {
|
|
clean_param($selectedgrade_item, PARAM_CLEAN);
|
|
}
|
|
|
|
/// Calculate data ready to create the editing interface
|
|
|
|
$strgradeitemnonmembers = get_string('gradeitemnonmembers','grades');
|
|
$strgradeitemmembersselected = get_string('gradeitemmembersselected','grades');
|
|
$strgradeitemremovemembers = get_string('gradeitemremovemembers','grades');
|
|
$strgradeiteminfomembers = get_string('gradeiteminfomembers','grades');
|
|
$strgradeitemadd = get_string('gradeitemadd','grades');
|
|
$strgradeitemremove = get_string('gradeitemremove','grades');
|
|
$strgradeiteminfo = get_string('gradeiteminfo','grades');
|
|
$strgradeiteminfopeople = get_string('gradeiteminfopeople','grades');
|
|
$strgradeitemrandomassign = get_string('gradeitemrandomassign','grades');
|
|
$strgradeitemaddusers = get_string('gradeitemaddusers','grades');
|
|
$strgradeitems = get_string('gradeitems','grades');
|
|
$courseid = $course->id;
|
|
$listgrade_items = array();
|
|
$listmembers = array();
|
|
$nonmembers = array();
|
|
$grade_items = array();
|
|
$grade_items = get_records('grade_item', 'courseid', $course->id);
|
|
$grade_itemcount = count($grade_items);
|
|
|
|
// 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)) {
|
|
foreach ($students as $student) {
|
|
$nonmembers[$grade_item->id][$student->id] = fullname($student, true);
|
|
}
|
|
unset($students);
|
|
}
|
|
}
|
|
}
|
|
|
|
|
|
if ($grade_items) {
|
|
foreach ($grade_items as $grade_item) {
|
|
$modname = get_record('modules', 'id', $grade_item->modid);
|
|
$itemname = get_record($modname->name, 'id', $grade_item->cminstance, 'course', $course->id);
|
|
$grade_item->name = $itemname->name;
|
|
$countusers = 0;
|
|
$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++;
|
|
}
|
|
}
|
|
$listgrade_items[$grade_item->id] = $grade_item->name." ($countusers)";
|
|
if (!isset($grade_item->name)) {
|
|
// these were items that have since been deleted
|
|
unset($listgrade_items[$grade_item->id]);
|
|
delete_records('grade_item', 'id', $grade_item->id);
|
|
}
|
|
natcasesort($listmembers[$grade_item->id]);
|
|
natcasesort($nonmembers[$grade_item->id]);
|
|
}
|
|
natcasesort($listgrade_items);
|
|
}
|
|
|
|
if (empty($selectedgrade_item)) { // Choose the first group by default
|
|
$selectedgrade_item = array_shift(array_keys($listgrade_items));
|
|
}
|
|
|
|
include('exceptions.html');
|
|
|
|
print_footer($course);
|
|
exit;
|
|
|
|
function grade_get_grade_item_exceptions($id) {
|
|
global $CFG;
|
|
global $course;
|
|
|
|
$sql = "SELECT ge.id, ge.userid FROM {$CFG->prefix}grade_exceptions ge, {$CFG->prefix}user_students us WHERE us.course=$course->id AND grade_itemid=$id AND ge.userid = us.userid AND us.course=ge.courseid";
|
|
$grade_exceptions = get_records_sql($sql);
|
|
return $grade_exceptions;
|
|
}
|
|
|
|
?>
|