diff options
| author | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2024-12-04 08:48:02 +0000 |
|---|---|---|
| committer | Jan-Hendrik Willms <tleilax+studip@gmail.com> | 2024-12-04 08:48:02 +0000 |
| commit | 7bbe0174bcd1903897a640a7f2cbaa6774e5f3fe (patch) | |
| tree | 570aec84b6cac748cb8ca273d86a4a2e55958d84 /lib | |
| parent | 13a22cd46b32015d5cf26ae87f0e7c61fdfba3b3 (diff) | |
fixes #613
Closes #613
Merge request studip/studip!1801
Diffstat (limited to 'lib')
| -rw-r--r-- | lib/models/ToolActivation.php | 25 | ||||
| -rw-r--r-- | lib/modules/CoreParticipants.php | 27 |
2 files changed, 26 insertions, 26 deletions
diff --git a/lib/models/ToolActivation.php b/lib/models/ToolActivation.php index 4209a20..7bb471c 100644 --- a/lib/models/ToolActivation.php +++ b/lib/models/ToolActivation.php @@ -26,6 +26,9 @@ */ class ToolActivation extends SimpleORMap { + public const VISIBILITY_PERMISSION_STUDENTS = 'students'; + public const VISIBILITY_PERMISSION_TEACHERS = 'teachers'; + protected static function configure($config = []) { $config['db_table'] = 'tools_activated'; @@ -90,12 +93,28 @@ class ToolActivation extends SimpleORMap } } - public function getVisibilityPermission() + public function setVisibilityPermission(string $permission) { - if ($this->metadata['visibility'] === 'tutor') { - return 'tutor'; + if (!in_array($permission, [self::VISIBILITY_PERMISSION_STUDENTS, self::VISIBILITY_PERMISSION_TEACHERS])) { + throw new InvalidArgumentException("Invalid permission setting {$permission}"); + } + + if ($permission === self::VISIBILITY_PERMISSION_STUDENTS) { + unset($this->metadata['visibility']); } else { + $this->metadata['visibility'] = 'tutors'; + } + } + + public function getVisibilityPermission(): string + { + if ( + empty($this->metadata['visibility']) + || $this->metadata['visibility'] !== 'tutor' + ) { return 'nobody'; } + + return 'tutor'; } } diff --git a/lib/modules/CoreParticipants.php b/lib/modules/CoreParticipants.php index b265598..1d15272 100644 --- a/lib/modules/CoreParticipants.php +++ b/lib/modules/CoreParticipants.php @@ -34,21 +34,6 @@ class CoreParticipants extends CorePlugin implements StudipModule $course = Course::find($course_id); - // Is the participants page hidden for students? - if (!$GLOBALS['perm']->have_studip_perm('tutor', $course_id, $user_id) && $course->config->COURSE_MEMBERS_HIDE) { - $tab_navigation = $this->getTabNavigation($course_id); - if ($tab_navigation && count($tab_navigation['members']->getSubNavigation()) > 0) { - $sub_nav = $tab_navigation['members']->getSubNavigation(); - $first_nav = reset($sub_nav); - - $navigation = new Navigation($first_nav->getTitle(), $first_nav->getURL()); - $navigation->setImage(Icon::create('persons')); - return $navigation; - - } - return null; - } - // Determine url to redirect to if (!$course->getSemClass()->isGroup()) { $url = 'dispatch.php/course/members/index'; @@ -138,14 +123,10 @@ class CoreParticipants extends CorePlugin implements StudipModule // Only courses without children have a regular member list and statusgroups. if (!$course->getSemClass()->isGroup()) { - if ($GLOBALS['perm']->have_studip_perm('tutor', $course_id) || !$course->config->COURSE_MEMBERS_HIDE) { - $navigation->addSubNavigation('view', new Navigation(_('Teilnehmende'), 'dispatch.php/course/members')); - $navigation->addSubNavigation('statusgroups', new Navigation(_('Gruppen'), 'dispatch.php/course/statusgroups')); - } - } else { - if ($GLOBALS['perm']->have_studip_perm('tutor', $course_id)) { - $navigation->addSubNavigation('children', new Navigation(_('Teilnehmende in Unterveranstaltungen'), 'dispatch.php/course/grouping/members')); - } + $navigation->addSubNavigation('view', new Navigation(_('Teilnehmende'), 'dispatch.php/course/members')); + $navigation->addSubNavigation('statusgroups', new Navigation(_('Gruppen'), 'dispatch.php/course/statusgroups')); + } elseif ($GLOBALS['perm']->have_studip_perm('tutor', $course_id)) { + $navigation->addSubNavigation('children', new Navigation(_('Teilnehmende in Unterveranstaltungen'), 'dispatch.php/course/grouping/members')); } if ($course->aux_lock_rule) { |
