function judge($cleanup = true) { $status = $this->do_judge(); if (Status::is_passed($status) and $this->subm->entity()->deadline_passed($this->subm->time)) { $status = Status::MISSED_DEADLINE; } $this->subm->set_status($status); if ($cleanup) { $this->__destruct(); } }
function write_print_submission($subm) { // include this submission? if (!isset($_REQUEST['include_failed'])) { if (!Status::is_passed($subm->status) and !$subm->status == Status::MISSED_DEADLINE) { return; } } // does it match a user filter? if (@$_REQUEST['user_filter'] != '') { $match = stripos(User::names_text($subm->users()), $_REQUEST['user_filter']); if ($match === false) { return; } } // submission header echo '<div class="submission">'; echo '<div class="submission-head">'; echo "<table><tr><td>Submission</td><td>#" . $subm->submissionid . " for <tt>" . htmlspecialchars($subm->entity_path) . "</tt></td></tr>"; echo "<tr><td>by</td><td>" . User::names_html($subm->users()) . "</td></tr>"; echo "<tr><td>on</td><td>" . format_date($subm->time) . "</td></tr>"; if (!Status::is_passed($subm->status)) { echo "<tr><td>status</td><td><strong>" . strtoupper(Status::to_text($subm)) . "</strong></td></tr>"; } echo "</table>"; echo "</div>\n"; if ($subm->is_archived()) { // file header echo "<div class=\"file\">"; echo '<div class="file-head">'; echo 'This submission has been archived'; echo '</div></div>'; } else { // submission files foreach ($subm->get_code_filenames() as $code_name => $filename) { $this->write_print_file($filename, $subm->get_file($code_name)); } } echo "</div>\n"; }
function write_submission_summary($entities, $users) { // determine summary $num_passed = array(); $num_failed = array(); $num_missed_deadline = array(); $num_none = array(); foreach ($entities as $e => $entity) { $num_passed[$e] = $num_failed[$e] = $num_missed_deadline[$e] = $num_none[$e] = 0; foreach ($users as $userinfo) { $subms = $userinfo['subms']; $subm = isset($subms[$e]) ? $subms[$e] : false; if (Status::is_passed(Status::to_status($subm))) { $num_passed[$e]++; } else { if (Status::is_failed(Status::to_status($subm))) { $num_failed[$e]++; } else { if (Status::is_missed_deadline(Status::to_status($subm))) { $num_missed_deadline[$e]++; } else { $num_none[$e]++; } } } } } $sum = array(); foreach ($entities as $e => $entity) { $sum[$e] = $num_passed[$e] + $num_failed[$e] + $num_missed_deadline[$e] + $num_none[$e]; } echo '<tr class="first-child"><td class="summary">passed</td>'; foreach ($entities as $e => $entity) { echo '<td>' . $num_passed[$e] . ' (' . number_format(100.0 * $num_passed[$e] / $sum[$e], 1) . '%)</td>'; } echo "</tr>\n"; echo '<tr><td class="summary">failed</td>'; foreach ($entities as $e => $entity) { echo '<td>' . $num_failed[$e] . ' (' . number_format(100.0 * $num_failed[$e] / $sum[$e], 1) . '%)</td>'; } echo "</tr>\n"; echo '<tr><td class="summary">missed deadline</td>'; foreach ($entities as $e => $entity) { echo '<td>' . $num_missed_deadline[$e] . ' (' . number_format(100.0 * $num_missed_deadline[$e] / $sum[$e], 1) . '%)</td>'; } echo "</tr>\n"; echo '<tr><td class="summary">not submitted</td>'; foreach ($entities as $e => $entity) { echo '<td>' . $num_none[$e] . ' (' . number_format(100.0 * $num_none[$e] / $sum[$e], 1) . '%)</td>'; } echo "</tr>\n"; }
function write_print_submission($subm) { // include this submission? if (!isset($_REQUEST['include_failed'])) { if (!Status::is_passed($subm->status)) { return; } } // does it match a user filter? if (@$_REQUEST['user_filter'] != '') { $match = stripos(User::names_text($subm->users()), $_REQUEST['user_filter']); if ($match === false) { return; } } // submission header echo "\\section*{Submission \\#" . $subm->submissionid . " for " . htmlspecialchars($subm->entity_path) . "}\n"; echo "by " . User::names_html($subm->users()) . ", "; echo "on " . format_date($subm->time) . "\n\n"; if (!Status::is_passed($subm->status)) { echo "(status " . Status::to_text($subm) . ")"; } // submission files foreach ($subm->get_code_filenames() as $code_name => $filename) { $this->write_print_file($filename, $subm->get_file($code_name)); } echo "\\cleardoublepage\n"; }