diff --git a/mod/exercise/assessments.php b/mod/exercise/assessments.php index 65b2a0fdae8..72d85a57cad 100644 --- a/mod/exercise/assessments.php +++ b/mod/exercise/assessments.php @@ -16,6 +16,7 @@ listungradedstudentassessments (for teachers) listteachersubmissions teacherassessment (for teachers) + teachertable updateassessment updatedualassessment userconfirmdelete @@ -571,6 +572,18 @@ } + /****************** teacher table : show assessments by exercise and teacher ************/ + elseif ($action == 'teachertable') { + + if (!isteacher($course->id)) { + error("Only teachers can look at this page"); + } + + exercise_print_teacher_table($course); + print_continue("index.php?id=$course->id"); + } + + /****************** update assessment (by teacher or student) ***************************/ elseif ($action == 'updateassessment') { diff --git a/mod/exercise/index.php b/mod/exercise/index.php index e5fc0c88148..494a8e2736b 100644 --- a/mod/exercise/index.php +++ b/mod/exercise/index.php @@ -89,18 +89,9 @@ $mean = exercise_get_mean_grade($submission); $grade = $mean->grade; } - // now get the user's grading grade - if (!$assessments = exercise_get_user_assessments($exercise, $USER)) { - error("Index: assessment record not found"); - } - foreach ($assessments as $assessment) { - // just use the first one (should only be one) - $gradinggrade = $assessment->gradinggrade; - break; - } - $overallgrade = (($gradinggrade * $EXERCISE_FWEIGHTS[$exercise->gradingweight] * $exercise->grade / COMMENTSCALE ) + ($grade * $EXERCISE_FWEIGHTS[$exercise->teacherweight] * $exercise->grade / 100.0)) / ($EXERCISE_FWEIGHTS[$exercise->gradingweight] + $EXERCISE_FWEIGHTS[$exercise->teacherweight]); + $actualgrade = $grade * $exercise->grade / 100.0; $table->data[] = array ($exercise->section, $link, $title, - number_format($overallgrade, 1), $submitted, $due); + number_format($actualgrade, 1), $submitted, $due); } } else { diff --git a/mod/exercise/lib.php b/mod/exercise/lib.php index 4671c9a8d42..9b22a7498d7 100644 --- a/mod/exercise/lib.php +++ b/mod/exercise/lib.php @@ -585,6 +585,7 @@ function exercise_get_participants($exerciseid) { function exercise_copy_assessment($assessment, $submission, $withfeedback = false) { function exercise_count_all_submissions_for_assessment($exercise, $user) { function exercise_count_assessments($submission) { +function exercise_count_assessments_by_teacher($exercise, $teacher) { function exercise_count_student_submissions($exercise) { function exercise_count_teacher_assessments($exercise, $user) { function exercise_count_teacher_submissions($exercise) { @@ -640,6 +641,7 @@ function exercise_print_league_table($exercise) { function exercise_print_submission_assessments($exercise, $submission, $type) { function exercise_print_submission_title($exercise, $user) { function exercise_print_tabbed_table($table) { +function exercise_print_teacher_table($course) { function exercise_print_time_to_deadline($time) { function exercise_print_upload_form($exercise) { function exercise_print_user_assessments($exercise, $user) { @@ -718,9 +720,18 @@ function exercise_count_assessments($submission) { // Return the (cold) assessments for this submission, global $CFG; - $timenow = time(); + $timethen = time() - $CFG->maxeditingtime; return count_records_select("exercise_assessments", "submissionid = $submission->id AND - timecreated < ($timenow - $CFG->maxeditingtime"); + timecreated < $timethen"); +} + + +/////////////////////////////////////////////////////////////////////////////////////////////// +function exercise_count_assessments_by_teacher($exercise, $teacher) { + // Return the number of assessments done by a teacher + + return count_records_select("exercise_assessments", "exerciseid = $exercise->id AND + userid = $teacher->id"); } @@ -785,7 +796,7 @@ function exercise_count_unassessed_student_submissions($exercise) { if (! $course = get_record("course", "id", $exercise->course)) { error("Course is misconfigured"); - } + } $timenow = time(); $n = 0; if ($submissions = exercise_get_student_submissions($exercise)) { @@ -799,17 +810,17 @@ function exercise_count_unassessed_student_submissions($exercise) { if (isteacher($course->id, $assessment->userid)) { $teacherassessed = true; break; // no need to look further - } } } + } if (!$teacherassessed) { - $n++; - } + $n++; } } } - return $n; } + return $n; +} /////////////////////////////////////////////////////////////////////////////////////////////// @@ -907,18 +918,18 @@ function exercise_count_user_assessments_done($exercise, $user) { foreach ($assessments as $assessment) { if ($assessment->timecreated < $timenow) { $n++; - } } } - return $n; } + return $n; +} /////////////////////////////////////////////////////////////////////////////////////////////// function exercise_count_user_submissions($exercise, $user) { // returns the number of submissions make by this user return count_records("exercise_submissions", "exerciseid", $exercise->id, "userid", $user->id); - } +} /////////////////////////////////////////////////////////////////////////////////////////////// @@ -930,14 +941,14 @@ function exercise_delete_submitted_files($exercise, $submission) { foreach ($files as $file) { if (unlink("$basedir/$file")) { notify("Existing file '$file' has been deleted!"); - } + } else { notify("Attempt to delete file $basedir/$file has failed!"); - } } } } } +} /////////////////////////////////////////////////////////////////////////////////////////////// @@ -1119,18 +1130,17 @@ function exercise_get_student_submissions($exercise, $order = "") { if ($order == "title") { $order = "s.title"; } elseif ($order == "name") { - $order = "a.firstname, a.lastname"; + $order = "n.firstname, n.lastname, s.timecreated DESC"; } else { $order = "s.timecreated"; } return get_records_sql("SELECT s.* FROM {$CFG->prefix}exercise_submissions s, - {$CFG->prefix}user_students u, {$CFG->prefix}user a + {$CFG->prefix}user_students u, {$CFG->prefix}user n WHERE u.course = $exercise->course AND s.userid = u.userid - AND a.id = u.userid - AND s.exerciseid = $exercise->id - AND s.timecreated > 0 + AND n.id = u.userid + AND s.exerciseid = $exercise->id ORDER BY $order"); } @@ -1327,6 +1337,10 @@ function exercise_list_submissions_for_admin($exercise, $order) { exercise_print_assignment_info($exercise); + print_heading_with_help(get_string("administration"), "administration", "exercise"); + echo"
id\">". + get_string("teacherassessmenttable", "exercise", $course->teacher)."
\n"; + ?>