From cae4796dd124b0b855773858f58c41609b78c09a Mon Sep 17 00:00:00 2001 From: Rasmus Fuhse <fuhse@data-quest.de> Date: Wed, 16 Jun 2021 17:27:03 +0200 Subject: [PATCH] implement copying of files --- controllers/copy.php | 22 ++++++++++++++++++++-- plugin.manifest | 4 ++-- views/copy/info.php | 8 ++++++++ 3 files changed, 30 insertions(+), 4 deletions(-) diff --git a/controllers/copy.php b/controllers/copy.php index 77c23e7..8ae7043 100755 --- a/controllers/copy.php +++ b/controllers/copy.php @@ -41,7 +41,7 @@ class CopyController extends PluginController "semester_id", "dozent_id", "lock_copied_courses", "invisible_copied_courses", "cycles", "resource_assignments", "week_offset", "end_offset", "copy_tutors", "with_children", - "contents_scm" + "contents_scm", "contents_documents" ]; foreach ($params as $param) { $config_name = "COURSECOPY_SETTINGS_".strtoupper($param); @@ -78,7 +78,7 @@ class CopyController extends PluginController foreach ($course_ids as $course_id) { $oldcourse = Course::find($course_id); - if ($oldcourse) { + if ($oldcourse && Seminar_Perm::get()->have_studip_perm('dozent', $course_id)) { $newcourse = new Course(); $newcourse->setData($oldcourse->toArray()); if ($newcourse['parent_course']) { @@ -268,6 +268,24 @@ class CopyController extends PluginController $new_scm->store(); } } + if (Request::get("contents_documents")) { + $oldtopfolder = Folder::findTopFolder($oldcourse->getId()); + $newtopfolder = Folder::findTopFolder($newcourse->getId()); + foreach ($oldtopfolder->file_refs as $fileref) { + FileManager::copyFile( + $fileref->getFileType(), + $newtopfolder->getTypedFolder(), + User::findCurrent() + ); + } + foreach ($oldtopfolder->subfolders as $subfolder) { + FileManager::copyFolder( + $subfolder->getTypedFolder(), + $newtopfolder->getTypedFolder(), + User::findCurrent() + ); + } + } } } PageLayout::postSuccess(_("Die Veranstaltungen wurden erfolgreich kopiert.")); diff --git a/plugin.manifest b/plugin.manifest index ccb1fda..ed77a43 100755 --- a/plugin.manifest +++ b/plugin.manifest @@ -1,6 +1,6 @@ pluginname=CourseCopy pluginclassname=CourseCopy -version=1.7 +version=1.8.2 origin=data-quest -studipMinVersion=4.0 +studipMinVersion=4.6 studipMaxVersion=5.0.99 diff --git a/views/copy/info.php b/views/copy/info.php index 492c82d..5d4e0f4 100755 --- a/views/copy/info.php +++ b/views/copy/info.php @@ -87,12 +87,20 @@ <fieldset> <legend><?= _("Inhalte") ?></legend> + <label> + <input type="checkbox" + name="contents_documents" + value="1"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_CONTENTS_DOCUMENTS ? " checked" : "" ?>> + <?= _("Dateien mit kopieren") ?> + </label> + <label> <input type="checkbox" name="contents_scm" value="1"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_CONTENTS_SCM ? " checked" : "" ?>> <?= _("Freie Inhaltsseiten mit kopieren") ?> </label> + </fieldset> <div data-dialog-button> -- GitLab