123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355 |
- <?php
- require_once("../../config.php");
- require_once($CFG->dirroot . '/mod/iassign/lib.php');
- require_once($CFG->dirroot . '/mod/iassign/locallib.php');
- require_once($CFG->dirroot . '/mod/iassign/ilm_manager_form.php');
- require_login();
- if (isguestuser()) {
- die();
- }
- if (session_id() === "")
- session_start();
- function prepare_secure_access ($ilmid, $fileid, $userid) {
- require_once ('ilm_security.php');
-
-
- $fs = get_file_storage();
- $md_file = $fs->get_file_by_id($fileid);
- $ilm_content_file = $md_file->get_content();
- $timecreated = time(); $token = md5($timecreated);
- $filename = $md_file->get_filename();
- $id_iLM_security = ilm_security::write_iLM_security($userid, $timecreated, -1, $ilm_content_file);
- $security = array('filename' => $filename, 'content' => $ilm_content_file, 'token' => $token, 'secure_id' => $id_iLM_security);
- return $security;
- }
- $id = optional_param('id', 0, PARAM_INT);
- $action = optional_param('action', NULL, PARAM_TEXT);
- $from = optional_param('from', NULL, PARAM_TEXT);
- $ilmid = optional_param('ilmid', 1, PARAM_INT);
- if ($id>0) {
- $contextuser = context_user::instance($USER->id);
- $context = context_course::instance($id);
- }
- $url = $CFG->wwwroot . "/mod/iassign/ilm_manager.php?from=$from&id=$id&ilmid=$ilmid";
- $iassign_ilm = $DB->get_record('iassign_ilm', array('id' => $ilmid));
- if (empty($iassign_ilm)) {
- $iassign_ilm = new stdClass();
- $iassign_ilm->name = "";
- $iassign_ilm->extension = "";
- }
- $returnurl = optional_param('returnurl', NULL, PARAM_TEXT);
- if ($returnurl != NULL)
- $_SESSION['returnurl'] = optional_param('returnurl', $CFG->wwwroot . "/course/view.php?id=$id&ilmid=$ilmid", PARAM_TEXT);
- $title = get_string('ilm_manager_title', 'iassign');
- if ($id>0) {
- $PAGE->set_url($url);
- $PAGE->set_context($context);
-
- $PAGE->blocks->show_only_fake_blocks();
-
- if (is_null($action))
- $PAGE->navbar->add($title);
- else
- $PAGE->navbar->add($title, $url);
- $PAGE->set_heading($title);
- }
- if (has_capability('mod/iassign:editiassign', $context, $USER->id)) {
- $ilm_manager_instance = new ilm_manager($id, $url, $from);
- $dirid = $ilm_manager_instance->get_dir_ilm('dirid');
- if ($action == 'get') {
- $fileid = optional_param('fileid', 1, PARAM_INT);
- return $ilm_manager_instance->get_file_ilm($ilmid, $fileid);
- }
- if ($action) {
- switch ($action) {
- case 'new':
- $ilm_manager_instance->ilm_editor_new();
- break;
- case 'update':
- $fileid = optional_param('fileid', NULL, PARAM_INT);
- $security = prepare_secure_access($ilmid, $fileid, $USER->id);
-
- $ilm_manager_instance->ilm_editor_update($security['filename'], $security['content'], $security['token'], $security['secure_id']);
- break;
- case 'delete':
- $ilm_manager_instance->delete_file_ilm();
- break;
- case 'duplicate':
- $ilm_manager_instance->duplicate_file_ilm();
- break;
- case 'rename':
- $ilm_manager_instance->rename_file_ilm();
- break;
- case 'preview':
-
-
- $ilm_manager_instance->preview_ilm($id, $iassign_ilm, $iassign_statementid);
- break;
- case 'addilm':
- $ilm_manager_instance->add_ilm();
- break;
- case 'tinymceilm':
- $fileid = optional_param('fileid', NULL, PARAM_INT);
- $ilm_manager_instance->editor_ilm($fileid, 'tinyMCE');
-
- break;
- case 'attoilm':
- $fileid = optional_param('fileid', NULL, PARAM_INT);
- $ilm_manager_instance->editor_ilm($fileid, 'atto');
-
- break;
- case 'export':
- $ilm_manager_instance->export_files_ilm();
- break;
- case 'import':
- $ilm_manager_instance->import_files_ilm();
- break;
- case 'selected_delete':
- $ilm_manager_instance->delete_selected_ilm();
- break;
- case 'new_dir':
- $ilm_manager_instance->new_dir_ilm();
- break;
- case 'delete_dir':
- $ilm_manager_instance->delete_dir_ilm();
- break;
- case 'rename_dir':
- $ilm_manager_instance->rename_dir_ilm();
- break;
- case 'selected_move':
- $ilm_manager_instance->selected_move_ilm();
- break;
- case 'move':
- $ilm_manager_instance->move_files_ilm();
- break;
- case 'recover':
- $ilm_manager_instance->recover_files_ilm();
- break;
- }
- }
- $mform = new ilm_manager_form();
- $param = new stdClass();
- $param->id = $id;
- $param->from = $from;
- $param->ilmid = $ilmid;
- $param->dirid = $dirid;
- $mform->set_data($param);
- if ($mform->is_cancelled()) {
- redirect(new moodle_url("/course/view.php?id=$id"));
- }
- else if ($formdata = $mform->get_data()) {
- $fs = get_file_storage();
- if ($formdata->dirid == 0)
- $dir_base = '/';
- else {
- $dir_base = $fs->get_file_by_id($formdata->dirid);
- $dir_base = $dir_base->get_filepath();
- }
- if ($newfilename = $mform->get_new_filename('file')) {
- $url = $CFG->wwwroot . "/mod/iassign/ilm_manager.php?from=$formdata->from&id=$id&ilmid=$ilmid&dirid=$formdata->dirid";
- $file_extension_array = explode(".", $newfilename);
- $index_last_ext = count($file_extension_array) - 1;
- if ($index_last_ext < 0)
- $file_extension = "";
- else
- $file_extension = $file_extension_array[$index_last_ext];
- if (strtolower($file_extension) != 'zip') {
- $filename = $newfilename;
- $files_course = $fs->get_directory_files($context->id, 'mod_iassign', 'activity', 0, $dir_base, false, true, 'filename');
- if ($files_course) {
- foreach ($files_course as $value) {
- if ($value->get_filename() == iassign_utils::format_filename($newfilename))
- $filename = iassign_utils::version_filename($value->get_filename());
- }
- }
- $ilm_extensions = explode(",", $iassign_ilm->extension);
- if (in_array($file_extension, $ilm_extensions))
- $file = $mform->save_stored_file('file', $context->id, 'mod_iassign', 'activity', 0, $dir_base, iassign_utils::format_filename($filename), 0, $USER->id);
- else if ($from == 'block' || $from == 'tinymce' || $from == 'atto')
- $file = $mform->save_stored_file('file', $context->id, 'mod_iassign', 'activity', 0, $dir_base, iassign_utils::format_filename($filename), 0, $USER->id);
- else
- $url .= "&error=incompatible_extension_file";
- }
- else {
- $zip_filename = $CFG->dataroot . '/temp/' . $newfilename;
- $zip = new zip_packer();
- $mform->save_file('file', $zip_filename, true) or die("Save file not found");
- $zip_files = $zip->list_files($zip_filename);
- $files = $fs->get_directory_files($context->id, 'mod_iassign', 'activity', 0, $dir_base, false, true, 'filename');
-
- $rename_files = array();
- foreach ($zip_files as $zip_file) {
- foreach ($files as $file) {
- if (iassign_utils::format_filename($zip_file->original_pathname) == $file->get_filename())
- $rename_files = array_merge($rename_files, array(iassign_utils::version_filename(iassign_utils::format_filename($zip_file->original_pathname)) => iassign_utils::format_filename($zip_file->original_pathname)));
- }
- }
- $zip->extract_to_storage($zip_filename, $context->id, 'mod_iassign', 'activity', 0, $dir_base, $USER->id);
-
- $files = $fs->get_area_files($context->id, 'mod_iassign', 'activity', 0, 'filename');
- foreach ($files as $file) {
- if ($file->get_author() == "") {
- $file->set_author($USER->firstname . ' ' . $USER->lastname);
- if ($new_name = array_search($file->get_filename(), $rename_files))
- $file->rename($dir_base, $new_name);
- else if ($file->get_filename() != '.' && $file->get_filename() != iassign_utils::format_filename($file->get_filename()))
- $file->rename($dir_base, iassign_utils::format_filename($file->get_filename()));
- }
- }
- unlink($zip_filename);
- }
- $fs->delete_area_files($contextuser->id, 'user', 'draft', $formdata->file);
- }
- redirect(new moodle_url($url));
- }
- print $OUTPUT->header();
- if ($from == 'iassign') {
- print ' <div width=100% align=right style="margin: 20px 20px 20px 20px;">' . "\n" .
- ' <input type=button value="' . get_string('close', 'iassign') . '" ' .
- ' title="' . get_string('close_alt', 'iassign') . '" onclick="javascript:window.close();" /></div>' . "\n";
- }
- else
- if ($from == 'block') {
-
- if (isset($_SERVER['HTTP_REFERER']))
- $strh=$_SERVER['HTTP_REFERER']; else $strh="<>, from=$from<br/>";
- if (isset($_SERVER['HTTP_REFERER']))
- print '<div width=100% align=right style="margin: 20px 20px 20px 20px;"><input type=button value="' . get_string('return', 'iassign') . '" onclick="javascript:window.location = \'' . $_SESSION['returnurl'] . '\';"></div>' . "\n";
- }
- else if ($from == 'tinymce' || $from == 'atto') {
- print '<div width=100% align=right style="margin: 20px 20px 20px 20px;"><input type=button value="' . get_string('close', 'iassign') . '" onclick="javascript:window.close ();"></div>' . "\n";
- }
- else if ($from == 'qtype') {
-
- print $OUTPUT->heading($title);
- print '<div width=100% align=right style="margin: 20px 20px 20px 20px;"><input type=button value="' . get_string('close', 'iassign') . '" onclick="javascript:window.close ();"></div>' . "\n";
- }
- if (!is_null($error = optional_param('error', NULL, PARAM_TEXT)))
- print $OUTPUT->notification(get_string($error, 'iassign'), 'notifyproblem');
- $mform->display();
- $ilm_manager_instance->view_files_ilm($iassign_ilm, $iassign_ilm->extension);
- print $OUTPUT->footer();
- die;
- }
|