error("assignment ID was incorrect");
    }
    if (!($course = $DB->get_record('course', array('id' => $assignment->course)))) {
        error("Course is misconfigured");
    }
    $url->param('id', $id);
} else {
    if (!($assignment = $DB->get_record('assignment', array('id' => $a)))) {
        error("Course module is incorrect");
    }
    if (!($course = $DB->get_record("course", array('id' => $assignment->course)))) {
        error("Course is misconfigured");
    }
    if (!($cm = get_coursemodule_from_instance("assignment", $assignment->id, $course->id))) {
        error("Course Module ID was incorrect");
    }
    $url->param('a', $a);
}
$PAGE->set_url($url);
require_login($course->id, false, $cm);
require_capability('mod/assignment:grade', get_context_instance(CONTEXT_MODULE, $cm->id));
require dirname(__FILE__) . '/assignment.class.php';
$assignmentinstance = new assignment_uploadpdf($cm->id, $assignment, $cm, $course);
$action = optional_param('action', null, PARAM_TEXT);
if ($action == 'showprevious') {
    $assignmentinstance->show_previous_comments($userid);
} elseif ($action == 'showpreviouspage') {
    $assignmentinstance->edit_comment_page($userid, $pageno, false);
} else {
    $assignmentinstance->edit_comment_page($userid, $pageno);
}
}
if (!($course = $DB->get_record('course', array('id' => $assignment->course)))) {
    error("Course is misconfigured");
}
if (!($user = $DB->get_record('user', array('id' => $userid)))) {
    error("User is misconfigured");
}
$PAGE->set_url($url);
require_login($course->id, false, $cm);
if (!has_capability('mod/assignment:grade', get_context_instance(CONTEXT_MODULE, $cm->id))) {
    error("You can not view this assignment");
}
if ($assignment->assignmenttype != 'uploadpdf') {
    error("Incorrect assignment type");
}
$assignmentinstance = new assignment_uploadpdf($cm->id, $assignment, $cm, $course);
$returnurl = "../../submissions.php?id={$assignmentinstance->cm->id}&userid={$userid}&offset={$offset}&mode=single";
if ($submission = $assignmentinstance->get_submission($user->id) and !empty($submission->data1)) {
    $PAGE->set_title(fullname($user, true) . ': ' . $assignment->name);
    echo $OUTPUT->header();
    echo $OUTPUT->heading(get_string('notes', 'assignment') . ' - ' . fullname($user, true));
    echo $OUTPUT->box(format_text($submission->data1, FORMAT_HTML), 'generalbox boxaligncenter boxwidthwide');
    if ($mode != 'single') {
        echo $OUTPUT->close_window_button();
    } else {
        echo $OUTPUT->continue_button($returnurl);
    }
    echo $OUTPUT->footer();
} else {
    $PAGE->set_title(fullname($user, true) . ': ' . $assignment->name);
    echo $OUTPUT->header();
$formdata->mode = optional_param('mode', null, PARAM_ALPHA);
$url = new moodle_url('/mod/assignment/type/uploadpdf/upload.php', array('contextid' => $contextid, 'offset' => $formdata->offset, 'forcerefresh' => $formdata->forcerefresh, 'userid' => $formdata->userid, 'mode' => $formdata->mode));
list($context, $course, $cm) = get_context_info_array($contextid);
require_login($course, true, $cm);
if (isguestuser()) {
    die;
}
if (!($assignment = $DB->get_record('assignment', array('id' => $cm->instance)))) {
    print_error('invalidid', 'assignment');
}
$PAGE->set_url($url);
$PAGE->set_context($context);
$title = strip_tags($course->fullname . ': ' . get_string('modulename', 'assignment') . ': ' . format_string($assignment->name, true));
$PAGE->set_title($title);
$PAGE->set_heading($title);
$instance = new assignment_uploadpdf($cm->id, $assignment, $cm, $course);
$submission = $instance->get_submission($formdata->userid, true);
// FIXME - change this to only allow PDFs, if that option is set
$filemanager_options = array('subdirs' => 0, 'maxbytes' => $assignment->maxbytes, 'maxfiles' => $assignment->var1, 'accepted_types' => '*', 'return_types' => FILE_INTERNAL);
$mform = new mod_assignment_uploadpdf_form(null, array('contextid' => $contextid, 'userid' => $formdata->userid, 'options' => $filemanager_options));
if ($mform->is_cancelled()) {
    redirect(new moodle_url('/mod/assignment/view.php', array('id' => $cm->id)));
} else {
    if ($formdata = $mform->get_data()) {
        $instance->upload($mform, $filemanager_options);
        die;
    }
}
echo $OUTPUT->header();
echo $OUTPUT->box_start('generalbox');
if ($instance->can_upload_file($submission)) {
    }
    if (!($course = $DB->get_record('course', array('id' => $assignment->course)))) {
        error("Course is misconfigured");
    }
    $url->param('id', $id);
} else {
    if (!($assignment = $DB->get_record('assignment', array('id' => $a)))) {
        error("Course module is incorrect");
    }
    if (!($course = $DB->get_record("course", array('id' => $assignment->course)))) {
        error("Course is misconfigured");
    }
    if (!($cm = get_coursemodule_from_instance("assignment", $assignment->id, $course->id))) {
        error("Course Module ID was incorrect");
    }
    $url->param('a', $a);
}
if ($userid) {
    $url->param('userid', $userid);
}
$PAGE->set_url($url);
require_login($course->id, false, $cm);
if ($userid && $userid != $USER->id) {
    require_capability('mod/assignment:grade', get_context_instance(CONTEXT_MODULE, $cm->id));
} else {
    require_capability('mod/assignment:submit', get_context_instance(CONTEXT_MODULE, $cm->id));
    $userid = $USER->id;
}
require dirname(__FILE__) . '/assignment.class.php';
$assignmentinstance = new assignment_uploadpdf($cm->id, $assignment, $cm, $course);
$assignmentinstance->edit_comment_page($userid, $pageno, false);
 function restore_one_submission($info, $restore, $assignment, $submission)
 {
     //Get the submissions array - it might not be present
     if (@isset($info['#']['COMMENTS']['0']['#']['COMMENT'])) {
         $comments = $info['#']['COMMENTS']['0']['#']['COMMENT'];
     } else {
         $comments = array();
     }
     foreach ($comments as $comment) {
         $dbc = new stdclass();
         $dbc->posx = backup_todb($comment['#']['POSX']['0']['#']);
         $dbc->posy = backup_todb($comment['#']['POSY']['0']['#']);
         $dbc->width = backup_todb($comment['#']['WIDTH']['0']['#']);
         $dbc->rawtext = backup_todb($comment['#']['RAWTEXT']['0']['#']);
         $dbc->pageno = backup_todb($comment['#']['PAGENO']['0']['#']);
         $dbc->colour = backup_todb($comment['#']['COLOUR']['0']['#']);
         $dbc->assignment_submission = $submission->id;
         insert_record('assignment_uploadpdf_comment', $dbc);
     }
     if (@isset($info['#']['ANNOTATIONS']['0']['#']['ANNOTATION'])) {
         $annotations = $info['#']['ANNOTATIONS']['0']['#']['ANNOTATION'];
     } else {
         $annotations = array();
     }
     foreach ($annotations as $annotation) {
         $dba = new stdclass();
         $dba->startx = backup_todb($annotation['#']['STARTX']['0']['#']);
         $dba->starty = backup_todb($annotation['#']['STARTY']['0']['#']);
         $dba->endx = backup_todb($annotation['#']['ENDX']['0']['#']);
         $dba->endy = backup_todb($annotation['#']['ENDY']['0']['#']);
         $dba->path = assignment_uploadpdf::backup_todb_optional_field($annotation, 'PATH', null);
         $dba->pageno = backup_todb($annotation['#']['PAGENO']['0']['#']);
         $dba->colour = backup_todb($annotation['#']['COLOUR']['0']['#']);
         $dba->type = backup_todb($annotation['#']['TYPE']['0']['#']);
         $dba->assignment_submission = $submission->id;
         insert_record('assignment_uploadpdf_annot', $dba);
     }
 }
