} // list previous submissions print_heading(get_string("yoursubmissions", "workshop")); workshop_list_user_submissions($workshop, $USER); // are resubmissions allowed and the workshop is in submission/assessment phase? if ($workshop->resubmit and ($timenow > $workshop->assessmentstart and $timenow < $workshop->submissionend)) { // see if there are any cold assessments of the last submission // if there are then print upload form if ($submissions = workshop_get_user_submissions($workshop, $USER)) { foreach ($submissions as $submission) { $lastsubmission = $submission; break; } $n = 0; // number of cold assessments (not include self assessments) if ($assessments = workshop_get_assessments($lastsubmission)) { foreach ($assessments as $assessment) { if ($assessment->userid != $USER->id) { $n++; } } } if ($n) { echo "<hr size=\"1\" noshade=\"noshade\" />"; print_heading(get_string("submitrevisedassignment", "workshop") . ":"); workshop_print_upload_form($workshop); echo "<hr size=\"1\" noshade=\"noshade\" />"; } } } }
if (!($newsubmission->id = insert_record("workshop_submissions", $newsubmission))) { error("Workshop submission: Failure to create new submission record!"); } // see if this is a resubmission by looking at the previous submissions... if ($submissions and $workshop->submissionstart > time()) { // ...but not teacher submissions // find the last submission foreach ($submissions as $submission) { $lastsubmission = $submission; break; } // find all the possible assessments of this submission // ...and if they have been assessed give the assessor a new assessment // based on their old assessment, if the assessment has not be made // just delete it! if ($assessments = workshop_get_assessments($submission, 'ALL')) { foreach ($assessments as $assessment) { if ($assessment->timecreated < $timenow) { // a Cold or Warm assessment... if ($assessment->userid != $USER->id) { // only copy other students assessment not the self assessment (if present) // copy it with feedback.. $newassessment = workshop_copy_assessment($assessment, $newsubmission, true); // set the resubmission flag so student can be emailed/told about // this assessment set_field("workshop_assessments", "resubmission", 1, "id", $newassessment->id); } } else { // a hot assessment, was not used, just dump it delete_records("workshop_assessments", "id", $assessment->id); }
function workshop_submission_grade($workshop, $submission) { // returns the current (external) grade of the submission based on the "good" (cold) assessments // (needed as it's called by grade) $grade = 0; if ($assessments = workshop_get_assessments($submission)) { $n = 0; foreach ($assessments as $assessment) { if ($workshop->agreeassessments and !$assessment->timeagreed) { // ignore assessments which have not been agreed continue; } if ($assessment->gradinggrade or !$assessment->timegraded) { // a good assessment (or one that has not been graded yet) if (workshop_is_teacher($workshop, $assessment->userid)) { $timenow = time(); if ($timenow > $workshop->releasegrades) { // teacher's grade is available $grade += $workshop->teacherweight * $assessment->grade; $n += $workshop->teacherweight; } } else { $grade += $assessment->grade; $n++; } } } if ($n) { // stop division by zero $grade = $grade / $n; } } return number_format($grade * $workshop->grade / 100, 1); }
function workshop_print_submission_assessments($workshop, $submission, $type) { global $USER, $CFG; // Returns the teacher or peer grade and a hyperlinked list of grades for this submission if (!($cm = get_coursemodule_from_instance("workshop", $workshop->id, $workshop->course))) { error("Course Module ID was incorrect"); } $str = ''; // get the assessments in grade order, highest first if ($assessments = workshop_get_assessments($submission, "", "grade DESC")) { if ($type == 'teacher' or $type == 'all') { // students can see teacher assessments only if the release date has passed $timenow = time(); if (workshop_is_teacher($workshop, $USER->id) or $timenow > $workshop->releasegrades) { foreach ($assessments as $assessment) { if (workshop_is_teacher($workshop, $assessment->userid)) { if ($type == 'all') { $str .= workshop_fullname($assessment->userid, $workshop->course) . ': '; } $str .= "<a href=\"viewassessment.php?aid={$assessment->id}\">" . "[" . number_format($assessment->grade * $workshop->grade / 100, 0) . "]</a>"; if (workshop_is_teacher($workshop, $USER->id)) { $str .= ' <a title="' . get_string('reassess', 'workshop') . "\" href=\"assess.php?id={$cm->id}&sid={$submission->id}\"><img src=\"{$CFG->pixpath}/t/edit.gif\" " . ' class="iconsmall" alt="' . get_string('reassess', 'workshop') . '" /></a>'; $str .= ' <a title="' . get_string('delete', 'workshop') . "\" href=\"assessments.php?action=confirmdelete&wid={$workshop->id}&aid={$assessment->id}\"><img src=\"{$CFG->pixpath}/t/delete.gif\" " . ' class="iconsmall" alt="' . get_string('delete', 'workshop') . '" /></a><br />'; } } } } } if ($type == 'student' or $type == 'all') { foreach ($assessments as $assessment) { if (workshop_is_student($workshop, $assessment->userid)) { if ($type == 'all') { $str .= workshop_fullname($assessment->userid, $workshop->course) . ': '; } $str .= "<a href=\"viewassessment.php?aid={$assessment->id}\">"; if ($workshop->agreeassessments and !$assessment->timeagreed and workshop_is_student($workshop, $submission->userid)) { // agreement on student work only $str .= "<<" . number_format($assessment->grade * $workshop->grade / 100, 0) . " (" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . ")>></a> "; } elseif ($assessment->timegraded) { if ($assessment->gradinggrade) { $str .= "{" . number_format($assessment->grade * $workshop->grade / 100, 0); if ($assessment->teachergraded) { $str .= " [" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . "]}</a> "; } else { $str .= " (" . number_format($assessment->gradinggrade * $workshop->gradinggrade / 100, 0) . ")}</a> "; } } else { $str .= "<" . number_format($assessment->grade * $workshop->grade / 100, 0) . " (0)></a> "; } } else { $str .= "{" . number_format($assessment->grade * $workshop->grade / 100, 0) . "}</a> "; } $str .= '<br />'; } } } } if (!$str) { $str = " "; // be kind to Mozilla browsers! } return $str; }