sabre-io / dav

sabre/dav is a CalDAV, CardDAV and WebDAV framework for PHP
http://sabre.io
BSD 3-Clause "New" or "Revised" License
1.53k stars 346 forks source link

VTODO: calendar-query REPORT does not match single occurrence inside the specified time-range #1002

Open brunt82 opened 7 years ago

brunt82 commented 7 years ago

When I report for a recurring vtodo with a time-range, the server will not match the event:

I upload the following VTODO:

BEGIN:VCALENDAR
CALSCALE:GREGORIAN
PRODID:-//Example Inc.//Example Calendar//EN
VERSION:2.0
BEGIN:VTIMEZONE
LAST-MODIFIED:20040110T032845Z
TZID:US/Eastern
BEGIN:DAYLIGHT
DTSTART:20000404T020000
RRULE:FREQ=YEARLY;BYDAY=1SU;BYMONTH=4
TZNAME:EDT
TZOFFSETFROM:-0500
TZOFFSETTO:-0400
END:DAYLIGHT
BEGIN:STANDARD
DTSTART:20001026T020000
RRULE:FREQ=YEARLY;BYDAY=-1SU;BYMONTH=10
TZNAME:EST
TZOFFSETFROM:-0400
TZOFFSETTO:-0500
END:STANDARD
END:VTIMEZONE
BEGIN:VTODO
DTSTAMP:20060313T151524Z
DUE;TZID=US/Eastern:20180102T110000
RRULE:FREQ=DAILY;COUNT=5
STATUS:NEEDS-ACTION
SUMMARY:Task 6
UID:task06@example.local
END:VTODO
END:VCALENDAR

And send the following report:

<?xml version="1.0" encoding="utf-8" ?>
<C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav">
<D:prop>
<D:getetag/>
<C:calendar-data/>
</D:prop>
<C:filter>
<C:comp-filter name="VCALENDAR">
<C:comp-filter name="VTODO">
<C:time-range start="20180105T000000Z" end="20180106T000000Z"/>
</C:comp-filter>
</C:comp-filter>
</C:filter>
</C:calendar-query>

The response it empty, but I would expect, that the VTODO is delivered by the server, because the recurring events should be matched (RRULE:FREQ=DAILY;COUNT=5).

There was already a similar behavior for VEVENTS: https://github.com/fruux/sabre-dav/issues/73

chownsb commented 6 years ago

I am seeing similar behaviour using the exact same query (although there's no time filter). I am simply trying to get a list of all VTODO items but it always returns empty. I've connected to the server with other TODO applications and they see the TODOs just fine. The intricacies of the syntax you posted leads me to believe we're probably using the same PHP class.

Did you ever solve your problem?