コード例 #1
0
    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;
コード例 #2
0
ファイル: lib.php プロジェクト: edwinphillips/moodle-485cb39
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;
}