/** * creates a zip of all assignment submissions and sends a zip to the browser */ public function download_submissions() { global $CFG, $DB; raise_memory_limit(MEMORY_EXTRA); $submissions = $this->get_submissions('', ''); if (empty($submissions)) { print_error('errornosubmissions', 'assignment'); } $filesforzipping = array(); //NOTE: do not create any stuff in temp directories, we now support unicode file names and that would not work, sorry //online assignment can use html $filextn = ".html"; $groupmode = groups_get_activity_groupmode($this->cm); $groupid = 0; // All users $groupname = ''; if ($groupmode) { $groupid = groups_get_activity_group($this->cm, true); $groupname = groups_get_group_name($groupid) . '-'; } $filename = str_replace(' ', '_', clean_filename($this->course->shortname . '-' . $this->assignment->name . '-' . $groupname . $this->assignment->id . ".zip")); //name of new zip file. foreach ($submissions as $submission) { $a_userid = $submission->userid; //get userid if (groups_is_member($groupid, $a_userid) or !$groupmode or !$groupid) { $a_assignid = $submission->assignment; //get name of this assignment for use in the file names. $a_user = $DB->get_record("user", array("id" => $a_userid), 'id,username,firstname,lastname'); //get user firstname/lastname $submissioncontent = "<html><body>" . format_text($submission->data1, $submission->data2) . "</body></html>"; //fetched from database //get file name.html $fileforzipname = clean_filename(fullname($a_user) . "_" . $a_userid . $filextn); $filesforzipping[$fileforzipname] = array($submissioncontent); } } //end of foreach if ($zipfile = assignment_pack_files($filesforzipping)) { send_temp_file($zipfile, $filename); //send file and delete after sending. } }
/** * creates a zip of all assignment submissions and sends a zip to the browser */ public function download_submissions() { global $CFG,$DB; require_once($CFG->libdir.'/filelib.php'); $submissions = $this->get_submissions('',''); if (empty($submissions)) { print_error('errornosubmissions', 'assignment', new moodle_url('/mod/assignment/submissions.php', array('id'=>$this->cm->id))); } $filesforzipping = array(); $fs = get_file_storage(); $groupmode = groups_get_activity_groupmode($this->cm); $groupid = 0; // All users $groupname = ''; if ($groupmode) { $groupid = groups_get_activity_group($this->cm, true); $groupname = groups_get_group_name($groupid).'-'; } $filename = str_replace(' ', '_', clean_filename($this->course->shortname.'-'.$this->assignment->name.'-'.$groupname.$this->assignment->id.".zip")); //name of new zip file. foreach ($submissions as $submission) { // If assignment is open and submission is not finalized then don't add it to zip. $submissionstatus = $this->is_finalized($submission); if ($this->isopen() && empty($submissionstatus)) { continue; } $a_userid = $submission->userid; //get userid if ((groups_is_member($groupid,$a_userid)or !$groupmode or !$groupid)) { $a_assignid = $submission->assignment; //get name of this assignment for use in the file names. $a_user = $DB->get_record("user", array("id"=>$a_userid),'id,username,firstname,lastname'); //get user firstname/lastname $files = $fs->get_area_files($this->context->id, 'mod_assignment', 'submission', $submission->id, "timemodified", false); foreach ($files as $file) { //get files new name. $fileext = strstr($file->get_filename(), '.'); $fileoriginal = str_replace($fileext, '', $file->get_filename()); $fileforzipname = clean_filename(fullname($a_user) . "_" . $fileoriginal."_".$a_userid.$fileext); //save file name to array for zipping. $filesforzipping[$fileforzipname] = $file; } } } // end of foreach loop // Throw error if no files are added. if (empty($filesforzipping)) { print_error('errornosubmissions', 'assignment', new moodle_url('/mod/assignment/submissions.php', array('id'=>$this->cm->id))); } if ($zipfile = assignment_pack_files($filesforzipping)) { send_temp_file($zipfile, $filename); //send file and delete after sending. } }