コード例 #1
0
 public function execute()
 {
     global $CFG, $DB;
     require_once $CFG->dirroot . '/mod/emarking/lib.php';
     require_once $CFG->dirroot . '/mod/emarking/locallib.php';
     require_once $CFG->dirroot . '/mod/emarking/print/locallib.php';
     $digitizedanswerfiles = emarking_get_digitized_answer_files(NULL, EMARKING_DIGITIZED_ANSWER_UPLOADED);
     if (count($digitizedanswerfiles) == 0) {
         mtrace('No digitized answers files to process');
         return;
     }
     $totalfiles = 0;
     // Setup de directorios temporales.
     $tempdir = emarking_get_temp_dir_path(random_string());
     emarking_initialize_directory($tempdir, true);
     foreach ($digitizedanswerfiles as $digitizedanswerfile) {
         if (!($zipfile = emarking_get_path_from_hash($tempdir, $digitizedanswerfile->hash))) {
             mtrace('Invalid file for processing ' . $digitizedanswerfile->id);
             continue;
         }
         if (!($emarking = $DB->get_record('emarking', array('id' => $digitizedanswerfile->emarking)))) {
             mtrace('Invalid emarking activity ' . $digitizedanswerfile->emarking);
             continue;
         }
         if (!($course = $DB->get_record('course', array('id' => $emarking->course)))) {
             mtrace('Invalid course in emarking activity ' . $emarking->course);
             continue;
         }
         if (!($cm = get_coursemodule_from_instance('emarking', $emarking->id))) {
             mtrace('Invalid course module for emarking activity ' . $emarking->id);
             continue;
         }
         $totalfiles++;
         $msg = "[{$totalfiles}] : {$course->fullname} ({$course->id}) : {$emarking->name} ({$emarking->id}) : {$digitizedanswerfile->filename} ({$digitizedanswerfile->id})";
         $digitizedanswerfile->status = EMARKING_DIGITIZED_ANSWER_BEING_PROCESSED;
         $DB->update_record('emarking_digitized_answers', $digitizedanswerfile);
         // Process documents and obtain results.
         list($result, $errors, $totaldocumentsprocessed, $totaldocumentsignored) = emarking_upload_answers($emarking, $zipfile, $course, $cm);
         if ($result) {
             $digitizedanswerfile->status = EMARKING_DIGITIZED_ANSWER_PROCESSED;
         } else {
             $digitizedanswerfile->status = EMARKING_DIGITIZED_ANSWER_ERROR_PROCESSING;
         }
         $digitizedanswerfile->totalpages = $totaldocumentsprocessed;
         $digitizedanswerfile->identifiedpages = $totaldocumentsprocessed - $totaldocumentsignored;
         $msg .= emarking_get_string_for_status_digitized($digitizedanswerfile->status) . ' processed:' . $totaldocumentsprocessed . ' ignored:' . $totaldocumentsignored;
         $DB->update_record('emarking_digitized_answers', $digitizedanswerfile);
         mtrace($msg);
     }
     mtrace("A total of {$totalfiles} were processed.");
 }
コード例 #2
0
ファイル: uploadanswers.php プロジェクト: sikeze/emarking
    $table->attributes['style'] = 'display:table;';
    $table->head = array(get_string('filename', 'repository'), get_string('size'), 'Mime type', get_string('uploaded', 'hub'), get_string('status', 'mod_emarking'), get_string('actions', 'mod_emarking'));
    foreach ($digitizedanswersfiles as $file) {
        $actions = array();
        $deleteurl = new moodle_url('/mod/emarking/print/uploadanswers.php', array('id' => $cm->id, 'action' => 'delete', 'did' => $file->id));
        $processurl = new moodle_url('/mod/emarking/print/uploadanswers.php', array('id' => $cm->id, 'action' => 'process', 'did' => $file->id));
        $changetouploadedurl = new moodle_url('/mod/emarking/print/uploadanswers.php', array('id' => $cm->id, 'action' => 'changetouploaded', 'did' => $file->id));
        if (($file->status == EMARKING_DIGITIZED_ANSWER_ERROR_PROCESSING || $file->status <= EMARKING_DIGITIZED_ANSWER_UPLOADED) && $usercanmanageanswersfiles) {
            $actions[] = $OUTPUT->action_icon($deleteurl, new pix_icon('i/delete', 'delete', null, array('style' => 'width:1.5em;')));
        } elseif ($file->status != EMARKING_DIGITIZED_ANSWER_BEING_PROCESSED && $usercanmanageanswersfiles) {
            $actions[] = $OUTPUT->action_icon($processurl, new pix_icon('i/reload', 'reload', null, array('style' => 'width:1.5em;')));
        } elseif (($file->status == EMARKING_DIGITIZED_ANSWER_PROCESSED || $file->status == EMARKING_DIGITIZED_ANSWER_ERROR_PROCESSING) && $usercanmanageanswersfiles) {
            $actions[] = $OUTPUT->action_icon($changetouploadedurl, new pix_icon('i/scheduled', 'scheduled', null, array('style' => 'width:1.5em;')));
        } elseif ($file->status == EMARKING_DIGITIZED_ANSWER_BEING_PROCESSED && is_siteadmin()) {
            $actions[] = $OUTPUT->action_icon($processurl, new pix_icon('i/reload', 'reload', null, array('style' => 'width:1.5em;')));
        }
        $table->data[] = array($file->filename, display_size($file->filesize), $file->mimetype, emarking_time_ago($file->timecreated), emarking_get_string_for_status_digitized($file->status), implode(' ', $actions));
    }
    echo html_writer::table($table);
}
// Show orphan pages button
$orphanpages = emarking_get_digitized_answer_orphan_pages($context);
$numorphanpages = count($orphanpages);
if ($numorphanpages > 0) {
    $orphanpagesurl = new moodle_url('/mod/emarking/print/orphanpages.php', array('id' => $cm->id));
    echo $OUTPUT->single_button($orphanpagesurl, get_string('thereareorphanpages', 'mod_emarking', $numorphanpages), 'GET');
}
if (has_capability('mod/emarking:uploadexam', $context)) {
    $mform->display();
}
echo $OUTPUT->footer();