diff --git a/inc/caldav-REPORT-calquery.php b/inc/caldav-REPORT-calquery.php index 56701524..8e8b00d6 100644 --- a/inc/caldav-REPORT-calquery.php +++ b/inc/caldav-REPORT-calquery.php @@ -148,18 +148,19 @@ function SqlFilterFragment( $filter, $components, $property = null, $parameter = // } if ( isset($start) && isset($finish) ) { $sql .= ' AND (rrule IS NOT NULL OR dtstart IS NULL'; - $sql .= ' OR (dtstart < :time_range_end AND (dtend > :time_range_start '; - $sql .= ' OR (dtend IS NULL AND dtstart < :time_range_end)))) '; + $sql .= ' OR (dtstart < :time_range_end AND (dtend > :time_range_start OR (dtend IS NULL AND dtstart > :time_range_start))))'; $params[':time_range_start'] = $start; $params[':time_range_end'] = $finish; } elseif ( isset($start) ) { $sql .= ' AND (rrule IS NOT NULL OR dtstart IS NULL'; - $sql .= ' OR (dtstart > :time_range_start)) '; + $sql .= ' OR (dtend IS NULL AND dtstart > :time_range_start)'; + $sql .= ' OR dtend > :time_range_start) '; $params[':time_range_start'] = $start; } elseif ( isset($finish) ) { - $sql .= ' AND (rrule IS NOT NULL OR dtstart IS NULL OR dtstart < :time_range_end) '; + $sql .= ' AND (rrule IS NOT NULL OR dtstart IS NULL'; + $sql .= ' OR dtstart < :time_range_end) '; $params[':time_range_end'] = $finish; } $need_range_filter = array(new RepeatRuleDateTime($start),new RepeatRuleDateTime($finish));