Closed Bug 381415 Opened 17 years ago Closed 17 years ago

RDATE/EXDATE list is not considered

Categories

(Calendar :: Internal Components, defect)

defect
Not set
normal

Tracking

(Not tracked)

VERIFIED FIXED

People

(Reporter: dbo, Assigned: dbo)

References

Details

Attachments

(2 files)

RDATE/EXDATE list is not considered, e.g. the following ics:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//Mozilla.org/NONSGML Mozilla Calendar V1.1//EN
BEGIN:VEVENT
CREATED:20070520T183929Z
LAST-MODIFIED:20070520T184015Z
DTSTAMP:20070520T183929Z
UID:ed5836b6-43c0-4548-a5e3-65b2bcac0f03
SUMMARY:RDATE sample
RDATE:20070522T100000Z
RDATE:20070523T100000Z
RDATE:20070524T100000Z,20070525T100000Z
DTSTART:20070521T100000Z
DTEND:20070521T110000Z
END:VEVENT
BEGIN:VEVENT
CREATED:20070520T183933Z
LAST-MODIFIED:20070520T184057Z
DTSTAMP:20070520T183933Z
UID:b9cf452c-3b64-4059-ad06-648836e9d5ed
SUMMARY:EXDATE sample
RRULE:FREQ=DAILY;INTERVAL=1
EXDATE:20070522T120000Z
EXDATE:20070523T120000Z
EXDATE:20070524T120000Z,20070525T120000Z
DTSTART:20070521T120000Z
DTEND:20070521T130000Z
END:VEVENT
END:VCALENDAR

Bugs:
=RDATE sample=
- Any RDATE entry removes the original DTSTART instance.
- Comma separated RDATE list isnt' considered, only single ones.
=EXDATE sample=
- Comma separated EXDATE list isn't considered, only single ones.

I am asking myself why we shouldn't consolidate calIRecurrenceDate/calIRecurrenceDateSet. The latter can model both single and multiple RDATEs and EXDATEs. Any objections?
I found the same problem with the EXDATE field in 0.5rc1.  Comma separated EXDATE values work OK in 0.3.1 but not in 0.5rc1.  Here is a sample ics that shows the problem:

BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//ZContent.net//Z Calendar 1.0//EN
CALSCALE:GREGORIAN
METHOD:PUBLISH
BEGIN:VEVENT
SUMMARY:Church Dinner
UID:2007-05-25-02-15-42-71-1@www.heritagebaptistonline.com
SEQUENCE:0
RRULE:FREQ=WEEKLY;INTERVAL=1;BYDAY=WE;UNTIL=20071231T191500
EXDATE:20070704T191500,20070613T191500,20070620T191500,20070627T191500,200
 70711T191500,20070718T191500,20070725T191500,20070801T191500,20070808T19150
 0,20070815T191500,20070822T191500,20070829T191500
DTSTART:20070103T191500
DURATION:PT45M
CATEGORIES:Church
DESCRIPTION:
END:VEVENT
END:VCALENDAR
Attached patch fixing icalparser — — Splinter Review
- taking bug
- fixing icalparser to consider comma separated list for RDATE, EXDATE, splitting them up into multiple RDATEs/EXDATEs
Assignee: nobody → daniel.boelzle
Status: NEW → ASSIGNED
Attachment #268612 - Flags: review?(mvl)
- adds DTSTART to recurring set of dates
- gets rid of aIncludeExceptions parameter (only used with "true")
Attachment #268613 - Flags: review?(mvl)
IMO with the above fixes, we could get rid of calRecurrenceDateSet.*, because parsing will flatten a date list into single RDATEs/EXDATEs.
Daniel, is that bug serious enough to take it for 0.5?
Flags: blocking-calendar0.5?
No, I don't think so; IMO RDATE/EXDATE lists are quite uncommon. But we should fix it for 0.7, of course...
Flags: blocking-calendar0.5? → blocking-calendar0.5-
Flags: blocking-calendar0.7+
Comment on attachment 268612 [details] [diff] [review]
fixing icalparser

r=mvl, but I suggest yuou move the comment into the comment block that's already about the switch, to make it more clear that all the cases are handled the same.
Attachment #268612 - Flags: review?(mvl) → review+
Comment on attachment 268613 [details] [diff] [review]
adding DTSTART for recurring date set

>+        // DTSTART/DUE is always part of the resulting set:
>+        // the base item cannot be replaced by an exception;
>+        // an exception can only be defined on an item resulting from an RDATE/RRULE;
>+        // DTSTART always equals RECURRENCE-ID
>+        dates.push(startDate);

Either I don't understand this comment, or I don't agree with it. rfc2445 says:
   The "EXDATE" property can be used to exclude the value specified in
   "DTSTART". However, in such cases the original "DTSTART" date MUST
   still be maintained by the calendaring and scheduling system because
   the original "DTSTART" value has inherent usage dependencies by other
   properties such as the "RECURRENCE-ID".
I interpret that as saying that you can apply a exdate to the dtstart. And I interpret the comment (and the code) as saying that you cannot do that. Am I missing something?
Yes, I read it the same way. But my comment is related to the (positive) expansion set, meaning this set is always the master item's DTSTART + all positive recurrence items' DTSTARTs. In a second step, the negative recurrence items (EXDATE) filter out dates from that set. "Resulting set" ist misleading here, IMO better the "positive expanded set".
Comment on attachment 268613 [details] [diff] [review]
adding DTSTART for recurring date set

ok, I see now. Core to change the comment into what you suggested?

r=mvl
Attachment #268613 - Flags: review?(mvl) → review+
Checked in on HEAD and MOZILLA_1_8_BRANCH.
Status: ASSIGNED → RESOLVED
Closed: 17 years ago
Resolution: --- → FIXED
Target Milestone: --- → 0.7
follow-up issue filed for this in bug 386502.
Depends on: 386502
Depends on: 386563
Depends on: 386559
Verified in lightning (2007080603) and Sunbird (20070806) -> task is fixed
Status: RESOLVED → VERIFIED
Flags: blocking-calendar0.7+
Flags: blocking-calendar0.5-
You need to log in before you can comment on or make changes to this bug.

Attachment

General

Created:
Updated:
Size: