From bed8eba8273ed78569e9b3d1f8b8253cbfafeff3 Mon Sep 17 00:00:00 2001 From: noackorama <noackorama@gmail.com> Date: Fri, 17 Sep 2021 17:24:52 +0200 Subject: [PATCH] hide invisible courses in coursesets fix #84 --- app/controllers/course/enrolment.php | 9 ++++++++- lib/classes/admission/CourseSet.class.php | 14 ++++++++++++-- templates/admission/courseset/info.php | 3 ++- 3 files changed, 22 insertions(+), 4 deletions(-) diff --git a/app/controllers/course/enrolment.php b/app/controllers/course/enrolment.php index bfc94b33986..a2d3c9cf26b 100644 --- a/app/controllers/course/enrolment.php +++ b/app/controllers/course/enrolment.php @@ -124,7 +124,6 @@ class Course_EnrolmentController extends AuthenticatedController } else { $msg = _("Die Plätze in dieser Veranstaltung werden automatisch verteilt."); if ($limit = $courseset->getAdmissionRule('LimitedAdmission')) { - $msg_details[] = sprintf(_("Diese Veranstaltung gehört zu einem Anmeldeset mit %s Veranstaltungen. Sie können maximal %s davon belegen. Bei der Verteilung werden die von Ihnen gewünschten Prioritäten berücksichtigt."), count($courseset->getCourses()), $limit->getMaxNumber()); $this->user_max_limit = $limit->getMaxNumberForUser($user_id); if (Config::get()->IMPORTANT_SEMNUMBER) { $order = "ORDER BY VeranstaltungsNummer, Name"; @@ -132,6 +131,14 @@ class Course_EnrolmentController extends AuthenticatedController $order = "ORDER BY Name"; } $this->priocourses = Course::findMany($courseset->getCourses(), $order); + if (!$GLOBALS['perm']->have_perm(Config::get()->SEM_VISIBILITY_PERM)) { + $this->priocourses = array_filter($this->priocourses, + function ($c) { + return $c->visible; + } + ); + } + $msg_details[] = sprintf(_("Diese Veranstaltung gehört zu einem Anmeldeset mit %s Veranstaltungen. Sie können maximal %s davon belegen. Bei der Verteilung werden die von Ihnen gewünschten Prioritäten berücksichtigt."), count($this->priocourses), $limit->getMaxNumber()); $this->user_prio = AdmissionPriority::getPrioritiesByUser($courseset->getId(), $user_id); $this->max_limit = $limit->getMaxNumber(); $this->prio_stats = AdmissionPriority::getPrioritiesStats($courseset->getId()); diff --git a/lib/classes/admission/CourseSet.class.php b/lib/classes/admission/CourseSet.class.php index 5bfb440abc4..50f983fbc05 100644 --- a/lib/classes/admission/CourseSet.class.php +++ b/lib/classes/admission/CourseSet.class.php @@ -1005,11 +1005,21 @@ class CourseSet } if (!$short || $this->hasAdmissionRule('LimitedAdmission')) { $courses = Course::findAndMapMany(function($c) { - return ['id' => $c->id, - 'name' => $c->getFullname('number-name-semester')]; + return [ + 'id' => $c->id, + 'name' => $c->getFullname('number-name-semester'), + 'visible' => $c->visible + ]; }, array_keys($this->courses), 'ORDER BY start_time,VeranstaltungsNummer,Name'); + if (!$GLOBALS['perm']->have_perm(Config::get()->SEM_VISIBILITY_PERM)) { + $courses = array_filter($courses, + function ($c) { + return $c['visible']; + } + ); + } $tpl->set_attribute('is_limited', $this->hasAdmissionRule('LimitedAdmission')); $tpl->set_attribute('courses', $courses); } diff --git a/templates/admission/courseset/info.php b/templates/admission/courseset/info.php index 265dbeeebec..37d9999df0f 100644 --- a/templates/admission/courseset/info.php +++ b/templates/admission/courseset/info.php @@ -25,9 +25,10 @@ <?php foreach ($courses as $course) { ?> <li> <? if ($is_limited) : ?> - <a href="<?= URLHelper::getLink('dispatch.php/course/details/', ['cid' => null, 'sem_id' => $course['id']])?>"><?= htmlReady($course['name']) ?></a> + <a href="<?= URLHelper::getLink('dispatch.php/course/details/', ['cid' => null, 'sem_id' => $course['id']])?>"><?= htmlReady($course['name']) . (!$course['visible'] ? ' (' . _("versteckt") . ')' : '') ?></a> <? else : ?> <?= htmlReady($course['name']) ?> + <?= (!$course['visible'] ? ' (' . _("versteckt") . ')' : '') ?> <? endif ?> </li> <?php } ?> -- GitLab