diff options
| author | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
|---|---|---|
| committer | Philipp Schüttlöffel <schuettloeffel@zqs.uni-hannover.de> | 2024-09-24 10:53:31 +0200 |
| commit | 4459dd7917f4d1c34f40bb68f0e991e9c3d53e4c (patch) | |
| tree | 5c07151ae61276d334e88f6309c30d439a85c12e /lib/models/calendar/CalendarCourseExDate.php | |
| parent | da0022e5c1abbf9825ae76debaabdff7e8623bb4 (diff) | |
| parent | 97a188592c679890a25c37ab78463add76a52ff7 (diff) | |
Merge branch 'main' into issue-3911issue-3911
Diffstat (limited to 'lib/models/calendar/CalendarCourseExDate.php')
| -rw-r--r-- | lib/models/calendar/CalendarCourseExDate.php | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/lib/models/calendar/CalendarCourseExDate.php b/lib/models/calendar/CalendarCourseExDate.php new file mode 100644 index 0000000..eb23aeb --- /dev/null +++ b/lib/models/calendar/CalendarCourseExDate.php @@ -0,0 +1,35 @@ +<?php + +/** + * CalendarCourseExDate is a specialisation of CourseExDate for + * cancelled course dates that are displayed in the personal calendar. + */ +class CalendarCourseExDate extends CourseExDate +{ + public static function getEvents(DateTime $begin, DateTime $end, string $range_id): array + { + return parent::findBySQL( + "JOIN `seminar_user` + ON `seminar_user`.`seminar_id` = `ex_termine`.`range_id` + WHERE `seminar_user`.`user_id` = :user_id + AND `seminar_user`.`bind_calendar` = '1' + AND `ex_termine`.`date` BETWEEN :begin AND :end + AND `ex_termine`.`content` <> '' + AND ( + IFNULL(`ex_termine`.`metadate_id`, '') = '' + OR `ex_termine`.`metadate_id` NOT IN ( + SELECT `metadate_id` + FROM `schedule_seminare` + WHERE `user_id` = :user_id + AND `visible` = 0 + ) + ) + ORDER BY date", + [ + 'begin' => $begin->getTimestamp(), + 'end' => $end->getTimestamp(), + 'user_id' => $range_id + ] + ); + } +} |
