Beispiel #1
0
 /**
  * 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));
     }
 }
Beispiel #2
0
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;