aboutsummaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorJan-Hendrik Willms <tleilax+studip@gmail.com>2024-12-04 08:48:02 +0000
committerJan-Hendrik Willms <tleilax+studip@gmail.com>2024-12-04 08:48:02 +0000
commit7bbe0174bcd1903897a640a7f2cbaa6774e5f3fe (patch)
tree570aec84b6cac748cb8ca273d86a4a2e55958d84 /lib
parent13a22cd46b32015d5cf26ae87f0e7c61fdfba3b3 (diff)
fixes #613
Closes #613 Merge request studip/studip!1801
Diffstat (limited to 'lib')
-rw-r--r--lib/models/ToolActivation.php25
-rw-r--r--lib/modules/CoreParticipants.php27
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) {