Split EXDATE/RDATE/EXRULE out of “Raw RRULE string” into separate VEVENT properties

Created on 11 September 2025, 26 days ago
Updated 15 September 2025, 21 days ago

Problem/Motivation

Follow-up to Add “Raw RRULE” field and clarify COUNT field Active (“Raw RRULE string”). In that change, we allow reading an RRULE value mostly verbatim from storage. Some sources include EXDATE, RDATE, and/or EXRULE inline with the RRULE text. Per RFC 5545, these are separate iCalendar properties and must not be embedded within the RRULE property. As a result, VEVENTs produced today can contain a single RRULE string with embedded exclusions/inclusions that many consumers will ignore, causing exceptions and additional dates to be lost.

Steps to reproduce

  1. Create a Date iCal feed that uses the “Raw RRULE string” source (as added in #3540328 Add “Raw RRULE” field and clarify COUNT field Active ).
  2. Populate the raw field with text that includes embedded exception/inclusion parts, for example:

    RRULE:FREQ=WEEKLY;BYDAY=MO,WE
    EXDATE=20251013T090000Z
    RDATE=20251027T090000Z
  3. Export the ICS and import it into a calendar client (Apple/Google/Outlook) or validate it.
  4. Observe that exclusions/inclusions may be ignored if they were left embedded within RRULE instead of emitted as their own properties.

Proposed resolution

  • Parse and split: When a “Raw RRULE string” is provided, parse the text for top-level property names within the VEVENT scope (RRULE, EXDATE, RDATE, optionally EXRULE).

D7 resolved it this way (thanks @ramil g for finding the lines)
https://git.drupalcode.org/project/date_ical/-/blob/7.x-3.x/date_ical.mo...
https://git.drupalcode.org/project/date_ical/-/blob/7.x-3.x/date_ical.ut...

📌 Task
Status

Active

Version

4.0

Component

iCal Export

Created by

🇨🇦Canada joelpittet Vancouver

Live updates comments and jobs are added and updated live.
Sign in to follow issues

Comments & Activities

Not all content is available!

It's likely this issue predates Contrib.social: some issue and comment data are missing.

No activities found.

Production build 0.71.5 2024