diff options
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 + ] + ); + } +} |
