require_variable($id); // CM ID
- $newfile = $HTTP_POST_FILES["newfile"];
if (! $cm = get_record("course_modules", "id", $id)) {
error("Course Module ID was incorrect");
notify(get_string("notitlegiven", "workshop") );
}
else {
- if (is_uploaded_file($newfile['tmp_name']) and $newfile['size'] > 0) {
- if ($newfile['size'] > $workshop->maxbytes) {
- notify(get_string("uploadfiletoobig", "assignment", $workshop->maxbytes));
- }
- else {
- $newfile_name = clean_filename($newfile['name']);
- if ($newfile_name) {
- // get the current set of submissions
- $submissions = workshop_get_user_submissions($workshop, $USER);
- // add new submission record
- $newsubmission->workshopid = $workshop->id;
- $newsubmission->userid = $USER->id;
- $newsubmission->title = $title;
- $newsubmission->timecreated = time();
- if (!$newsubmission->id = insert_record("workshop_submissions", $newsubmission)) {
- error("Workshop upload: Failure to create new submission record!");
- }
- // see if this is a resubmission by looking at the previous submissions...
- if ($submissions and ($workshop->phase >1)) { // ...but not teacher submissions
- // find the last submission
- foreach ($submissions as $submission) {
- $lastsubmission = $submission;
- break;
- }
- // find all the possible assessments of this submission
- // ...and if they have been assessed give the assessor a new assessment
- // based on their old assessment, if the assessment has not be made
- // just delete it!
- if ($assessments = workshop_get_assessments($submission, 'ALL')) {
- foreach ($assessments as $assessment) {
- if ($assessment->timecreated < $timenow) {
- // a Cold or Warm assessment - copy it with feedback..
- $newassessment = workshop_copy_assessment($assessment, $newsubmission,
- true);
- // set the resubmission flag so student can be emailed/told about
- // this assessment
- set_field("workshop_assessments", "resubmission", 1, "id",
- $newassessment->id);
- } else {
- // a hot assessment, was not used, just dump it
- delete_records("workshop_assessments", "id", $assessment->id);
- }
- }
+ require_once($CFG->dirroot.'/lib/uploadlib.php');
+ $um = new upload_manager('newfile',false,false,$course,false,$exercise->maxbytes);
+ if ($um->preprocess_files()) {
+ // get the current set of submissions
+ $submissions = workshop_get_user_submissions($workshop, $USER);
+ // add new submission record
+ $newsubmission->workshopid = $workshop->id;
+ $newsubmission->userid = $USER->id;
+ $newsubmission->title = $title;
+ $newsubmission->timecreated = time();
+ if (!$newsubmission->id = insert_record("workshop_submissions", $newsubmission)) {
+ error("Workshop upload: Failure to create new submission record!");
+ }
+ // see if this is a resubmission by looking at the previous submissions...
+ if ($submissions and ($workshop->phase >1)) { // ...but not teacher submissions
+ // find the last submission
+ foreach ($submissions as $submission) {
+ $lastsubmission = $submission;
+ break;
+ }
+ // find all the possible assessments of this submission
+ // ...and if they have been assessed give the assessor a new assessment
+ // based on their old assessment, if the assessment has not be made
+ // just delete it!
+ if ($assessments = workshop_get_assessments($submission, 'ALL')) {
+ foreach ($assessments as $assessment) {
+ if ($assessment->timecreated < $timenow) {
+ // a Cold or Warm assessment - copy it with feedback..
+ $newassessment = workshop_copy_assessment($assessment, $newsubmission,
+ true);
+ // set the resubmission flag so student can be emailed/told about
+ // this assessment
+ set_field("workshop_assessments", "resubmission", 1, "id",
+ $newassessment->id);
+ } else {
+ // a hot assessment, was not used, just dump it
+ delete_records("workshop_assessments", "id", $assessment->id);
}
- add_to_log($course->id, "workshop", "resubmit", "view.php?id=$cm->id",
- "$workshop->id","$cm->id");
- }
- if (! $dir = workshop_file_area($workshop, $newsubmission)) {
- error("Sorry, an error in the system prevents you from uploading files: contact your teacher or system administrator");
- }
- if (move_uploaded_file($newfile['tmp_name'], "$dir/$newfile_name")) {
- print_heading(get_string("uploadsuccess", "assignment", $newfile_name) );
- add_to_log($course->id, "workshop", "submit", "view.php?id=$cm->id", "$workshop->id", "$cm->id");
- }
- else {
- notify(get_string("uploaderror", "assignment") );
}
}
+ add_to_log($course->id, "workshop", "resubmit", "view.php?id=$cm->id",
+ "$workshop->id","$cm->id");
+ }
+ $dir = workshop_file_area_name($workshop, $newsubmission);
+ if ($um->save_files($dir)) {
+ print_heading(get_string("uploadsuccess", "assignment", $um->get_new_filename()) );
+ add_to_log($course->id, "workshop", "submit", "view.php?id=$cm->id", "$workshop->id", "$cm->id");
}
- }
- elseif (!is_uploaded_file($newfile['tmp_name']) and !$newfile['size'] > 0 and $newfile['name']) {
- notify(get_string("uploadfiletoobig", "assignment", $workshop->maxbytes));
- }
- else {
- notify(get_string("uploadnofilefound", "assignment"));
+ // um will take care of printing errors.
}
}
print_continue("view.php?id=$cm->id");