$pageno = required_param('pageno', PARAM_INT);
if ($id) {
    if (!($cm = get_coursemodule_from_id('assignment', $id))) {
        send_error("Course Module ID was incorrect");
    }
    if (!($assignment = get_record("assignment", "id", $cm->instance))) {
        send_error("assignment ID was incorrect");
    }
    if (!($course = get_record("course", "id", $assignment->course))) {
        send_error("Course is misconfigured");
    }
} else {
    if (!($assignment = get_record("assignment", "id", $a))) {
        send_error("Course module is incorrect");
    }
    if (!($course = get_record("course", "id", $assignment->course))) {
        send_error("Course is misconfigured");
    }
    if (!($cm = get_coursemodule_from_instance("assignment", $assignment->id, $course->id))) {
        send_error("Course Module ID was incorrect");
    }
}
require_login($course->id, false, $cm);
// Students are allowed to view comments on their own assignments, so capabilities now checked later
//require_capability('mod/assignment:grade', get_context_instance(CONTEXT_MODULE, $cm->id));
if (!confirm_sesskey()) {
    send_error('You must be logged in to do this', ASSIGNMENT_UPLOADPDF_ERR_NO_LOGIN);
}
require_once dirname(__FILE__) . '/assignment.class.php';
$assignmentinstance = new assignment_uploadpdf($cm->id, $assignment, $cm, $course);
$assignmentinstance->update_comment_page($userid, $pageno);