/** * Do the job. * Throw exceptions on errors (the job will be retried). */ public function execute() { global $CFG, $DB; require_once $CFG->dirroot . '/mod/assign/locallib.php'; $records = $DB->get_records('assignfeedback_editpdf_queue'); $assignmentcache = array(); foreach ($records as $record) { $submissionid = $record->submissionid; $submission = $DB->get_record('assign_submission', array('id' => $submissionid), '*', IGNORE_MISSING); if (!$submission) { // Submission no longer exists. $DB->delete_records('assignfeedback_editpdf_queue', array('id' => $record->id)); continue; } $assignmentid = $submission->assignment; $attemptnumber = $record->submissionattempt; if (empty($assignmentcache[$assignmentid])) { $cm = get_coursemodule_from_instance('assign', $assignmentid, 0, false, MUST_EXIST); $context = context_module::instance($cm->id); $assignment = new assign($context, null, null); $assignmentcache[$assignmentid] = $assignment; } else { $assignment = $assignmentcache[$assignmentid]; } $users = array(); if ($submission->userid) { array_push($users, $submission->userid); } else { $members = $assignment->get_submission_group_members($submission->groupid, true); foreach ($members as $member) { array_push($users, $member->id); } } mtrace('Convert ' . count($users) . ' submission attempt(s) for assignment ' . $assignmentid); foreach ($users as $userid) { document_services::get_page_images_for_attempt($assignment, $userid, $attemptnumber, true); document_services::get_page_images_for_attempt($assignment, $userid, $attemptnumber, false); } $DB->delete_records('assignfeedback_editpdf_queue', array('id' => $record->id)); } }
if (!$assignment->can_view_submission($userid)) { print_error('nopermission'); } if ($action == 'loadallpages') { $draft = true; if (!has_capability('mod/assign:grade', $context)) { $draft = false; $readonly = true; // A student always sees the readonly version. require_capability('mod/assign:submit', $context); } // Whoever is viewing the readonly version should not use the drafts, but the actual annotations. if ($readonly) { $draft = false; } $pages = document_services::get_page_images_for_attempt($assignment, $userid, $attemptnumber, $readonly); $response = new stdClass(); $response->pagecount = count($pages); $response->pages = array(); $grade = $assignment->get_user_grade($userid, true, $attemptnumber); // The readonly files are stored in a different file area. $filearea = document_services::PAGE_IMAGE_FILEAREA; if ($readonly) { $filearea = document_services::PAGE_IMAGE_READONLY_FILEAREA; } foreach ($pages as $id => $pagefile) { $index = count($response->pages); $page = new stdClass(); $comments = page_editor::get_comments($grade->id, $index, $draft); $page->url = moodle_url::make_pluginfile_url($context->id, 'assignfeedback_editpdf', $filearea, $grade->id, '/', $pagefile->get_filename())->out(); $page->comments = $comments;