Book Review: How to Implement Design Patterns in PHP
Getting Set up with Ogre 3D on Ubuntu
Using Multi-Byte Character Sets in PHP (Unicode, UTF-8, etc)
Changing Mailman Python Scripts for Virtual Host Support
Using PHP pspell Spell Check Functions with a Custom Dictionary
A Simple ISAPI Filter for Authentication on IIS

The iCalendar Format for Sharing Scheduling with PHP

Friday, 6 March 15, 10:32 am
iCalendar is a format for sending out meeting requests that are handled by email clients like Outlook and Thunderbird.

- iCalendar data has the MIME content type text/calendar
- The filename extension of ics is to be used for files containing calendaring and scheduling information
- By default, iCalendar uses the UTF-8 character set
- Each line is terminated by CR+LF
- Lines should be limited to 75 octets (not characters) long
- Where a data item is too long to fit on a single line it can be continued on following lines by starting the continuation lines with a space character (in hex: 20) or a tab character (in hex: 09)
- Actual line feeds in data items are encoded as a backslash followed by the letter n or N (the bytes 5C 6E or 5C 4E in UTF-8)
- "[R]ecurring and repeating meetings still have a bit of mystery and ambiguity associated with them. Resulting in no true interoperability between the current calendaring and scheduling vendors."

- The first line must be BEGIN:VCALENDAR, and the last line must be END:VCALENDAR; the contents between these lines is called the "icalbody".
- The second line VERSION:2.0 indicates that the data is in iCalendar format. VERSION:1.0 was used to specify that data is in the old vCalendar format.
- The body of the iCalendar object (the icalbody) is made up of a list of calendar properties and one or more calendar components. The calendar properties apply to the entire calendar. The calendar components are several calendar properties which create a calendar schematic (design)
- VEVENT describes a calendar event with a scheduled amount of time: DTSTART = starting time, DTEND = ending time. If the calendar event is recurring, DTSTART is the start of the first event
- If you need to send in a cancellation for an event, the UID should be same as the original event, and the component properties should be set to cancel
- For sending an UPDATE for an event the UID should match the original UID, and the SEQUENCE component property is required specifying which update this is (starting at 1)
- In Microsoft Outlook, the SUMMARY corresponds to the "Subject" entry in the "Appointment" form, and DESCRIPTION to the descriptive text below it. In addition, Outlook 2002 and Outlook 2003 demand a UID and a DTSTAMP.

Please enter your comment in the box below. Comments will be moderated before going live. Thanks for your feedback!

Cancel Post

/xkcd/ Kedging Cannon