From a78ac6dfab417159325f7d1df54de3a6f20a7d07 Mon Sep 17 00:00:00 2001 From: Eric Lippmann Date: Tue, 13 Dec 2016 11:01:19 +0100 Subject: [PATCH] Hide announcements when they have expired refs #11198 --- .../AnnouncementIniRepository.php | 20 +++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/library/Icinga/Web/Announcement/AnnouncementIniRepository.php b/library/Icinga/Web/Announcement/AnnouncementIniRepository.php index cda3ee845..c8ab5c8e8 100644 --- a/library/Icinga/Web/Announcement/AnnouncementIniRepository.php +++ b/library/Icinga/Web/Announcement/AnnouncementIniRepository.php @@ -152,11 +152,19 @@ class AnnouncementIniRepository extends IniRepository { $now = new DateTime(); $query = $this - ->select(array('start')) - ->setFilter(Filter::expression('start', '>', $now)) - ->order('start') - ->limit(1); - $nextActive = $query->fetchRow(); - return $nextActive !== false ? $nextActive->start->getTimestamp() : null; + ->select(array('start', 'end')) + ->setFilter(Filter::matchAny(array( + Filter::expression('start', '>', $now), Filter::expression('end', '>', $now) + ))); + $refresh = null; + foreach ($query as $row) { + $min = min($row->start->getTimestamp(), $row->end->getTimestamp()); + if ($refresh === null) { + $refresh = $min; + } else { + $refresh = min($refresh, $min); + } + } + return $refresh; } }