print_continue("view.php?id={$cm->id}"); } elseif ($action == 'listungradedstudentassessments') { if (!has_capability('mod/exercise:assess', $context)) { error("Only teachers can look at this page"); } exercise_list_ungraded_assessments($exercise, "teacher"); print_continue("view.php?id={$cm->id}"); } elseif ($action == 'listteachersubmissions') { exercise_list_teacher_submissions($exercise, $USER); print_continue("view.php?id={$cm->id}"); } elseif ($action == 'regradestudentassessments') { if (!has_capability('mod/exercise:assess', $context)) { error("Only teachers can look at this page"); } // get all the student assessments if ($assessments = exercise_get_teacher_submission_assessments($exercise)) { foreach ($assessments as $studentassessment) { if ($studentassessment->timegraded > 0) { if (!($submissions = get_records_select("exercise_submissions", "userid = {$studentassessment->userid} AND exerciseid = {$exercise->id}", "timecreated ASC"))) { error("Regrade student assessments: student submission not found"); } foreach ($submissions as $submission) { // only the first one is relavant if (!($teacherassessments = get_records("exercise_assessments", "submissionid", $submission->id, "timecreated ASC"))) { error("Regrade student assessments: teacher assessment(s) not found"); } foreach ($teacherassessments as $teacherassessment) { // only the first one is relavent $newgrade = exercise_compare_assessments($exercise, $studentassessment, $teacherassessment); set_field("exercise_assessments", "gradinggrade", $newgrade, "id", $studentassessment->id); break;
function exercise_grades($exerciseid) { /// Must return an array of grades, indexed by user, and a max grade. if (!($exercise = get_record("exercise", "id", $exerciseid))) { error("Exercise record not found"); } if (!($course = get_record("course", "id", $exercise->course))) { error("Course is misconfigured"); } if (!($return->maxgrade = $exercise->grade + $exercise->gradinggrade)) { return NULL; } // how to handle multiple submissions? if ($exercise->usemaximum) { if ($bestgrades = exercise_get_best_submission_grades($exercise)) { foreach ($bestgrades as $grade) { $usergrade[$grade->userid] = $grade->grade * $exercise->grade / 100.0; } } } else { // use mean values if ($meangrades = exercise_get_mean_submission_grades($exercise)) { foreach ($meangrades as $grade) { $usergrade[$grade->userid] = $grade->grade * $exercise->grade / 100.0; } } } // now get the users grading grades if ($assessments = exercise_get_teacher_submission_assessments($exercise)) { foreach ($assessments as $assessment) { // add the grading grade if the student's work has been assessed if (isset($usergrade[$assessment->userid])) { $usergrade[$assessment->userid] += $assessment->gradinggrade * $exercise->gradinggrade / 100.0; } } } // tidy the numbers and set up the return array if (isset($usergrade)) { foreach ($usergrade as $userid => $g) { $return->grades[$userid] = number_format($g, 1); } } return $return; }