Skip to end of metadata
Go to start of metadata

<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[

<ac:macro ac:name="unmigrated-inline-wiki-markup"><ac:plain-text-body><![CDATA[

Zend Framework: Zend_Ical Component Proposal

Proposed Component Name Zend_Ical
Developer Notes
Revision 1.1 - 22 September 2007: Initial proposal
1.2 - 03 March 2008: Proposal rewrite
1.3 - 19 May 2008: Proposal update (wiki revision: 28)

Table of Contents

1. Overview

Zend_Ical is a component to manage events, alarms and todos in calendar objects.

2. References

3. Component Requirements, Constraints, and Acceptance Criteria

  • This component will handle ICS files from different data sources (Filesystem, FTP and HTTP (webDAV required for writing)).
  • This component will support the entire ICS 2.0 specification
  • This component will be able to create/write new ICS data
  • This component will allow searching and iteration through calendar data
  • This component must validate any input before writing them to the source

4. Dependencies on Other Framework Components

  • Zend_Exception
  • Zend_Date
  • Zend_Uri

5. Theory of Operation

Zend_Ical will take an URI (String or Zend_Uri) as argument for the constructor method. Zend_Ical will then parse the ICS file through a LALR parsing mode. All time values within the ICS data will be converted to the local time zone.

After the parsing you can call different methods to gather data from the calendar or add additional data to it. You can also iterate through the calendar object to get all data available.

At the time of writing, Zend_Ical will only support the iCalender 2.0 format.

6. Milestones / Tasks

  • Milestone 1: [done] Proposal finished
  • Milestone 2: [done] Development of prototype started and checked into
  • Milestone 3: Proposal approved
  • Milestone 4: Working prototype checked into the incubator.
  • Milestone 5: Unit tests exist, work, and are checked into SVN.
  • Milestone 6: Documentation exists.

7. Class Index

  • Zend_Ical
  • Zend_Ical_Exception
  • Zend_Ical_Parser
  • Zend_Ical_Source_Exception
  • Zend_Ical_Source_Abstract
  • Zend_Ical_Source_Filesystem
  • Zend_Ical_Source_Ftp
  • Zend_Ical_Source_Http

8. Use Cases


Open a ICS calendar file


Fetching specific events


Iterating through all events

9. Class Skeletons



calendar calendar Delete
ical ical Delete
ics ics Delete
date date Delete
time time Delete
alarms alarms Delete
events events Delete
todos todos Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Sep 23, 2007

    <p>As discussed somewhere else, here are my hints for the interface. That are ideas, which may be useful, but dont has to be, as some might be very special <ac:emoticon ac:name="wink" /></p>

    <p>1. default methods like add, set, get, ...<br />
    2. getByDateDuration($startDate,$endDate), .... Maybe with the possibility only to get only all items, which are fully in, or their start-/endtimes are in<br />
    3. getByDate($date) at the other hand can maybe return the items, which duration overspan the specified time<br />
    4. hasByDate($date)/hasByDateDuration($startDate,$endDate), if there are items. I think very useful to specify, if there is free time to plan with <ac:emoticon ac:name="wink" /><br />
    5. *byType. Maybe is more useful not to provide a method for this, than provides a option to use with the other methods to filter by Type.<br />
    6. getNext, getLast (maybe with parameters). First one seems to by very useful for something like "next meeting at ...", getCurrent as a alias for "getByDate ('now')" (something like that)<br />
    7. load, store to file. maybe a kind of file locking possible? (Ive no idea)<br />
    8. Merge?<br />
    9. Export,Import?!? Seems to be quite special, properly not used very much</p>

  2. Feb 22, 2008

    <p>Will this allow generation of repeat events based on RRULE part of the iCal specification.<br />
    for eg a sample RRULE like </p>

    <p>DTSTART;TZID=US-Eastern:19970902T090000<br />

    <p>should return this<br />
    (1997 9:00 AM EDT)September 2,4,9,11,16,18,23,25,30;October 2</p>

    1. Mar 03, 2008

      <p>Yes, the entire Ical v2.0 RFC features will be supported.</p>

  3. Mar 17, 2008

    <p>I'm really looking forward to using this on a project I'm working on.</p>

  4. Apr 04, 2008

    <p>This is going to be very useful.</p>

    <p>Are there any plans to add also iCal creation functionality or will this component only parse existing ones?</p>

    1. Apr 16, 2008

      <p>It will also be able to create new files, yes.</p>

  5. Jun 02, 2008

    <ac:macro ac:name="note"><ac:parameter ac:name="title">Zend Comments</ac:parameter><ac:rich-text-body>
    <p>This proposal has been approved for laboratory development with the following suggestions:</p>
    <li>define API in more details;</li>
    <li>think about integration with Zend_Mail to send and recieve ICAL objects.</li>

  6. Sep 08, 2008

    <p>Wouldn't this be more properly called iCalendar and not iCal? I know iCal is also used for the format, but in the RFC it's always called iCalendar. Also, iCal is the name of Apple's calendar program.</p>

    1. Sep 08, 2008

      <p>Your reasoning is absolutely right, however... Zend_Icalendar is a very long name compared to Zend_Ical. Personally, I'd rather type less than be more correct in this case <ac:emoticon ac:name="smile" /></p>

      1. Sep 17, 2008

        <p>Correct, keep it simple <ac:emoticon ac:name="smile" /></p>

  7. Mar 23, 2009

    <p>Postponed to 1.9.</p>

    1. Aug 08, 2009

      <p>Hi,<br />
      Any progress in this project?<br />
      Now, version 1.9 is available, but iCalendar is not included..<br />
      Could you provide some more information about this project future plans?</p>

  8. Nov 20, 2009

    <p>I am also just checking in to see if there has or <em>will be</em> any progress on this component.</p>

  9. Jan 08, 2010

    <p>Is this proposal still being worked on?</p>

    1. Sep 18, 2010

      <p>I'm currently working on Zend\Ical for ZF2 again.</p>

      1. Apr 20, 2011

        <p>Are you still working on that ? I had look in <a class="external-link" href=""></a> but it looks very incomplete. Do you have another repository ?</p>

        <p>I would be interested in creating .ics files, so I could contribute for "export" feature, but I feel like the code in repository is not up to date at all, so I'm not sure if it's worth working on that...</p>

        1. Aug 24, 2011

          <p>Check my GitHub account.</p>