From 3f13e0c2e70dc88a937f23bc34631b2a31f51a2a Mon Sep 17 00:00:00 2001 From: noackorama <noackorama@gmail.com> Date: Wed, 5 May 2021 12:56:21 +0200 Subject: [PATCH] check dozent permission when used with DedicatedAdmin --- controllers/copy.php | 30 ++++++++++++++++++------------ plugin.manifest | 2 +- views/action/checkbox.php | 4 +++- views/copy/info.php | 27 ++++++++++++++------------- 4 files changed, 36 insertions(+), 27 deletions(-) diff --git a/controllers/copy.php b/controllers/copy.php index 148dcb0..77c23e7 100755 --- a/controllers/copy.php +++ b/controllers/copy.php @@ -4,22 +4,28 @@ class CopyController extends PluginController { public function info_action() { - PageLayout::setTitle(_("Wie soll kopiert werden?")); - $this->dozentensearch = new SQLSearch( - "SELECT DISTINCT auth_user_md5.user_id, CONCAT(auth_user_md5.Vorname, \" \", auth_user_md5.Nachname), auth_user_md5.perms, auth_user_md5.username " . - "FROM auth_user_md5 LEFT JOIN user_info ON (user_info.user_id = auth_user_md5.user_id) " . - "WHERE (CONCAT(auth_user_md5.Vorname, \" \", auth_user_md5.Nachname) LIKE :input " . + if (Request::getArray("c")) { + PageLayout::setTitle(_("Wie soll kopiert werden?")); + $this->dozentensearch = new SQLSearch( + "SELECT DISTINCT auth_user_md5.user_id, CONCAT(auth_user_md5.Vorname, \" \", auth_user_md5.Nachname), auth_user_md5.perms, auth_user_md5.username " . + "FROM auth_user_md5 LEFT JOIN user_info ON (user_info.user_id = auth_user_md5.user_id) " . + "WHERE (CONCAT(auth_user_md5.Vorname, \" \", auth_user_md5.Nachname) LIKE :input " . "OR CONCAT(auth_user_md5.Nachname, \" \", auth_user_md5.Vorname) LIKE :input " . "OR CONCAT(auth_user_md5.Nachname, \", \", auth_user_md5.Vorname) LIKE :input " . "OR auth_user_md5.username LIKE :input) " . "AND " . get_vis_query() . " " . "AND auth_user_md5.perms = 'dozent' " . - "ORDER BY Vorname, Nachname", _("Lehrendennamen eingeben"), "user_id"); - $this->semesters = array_reverse(Semester::getAll()); - $this->semester = UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_SEMESTER_ID - ? Semester::find(UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_SEMESTER_ID) - : $this->semesters[0]; - $this->have_coursegroups = true; + "ORDER BY Vorname, Nachname", _("Lehrendennamen eingeben"), "user_id"); + $this->semesters = array_reverse(Semester::getAll()); + $this->semester = UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_SEMESTER_ID + ? Semester::find(UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_SEMESTER_ID) + : $this->semesters[0]; + if (Seminar_Perm::get()->have_perm('admin')) { + $this->have_coursegroups = true; + } + } else { + throw new Trails_Exception(400); + } } public function semester_start_und_ende_action($semester_id) @@ -30,7 +36,7 @@ class CopyController extends PluginController public function process_action() { - if (Request::isPost()) { + if (Request::isPost() && count(Request::getArray("c"))) { $params = [ "semester_id", "dozent_id", "lock_copied_courses", "invisible_copied_courses", "cycles", "resource_assignments", diff --git a/plugin.manifest b/plugin.manifest index 9898ce7..9c73cda 100755 --- a/plugin.manifest +++ b/plugin.manifest @@ -1,6 +1,6 @@ pluginname=CourseCopy pluginclassname=CourseCopy -version=1.6 +version=1.7 origin=data-quest studipMinVersion=4.0 studipMaxVersion=4.99.99 diff --git a/views/action/checkbox.php b/views/action/checkbox.php index b04014d..a65a134 100755 --- a/views/action/checkbox.php +++ b/views/action/checkbox.php @@ -1 +1,3 @@ -<input type="checkbox" name="c[]" value="<?= htmlReady($course_id) ?>"> \ No newline at end of file +<? if (Seminar_Perm::get()->have_studip_perm('dozent', $course_id)) : ?> +<input type="checkbox" name="c[]" value="<?= htmlReady($course_id) ?>"> +<? endif ?> \ No newline at end of file diff --git a/views/copy/info.php b/views/copy/info.php index df6a66f..492c82d 100755 --- a/views/copy/info.php +++ b/views/copy/info.php @@ -20,21 +20,22 @@ <? endforeach ?> </select> </label> - - <label> - <?= _("Lehrende ersetzen durch ...") ?> - <? - $qs = QuickSearch::get("dozent_id", $dozentensearch); - if (UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_DOZENT_ID) { - $qs->defaultValue( - UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_DOZENT_ID, - get_fullname(UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_DOZENT_ID) - ); - } - echo $qs->render() - ?> + <? if (Seminar_Perm::get()->have_perm('admin')) : ?> + <label> + <?= _("Lehrende ersetzen durch ...") ?> + <? + $qs = QuickSearch::get("dozent_id", $dozentensearch); + if (UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_DOZENT_ID) { + $qs->defaultValue( + UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_DOZENT_ID, + get_fullname(UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_DOZENT_ID) + ); + } + echo $qs->render() + ?> <label> + <? endif ?> <input type="checkbox" name="copy_tutors" value="1"<?= UserConfig::get($GLOBALS['user']->id)->COURSECOPY_SETTINGS_COPY_TUTORS ? " checked" : "" ?>> <?= _('Tutor/-innen mit übernehmen') ?> </label> -- GitLab