Page MenuHomePhabricator

Add initial support for complex recurring events
ClosedPublic

Authored by epriestley on Sep 23 2016, 6:56 PM.
Tags
None
Referenced Files
Unknown Object (File)
Thu, Jan 30, 12:51 AM
Unknown Object (File)
Mon, Jan 27, 11:41 PM
Unknown Object (File)
Wed, Jan 22, 3:47 AM
Unknown Object (File)
Tue, Jan 21, 11:46 AM
Unknown Object (File)
Tue, Jan 21, 9:22 AM
Unknown Object (File)
Fri, Jan 17, 11:02 PM
Unknown Object (File)
Sun, Jan 12, 10:23 PM
Unknown Object (File)
Fri, Jan 10, 12:44 AM
Subscribers
None

Details

Summary

Ref T10747. In .ics files, event recurrence can be defined in three ways:

  • RDATE, a list of specific dates when the event occurs.
  • EXDATE, a list of specific dates when the event does not occur. This is the opposite of RDATE.
  • RRULE, a complex description of recurrence rules, like "Every other Monday in April and March".

We currently use a simpler recurrence approach internally, but I plan to implement (nearly) full-power RRULE-like recurrence and use that as the internal recurrence engine, then just expose a simpler UI (this is similar to what other applications do).

To start with, define everything except the RRULE stuff, since that's much harder:

  • A Source is something that can generate recurring dates.
    • A List is a source with specific dates (RDATE or EXDATE).
    • A Rule is a source which implmenets RRULE behavior. This change has a skeleton, but no code.
  • A Set is a collection of sources (e.g., zero or more sources, often zero or one RDATE, zero or one EXDATE, and zero or one RRULE).

Basically, this gets all the support code in place to actually write RRULE stuff, but doesn't actually implement it yet.

Test Plan

Unit tests.

Diff Detail

Repository
rPHU libphutil
Branch
cal1
Lint
Lint Passed
Unit
Tests Passed
Build Status
Buildable 13823
Build 17868: Run Core Tests
Build 17867: arc lint + arc unit

Event Timeline

epriestley retitled this revision from to Add initial support for complex recurring events.
epriestley updated this object.
epriestley edited the test plan for this revision. (Show Details)
epriestley added a reviewer: chad.
chad edited edge metadata.
chad added inline comments.
src/parser/calendar/data/PhutilCalendarRecurrenceRule.php
10

^ - ^

This revision is now accepted and ready to land.Sep 23 2016, 7:25 PM

Yeah -- I'm not going to let users create secondly events, but we'll parse them and then say "no way buddy".

This revision was automatically updated to reflect the committed changes.