/** * Returns html to display the content of mod_folder * (Description, folder files and optionally Edit button) * * @param stdClass $folder record from 'folder' table (please note * it may not contain fields 'revision' and 'timemodified') * @return string */ public function display_folder(stdClass $folder) { $output = ''; $folderinstances = get_fast_modinfo($folder->course)->get_instances_of('folder'); if (!isset($folderinstances[$folder->id]) || !($cm = $folderinstances[$folder->id]) || !($context = context_module::instance($cm->id))) { // Some error in parameters. // Don't throw any errors in renderer, just return empty string. // Capability to view module must be checked before calling renderer. return $output; } if (trim($folder->intro)) { if ($folder->display != FOLDER_DISPLAY_INLINE) { $output .= $this->output->box(format_module_intro('folder', $folder, $cm->id), 'generalbox', 'intro'); } else if ($cm->showdescription) { // for "display inline" do not filter, filters run at display time. $output .= format_module_intro('folder', $folder, $cm->id, false); } } $foldertree = new folder_tree($folder, $cm); if ($folder->display == FOLDER_DISPLAY_INLINE) { // Display module name as the name of the root directory. $foldertree->dir['dirname'] = $cm->get_formatted_name(); } $output .= $this->output->box($this->render($foldertree), 'generalbox foldertree'); // Do not append the edit button on the course page. if ($folder->display != FOLDER_DISPLAY_INLINE) { $containercontents = ''; $downloadable = folder_archive_available($folder, $cm); if ($downloadable) { $downloadbutton = $this->output->single_button( new moodle_url('/mod/folder/download_folder.php', array('id' => $cm->id)), get_string('downloadfolder', 'folder') ); $output .= $downloadbutton; } if (has_capability('mod/folder:managefiles', $context)) { $editbutton = $this->output->single_button( new moodle_url('/mod/folder/edit.php', array('id' => $cm->id)), get_string('edit') ); $output .= $editbutton; } } return $output; }
* Folder download * * @package mod_folder * @copyright 2015 Andrew Hancox <*****@*****.**> * @license http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later */ require_once __DIR__ . "/../../config.php"; $id = required_param('id', PARAM_INT); // Course module ID. $cm = get_coursemodule_from_id('folder', $id, 0, true, MUST_EXIST); $course = $DB->get_record('course', array('id' => $cm->course), '*', MUST_EXIST); require_course_login($course, true, $cm); $context = context_module::instance($cm->id); require_capability('mod/folder:view', $context); $folder = $DB->get_record('folder', array('id' => $cm->instance), '*', MUST_EXIST); $downloadable = folder_archive_available($folder, $cm); if (!$downloadable) { print_error('cannotdownloaddir', 'repository'); } folder_downloaded($folder, $course, $cm, $context); $fs = get_file_storage(); $file = $fs->get_file($context->id, 'mod_folder', 'content', 0, '/', '.'); if (!$file) { print_error('cannotdownloaddir', 'repository'); } $zipper = get_file_packer('application/zip'); $filename = clean_filename($folder->name . "-" . date("Ymd")) . ".zip"; $temppath = make_request_directory() . $filename; if ($zipper->archive_to_pathname(array('/' => $file), $temppath)) { send_temp_file($temppath, $filename); } else {