diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2026-02-10 17:21:42 +0100 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2026-02-10 17:21:42 +0100 |
| commit | 7dc2d3e1266810b98758faeaf3bd4dcab04330ce (patch) | |
| tree | 78326b91a20d6ab67168157218b47e00a3255062 | |
| parent | 6aa14641c923d96fecbf7394c7ddf15d06bb9cd3 (diff) | |
allow forum in institutes as well, fixes #6189
Closes #6189
Merge request studip/studip!4687
| -rw-r--r-- | db/migrations/6.1.18_fix_forum_configurations.php | 33 | ||||
| -rw-r--r-- | lib/modules/CoreForum.php | 26 |
2 files changed, 49 insertions, 10 deletions
diff --git a/db/migrations/6.1.18_fix_forum_configurations.php b/db/migrations/6.1.18_fix_forum_configurations.php new file mode 100644 index 0000000..aa921fa --- /dev/null +++ b/db/migrations/6.1.18_fix_forum_configurations.php @@ -0,0 +1,33 @@ +<?php +/** + * @see https://gitlab.studip.de/studip/studip/-/issues/6189 + */ +final class FixForumConfigurations extends Migration +{ + public function description() + { + return 'Fixes new forum configurations to be applied to ranges and not only to courses'; + } + + protected function up() + { + $query = "UPDATE `config` + SET `range` = 'range' + WHERE `field` IN ( + 'FORUM_MODERATION_PERMISSION', + 'FORUM_HIDE_CATEGORIES_NAVIGATION' + )"; + DBManager::get()->exec($query); + } + + protected function down() + { + $query = "UPDATE `config` + SET `range` = 'course' + WHERE `field` IN ( + 'FORUM_MODERATION_PERMISSION', + 'FORUM_HIDE_CATEGORIES_NAVIGATION' + )"; + DBManager::get()->exec($query); + } +} diff --git a/lib/modules/CoreForum.php b/lib/modules/CoreForum.php index 253edcf..450c864 100644 --- a/lib/modules/CoreForum.php +++ b/lib/modules/CoreForum.php @@ -25,7 +25,7 @@ class CoreForum extends CorePlugin implements StudipModuleExtended new Navigation(_('Themenübersicht'), 'dispatch.php/course/forum/topics') ); - if (!CourseConfig::get($course_id)->FORUM_HIDE_CATEGORIES_NAVIGATION) { + if (!RangeConfig::get($course_id)->getValue('FORUM_HIDE_CATEGORIES_NAVIGATION')) { $navigation->addSubNavigation( 'categories', new Navigation(_('Kategorien'), 'dispatch.php/course/forum/categories') @@ -86,16 +86,22 @@ class CoreForum extends CorePlugin implements StudipModuleExtended return null; } - public static function isAdmin($course_id): bool + public static function isAdmin($range_id): bool { - return $GLOBALS['perm']->have_perm('root') || $GLOBALS['perm']->have_studip_perm('dozent', $course_id); + return $GLOBALS['perm']->have_perm('root') + || $GLOBALS['perm']->have_studip_perm('dozent', $range_id); } - public static function isModerator($course_id): bool + public static function isModerator($range_id): bool { - return self::isAdmin($course_id) || - CourseConfig::get($course_id)->FORUM_MODERATION_PERMISSION === $GLOBALS['perm']->get_studip_perm($course_id) || - CourseConfig::get($course_id)->FORUM_MODERATION_PERMISSION === 'all'; + if (self::isAdmin($range_id)) { + return true; + } + + $moderation_permission = RangeConfig::get($range_id)->getValue('FORUM_MODERATION_PERMISSION'); + + return $moderation_permission === 'all' + || $GLOBALS['perm']->have_studip_perm($moderation_permission, $range_id); } @@ -123,9 +129,9 @@ class CoreForum extends CorePlugin implements StudipModuleExtended ]; } - public static function deleteCourseContents($course_id): void + public static function deleteCourseContents($range_id): void { - \Forum\Category::deleteBySQL("range_id = ?", [$course_id]); - \Forum\Topic::deleteBySQL("range_id = ?", [$course_id]); + \Forum\Category::deleteBySQL("range_id = ?", [$range_id]); + \Forum\Topic::deleteBySQL("range_id = ?", [$range_id]); } } |
