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