Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with HTTPS or Subversion.

Download ZIP
Fetching contributors…

Cannot retrieve contributors at this time

133 lines (106 sloc) 4.785 kb
<?PHP // $Id$
require("../../config.php");
require("lib.php");
require_variable($id); // Assignment
if (! $assignment = get_record("assignment", "id", $id)) {
error("Course module is incorrect");
}
if (! $course = get_record("course", "id", $assignment->course)) {
error("Course is misconfigured");
}
if (! $cm = get_coursemodule_from_instance("assignment", $assignment->id, $course->id)) {
error("Course Module ID was incorrect");
}
require_login($course->id);
if (!isteacher($course->id)) {
error("Only teachers can look at this page");
}
if ($course->category) {
$navigation = "<A HREF=\"../../course/view.php?id=$course->id\">$course->shortname</A> ->";
}
$strassignments = get_string("modulenameplural", "assignment");
$strassignment = get_string("modulename", "assignment");
$strsubmissions = get_string("submissions", "assignment");
print_header("$course->shortname: $assignment->name", "$course->fullname",
"$navigation <A HREF=index.php?id=$course->id>$strassignments</A> ->
<A HREF=\"view.php?a=$assignment->id\">$assignment->name</A> -> $strsubmissions",
"", "", true);
/// Get all teachers and students
$teachers = get_course_teachers($course->id);
if (!$users = get_course_students($course->id)) {
print_heading(get_string("nostudentsyet"));
print_footer($course);
exit;
}
/// Make some easy ways to reference submissions
if ($submissions = assignment_get_all_submissions($assignment)) {
foreach ($submissions as $submission) {
$submissionbyuser[$submission->user] = $submission;
}
}
/// Get all existing submissions and check for missing ones
foreach($users as $user) {
if (!isset($submissionbyuser[$user->id])) { // Need to create empty entry
$newsubmission->assignment = $assignment->id;
$newsubmission->user = $user->id;
$newsubmission->timecreated = time();
if (!insert_record("assignment_submissions", $newsubmission)) {
error("Could not insert a new empty submission");
}
}
}
if (isset($newsubmission)) { // Get them all out again to be sure
$submissions = assignment_get_all_submissions($assignment);
}
/// If data is being submitted, then process it
if (match_referer() && isset($HTTP_POST_VARS)) {
$feedback = array();
// Peel out all the data from variable names.
foreach ($HTTP_POST_VARS as $key => $val) {
if ($key <> "id") {
$type = substr($key,0,1);
$num = substr($key,1);
$feedback[$num][$type] = $val;
}
}
$timenow = time();
$count = 0;
foreach ($feedback as $num => $vals) {
$submission = $submissions[$num];
// Only update entries where feedback has actually changed.
if (($vals[g] <> $submission->grade) || ($vals[c] <> addslashes($submission->comment))) {
unset($newsubmission);
$newsubmission->grade = $vals[g];
$newsubmission->comment = $vals[c];
$newsubmission->teacher = $USER->id;
$newsubmission->timemarked = $timenow;
$newsubmission->mailed = 0; // Make sure mail goes out (again, even)
$newsubmission->id = $num;
if (! update_record("assignment_submissions", $newsubmission)) {
notify(get_string("failedupdatefeedback", "assignment", $submission->user));
} else {
$count++;
}
}
}
$submissions = assignment_get_all_submissions($assignment);
add_to_log($course->id, "assignment", "update grades", "submissions.php?id=$assignment->id", "$count users");
notify(get_string("feedbackupdated", "assignment", $count));
} else {
add_to_log($course->id, "assignment", "view submissions", "submissions.php?id=$assignment->id", "$assignment->id");
}
for ($i=$assignment->grade; $i>=0; $i--) {
$grades[$i] = $i;
}
echo "<FORM ACTION=submissions.php METHOD=post>\n";
foreach ($submissions as $submission) {
$user = $users[$submission->user];
assignment_print_submission($assignment, $user, $submission, $teachers, $grades);
}
echo "<CENTER>";
echo "<INPUT TYPE=hidden NAME=id VALUE=\"$assignment->id\">";
echo "<INPUT TYPE=submit VALUE=\"Save all my feedback\">";
echo "</CENTER>";
echo "</FORM>";
print_footer($course);
?>
Jump to Line
Something went wrong with that request. Please try again.