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."); }
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;')));