All-day EXDATEs are not applied to recurring date/time events
Nobody has claimed this yet.
- Dominant language
- PHP
- Stars
- 36.9k
- Forks
- 5.2k
- Avg merge
- 2d 3h
- Merged PRs (30d)
- 713
Description
Some calendar clients generate recurring events with date and time, plus all-day EXDATEs:
BEGIN:VEVENT
UID:527f3d37-ed76-4c6a-8aae-bf6d71a4ad09
DTSTART;TZID=Europe/Vienna:20240317T100000 ← DATE-TIME value
DTEND;TZID=Europe/Vienna:20240317T150000
STATUS:CONFIRMED
SUMMARY:Test Event
RRULE:FREQ=WEEKLY;BYDAY=SU;UNTIL=20240526T080000Z
EXDATE;VALUE=DATE:20240331 ← DATE value
EXDATE;VALUE=DATE:20240421
EXDATE;VALUE=DATE:20240505
EXDATE;VALUE=DATE:20240519
EXDATE;VALUE=DATE:20240324
END:VEVENT
END:VCALENDAR
As I understand it, this is not a RFC 5545-conforming way to specify EXDATEs for the given event at 10:00. However it's clear that the recurring event should not occur on those dates.
Currently, Nextcloud expands to the given EXDATEs, too. It would be more compatible to omit the recurring events on the dates given by the EXDATEs.
DAVx5 handles this by rewriting all RDATE/EXDATE entries to the value type of DTSTART:
- If DTSTART is a DATE and EXDATE a DATE-TIME, just drop the EXDATE time and make it all-day.
- If DTSTART is a DATE-TIME and EXDATE is a DATE, take the time (+ time zone) of DTSTART and the date of EXDATE to generate the new EXDATE.
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
The issue provides no file, test, or entry point. Start by locating the calendar recurrence expansion and EXDATE handling, then compare behavior for DATE-TIME DTSTART values with DATE EXDATE values against the supplied event; done means those listed dates are omitted without changing conforming cases.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- php
- Domain
- backend
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Stale
- Clarity
- Mostly clear
- Newbie friendliness
- 35/100