function exercise_list_submissions_for_admin($exercise) { // list the teacher sublmissions first global $CFG, $USER; if (!($course = get_record("course", "id", $exercise->course))) { error("Course is misconfigured"); } if (!($cm = get_coursemodule_from_instance("exercise", $exercise->id, $course->id))) { error("Course Module ID was incorrect"); } $groupid = get_current_group($course->id); exercise_print_assignment_info($exercise); print_heading_with_help(get_string("administration"), "administration", "exercise"); echo "<p align=\"center\"><b><a href=\"assessments.php?action=teachertable&id={$cm->id}\">" . get_string("teacherassessmenttable", "exercise", $course->teacher) . "</a></b></p>\n"; if (isteacheredit($course->id)) { // list any teacher submissions $table->head = array(get_string("title", "exercise"), get_string("submitted", "exercise"), get_string("action", "exercise")); $table->align = array("left", "left", "left"); $table->size = array("*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; if ($submissions = exercise_get_teacher_submissions($exercise)) { foreach ($submissions as $submission) { $action = "<a href=\"submissions.php?action=adminamendtitle&id={$cm->id}&sid={$submission->id}\">" . get_string("amendtitle", "exercise") . "</a>"; if (isteacheredit($course->id)) { $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&id={$cm->id}&sid={$submission->id}\">" . get_string("delete", "exercise") . "</a>"; } $table->data[] = array(exercise_print_submission_title($exercise, $submission), userdate($submission->timecreated), $action); } print_heading(get_string("studentsubmissions", "exercise", $course->teacher), "center"); print_table($table); } } // list student assessments // Get all the students... if ($users = get_course_students($course->id, "u.lastname, u.firstname")) { $timenow = time(); unset($table); $table->head = array(get_string("name"), get_string("title", "exercise"), get_string("assessed", "exercise"), get_string("action", "exercise")); $table->align = array("left", "left", "left", "left"); $table->size = array("*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; $nassessments = 0; foreach ($users as $user) { // check group membership, if necessary if ($groupid) { // check user's group if (!groups_is_member($groupid, $user->id)) { continue; // skip this user } } if ($assessments = exercise_get_user_assessments($exercise, $user)) { $title = ''; foreach ($assessments as $assessment) { if (!($submission = get_record("exercise_submissions", "id", $assessment->submissionid))) { error("exercise_list_submissions_for_admin: Submission record not found!"); } $title .= $submission->title; // test for allocated assesments which have not been done if ($assessment->timecreated < $timenow) { // show only warm or cold assessments $title .= " {" . number_format($assessment->grade * $exercise->grade / 100.0, 0); if ($assessment->timegraded) { $title .= "/" . number_format($assessment->gradinggrade * $exercise->gradinggrade / 100.0, 0); } $title .= "} "; if ($realassessments = exercise_count_user_assessments_done($exercise, $user)) { $action = "<a href=\"assessments.php?action=adminlistbystudent&id={$cm->id}&userid={$user->id}\">" . get_string("view", "exercise") . "</a>"; } else { $action = ""; } $nassessments++; $table->data[] = array(fullname($user), $title, userdate($assessment->timecreated), $action); } } } } if (isset($table->data)) { if ($groupid) { if (!groups_group_exists($groupid)) { //TODO: error("List unassessed student submissions: group not found"); } print_heading("{$group->name} " . get_string("studentassessments", "exercise", $course->student) . " [{$nassessments}]"); } else { print_heading(get_string("studentassessments", "exercise", $course->student) . " [{$nassessments}]"); } print_table($table); echo "<p align=\"center\">" . get_string("noteonstudentassessments", "exercise"); echo "<br />{" . get_string("maximumgrade") . ": {$exercise->grade} / " . get_string("maximumgrade") . ": {$exercise->gradinggrade}}</p>\n"; // grading grade analysis unset($table); $table->head = array(get_string("count", "exercise"), get_string("mean", "exercise"), get_string("standarddeviation", "exercise"), get_string("maximum", "exercise"), get_string("minimum", "exercise")); $table->align = array("center", "center", "center", "center", "center"); $table->size = array("*", "*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; if ($groupid) { $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean, \n STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max \n FROM {$CFG->prefix}groups_members g, {$CFG->prefix}exercise_assessments a \n WHERE g.groupid = {$groupid} AND a.userid = g.userid AND a.timegraded > 0 \n AND a.exerciseid = {$exercise->id}"); } else { // no group/all participants $stats = get_record_sql("SELECT COUNT(*) as count, AVG(gradinggrade) AS mean, \n STDDEV(gradinggrade) AS stddev, MIN(gradinggrade) AS min, MAX(gradinggrade) AS max \n FROM {$CFG->prefix}exercise_assessments a \n WHERE a.timegraded > 0 AND a.exerciseid = {$exercise->id}"); } $table->data[] = array($stats->count, number_format($stats->mean * $exercise->gradinggrade / 100.0, 1), number_format($stats->stddev * $exercise->gradinggrade / 100.0, 1), number_format($stats->max * $exercise->gradinggrade / 100.0, 1), number_format($stats->min * $exercise->gradinggrade / 100.0, 1)); print_heading(get_string("gradinggrade", "exercise") . " " . get_string("analysis", "exercise")); print_table($table); echo "<p align=\"center\"><a href=\"assessments.php?id={$cm->id}&action=regradestudentassessments\">" . get_string("regradestudentassessments", "exercise") . "</a> "; helpbutton("regrading", get_string("regradestudentassessments", "exercise"), "exercise"); echo "</p>\n"; } } // now the sudent submissions unset($table); if ($users) { $table->head = array(get_string("submittedby", "exercise"), get_string("title", "exercise"), get_string("submitted", "exercise"), get_string("action", "exercise")); $table->align = array("left", "left", "left", "left"); $table->size = array("*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; $nsubmissions = 0; foreach ($users as $user) { // check group membership, if necessary if ($groupid) { // check user's group if (!groups_is_member($groupid, $user->id)) { continue; // skip this user } } if ($submissions = exercise_get_user_submissions($exercise, $user)) { foreach ($submissions as $submission) { $action = "<a href=\"submissions.php?action=adminamendtitle&id={$cm->id}&sid={$submission->id}\">" . get_string("amendtitle", "exercise") . "</a>"; // has teacher already assessed this submission if ($assessment = get_record_select("exercise_assessments", "submissionid = {$submission->id} AND userid = {$USER->id}")) { $curtime = time(); if ($curtime - $assessment->timecreated > $CFG->maxeditingtime) { $action .= " | <a href=\"assessments.php?action=assesssubmission&id={$cm->id}&sid={$submission->id}\">" . get_string("reassess", "exercise") . "</a>"; } else { // there's still time left to edit... $action .= " | <a href=\"assessments.php?action=assesssubmission&id={$cm->id}&sid={$submission->id}\">" . get_string("edit", "exercise") . "</a>"; } } else { // user has not assessed this submission $action .= " | <a href=\"assessments.php?action=assesssubmission&id={$cm->id}&sid={$submission->id}\">" . get_string("assess", "exercise") . "</a>"; } if ($nassessments = exercise_count_assessments($submission)) { $action .= " | <a href=\"assessments.php?action=adminlist&id={$cm->id}&sid={$submission->id}\">" . get_string("view", "exercise") . " ({$nassessments})</a>"; } if ($submission->late) { $action .= " | <a href=\"submissions.php?action=adminlateflag&id={$cm->id}&sid={$submission->id}\">" . get_string("clearlateflag", "exercise") . "</a>"; } $action .= " | <a href=\"submissions.php?action=adminconfirmdelete&id={$cm->id}&sid={$submission->id}\">" . get_string("delete", "exercise") . "</a>"; $title = $submission->title; if ($submission->resubmit) { $title .= "*"; } $datesubmitted = userdate($submission->timecreated); if ($submission->late) { $datesubmitted = "<font color=\"red\">" . $datesubmitted . "</font>"; } $table->data[] = array(fullname($user), $title . " " . exercise_print_submission_assessments($exercise, $submission), $datesubmitted, $action); $nsubmissions++; } } } if (isset($table->data)) { if ($groupid) { if (!groups_group_exists($groupid)) { error("List unassessed student submissions: group not found"); } print_heading("{$group->name} " . get_string("studentsubmissions", "exercise", $course->student) . " [{$nsubmissions}]"); } else { print_heading(get_string("studentsubmissions", "exercise", $course->student) . " [{$nsubmissions}]", "center"); } print_table($table); echo "<p align=\"center\">[] - " . get_string("gradeforsubmission", "exercise"); echo "<br />" . get_string("maximumgrade") . ": {$exercise->grade}</p>\n"; echo "<p align=\"center\">" . get_string("resubmitnote", "exercise", $course->student) . "</p>\n"; // grade analysis unset($table); $table->head = array(get_string("count", "exercise"), get_string("mean", "exercise"), get_string("standarddeviation", "exercise"), get_string("maximum", "exercise"), get_string("minimum", "exercise")); $table->align = array("center", "center", "center", "center", "center"); $table->size = array("*", "*", "*", "*", "*"); $table->cellpadding = 2; $table->cellspacing = 0; /// NOTE: user_teachers was ripped from the following SQL without a proper fix - XXX TO DO if ($groupid) { $stats = get_record_sql("SELECT COUNT(*) as count, AVG(grade) AS mean, \n STDDEV(grade) AS stddev, MIN(grade) AS min, MAX(grade) AS max \n FROM {$CFG->prefix}groups_members g, {$CFG->prefix}exercise_assessments a, \n {$CFG->prefix}exercise_submissions s\n WHERE g.groupid = {$groupid} AND s.userid = g.userid AND a.submissionid = s.id \n AND a.exerciseid = {$exercise->id}"); } else { // no group/all participants $stats = get_record_sql("SELECT COUNT(*) as count, AVG(grade) AS mean, \n STDDEV(grade) AS stddev, MIN(grade) AS min, MAX(grade) AS max \n FROM {$CFG->prefix}exercise_assessments a\n WHERE a.exerciseid = {$exercise->id}"); } $table->data[] = array($stats->count, number_format($stats->mean * $exercise->grade / 100.0, 1), number_format($stats->stddev * $exercise->grade / 100.0, 1), number_format($stats->max * $exercise->grade / 100.0, 1), number_format($stats->min * $exercise->grade / 100.0, 1)); print_heading(get_string("grade") . " " . get_string("analysis", "exercise")); print_table($table); } } }
exercise_list_user_submissions($exercise, $USER); echo "<hr size=\"1\" noshade=\"noshade\" />"; // print upload form print_heading(get_string("submitexercisedescription", "exercise") . ":"); exercise_print_upload_form($exercise); } elseif ($action == 'teachersview') { if (!isteacher($course->id)) { error("Only teachers can look at this page"); } /// Check to see if groups are being used in this exercise /// and if so, set $currentgroup to reflect the current group $groupmode = groupmode($course, $cm); // Groups are being used? $currentgroup = setup_and_print_groups($course, $groupmode, "view.php?id={$cm->id}"); print_heading_with_help(get_string("managingassignment", "exercise"), "managing", "exercise"); exercise_print_assignment_info($exercise); $tabs->names = array("1. " . get_string("phase1", "exercise"), "2. " . get_string("phase2", "exercise", $course->student), "3. " . get_string("phase3", "exercise", $course->student)); if (isteacheredit($course->id)) { $tabs->urls = array("view.php?id={$cm->id}&action=setupassignment", "view.php?id={$cm->id}&action=openexercise", "view.php?id={$cm->id}&action=makeleaguetableavailable"); } else { // don't allow non-editing teacher to change phase $tabs->urls = array("view.php?id={$cm->id}", "view.php?id={$cm->id}", "view.php?id={$cm->id}"); } if ($exercise->phase) { // phase 1 or more $tabs->highlight = $exercise->phase - 1; } else { $tabs->highlight = 0; // phase is zero } exercise_print_tabbed_heading($tabs);