Exemplo n.º 1
0
 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();
     }
 }
Exemplo n.º 2
0
 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";
 }
Exemplo n.º 3
0
 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";
 }
Exemplo n.º 4
0
 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";
 }