From 01c8ab15de7dbccba418c5a551177507a529e8a7 Mon Sep 17 00:00:00 2001 From: Moritz Strohm Date: Thu, 6 Mar 2025 10:43:36 +0000 Subject: "My current dates" widget: Do not show course dates that are hidden in the schedule, fixes #4866 Merge request studip/studip!4019 --- app/controllers/calendar/contentbox.php | 33 +++++++++++++++++++++++++++------ 1 file changed, 27 insertions(+), 6 deletions(-) diff --git a/app/controllers/calendar/contentbox.php b/app/controllers/calendar/contentbox.php index 0cc22f2..1ef5781 100644 --- a/app/controllers/calendar/contentbox.php +++ b/app/controllers/calendar/contentbox.php @@ -120,15 +120,36 @@ class Calendar_ContentboxController extends StudipController WHERE `user_id` = :user_id", ['user_id' => $id] ); + $invisible_course_date_stmt = DBManager::get()->prepare( + "SELECT 1 + FROM `schedule_seminare` + WHERE `user_id` = :user_id + AND `seminar_id` = :course_id + AND `metadate_id` = :metadate_id + AND `visible` = 0" + ); foreach ($relevant_courses as $course) { $course_dates = $course->getDatesWithExdates()->findBy('end_time', [$this->start, $this->start + $this->timespan], '><'); foreach ($course_dates as $course_date) { - $this->titles[$course_date->id] = sprintf( - '%1$s: %2$s', - $course_date->course->name, - $course_date->getFullname() - ); - $this->termine[] = $course_date; + // Check if the date belongs to a regular course date and if that is + // made invisible via the schedule: + $show_date = true; + if (!empty($course_date->cycle)) { + $invisible_course_date_stmt->execute([ + 'user_id' => $id, + 'course_id' => $course_date->range_id, + 'metadate_id' => $course_date->metadate_id, + ]); + $show_date = empty($invisible_course_date_stmt->fetchColumn()); + } + if ($show_date) { + $this->titles[$course_date->id] = sprintf( + '%1$s: %2$s', + $course_date->course->name, + $course_date->getFullName() + ); + $this->termine[] = $course_date; + } } } } -- cgit v1.0