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.");
 }
Beispiel #2
0
        print_error('Invalid access');
    }
    if (!($digitizedanswer = $DB->get_record('emarking_digitized_answers', array('id' => $digitizedanswerid)))) {
        print_error('Invalid id for digitized answer to process');
    }
    $digitizedanswer->status = EMARKING_DIGITIZED_ANSWER_UPLOADED;
    $DB->update_record('emarking_digitized_answers', $digitizedanswer);
    // Display confirmation page before moving to process.
    redirect($url, get_string('transactionsuccessfull', 'mod_emarking'), 3);
    die;
}
// Display form for uploading zip file.
echo $OUTPUT->header();
echo $OUTPUT->heading($emarking->name);
echo $OUTPUT->tabtree(emarking_tabs($context, $cm, $emarking), 'uploadanswers');
$digitizedanswersfiles = emarking_get_digitized_answer_files($emarking);
if (count($digitizedanswersfiles) == 0) {
    echo $OUTPUT->notification(get_string('nodigitizedanswerfiles', 'mod_emarking'), 'notifymessage');
} else {
    $table = new html_table();
    $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;')));