Skip to end of metadata
Go to start of metadata

Zend Framework: Zend_Ical Component Proposal

Proposed Component Name Zend_Ical
Developer Notes http://framework.zend.com/wiki/display/ZFDEV/Zend_Ical
Proposers
Revision 1.1 - 22 September 2007: Initial proposal
1.2 - 03 March 2008: Proposal rewrite
1.3 - 19 May 2008: Proposal update (wiki revision: 27)

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 http://zend.svn.dasprids.de/
  • 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

UC-01

Open a ICS calendar file

UC-02

Fetching specific events

UC-03

Iterating through all events

9. Class Skeletons

Labels:
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

    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

    1. default methods like add, set, get, ...
    2. getByDateDuration($startDate,$endDate), .... Maybe with the possibility only to get only all items, which are fully in, or their start-/endtimes are in
    3. getByDate($date) at the other hand can maybe return the items, which duration overspan the specified time
    4. hasByDate($date)/hasByDateDuration($startDate,$endDate), if there are items. I think very useful to specify, if there is free time to plan with
    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.
    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)
    7. load, store to file. maybe a kind of file locking possible? (Ive no idea)
    8. Merge?
    9. Export,Import?!? Seems to be quite special, properly not used very much

  2. Feb 22, 2008

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

    DTSTART;TZID=US-Eastern:19970902T090000
    RRULE:FREQ=WEEKLY;COUNT=10;WKST=SU;BYDAY=TU,TH

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

    1. Mar 03, 2008

      Yes, the entire Ical v2.0 RFC features will be supported.

  3. Mar 17, 2008

    I'm really looking forward to using this on a project I'm working on.

  4. Apr 04, 2008

    This is going to be very useful.

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

    1. Apr 16, 2008

      It will also be able to create new files, yes.

  5. Jun 02, 2008

    Zend Comments
    This proposal has been approved for laboratory development with the following suggestions:
    • define API in more details;
    • think about integration with Zend_Mail to send and recieve ICAL objects.
  6. Sep 08, 2008

    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.

    1. Sep 08, 2008

      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

      1. Sep 17, 2008

        Correct, keep it simple

  7. Mar 23, 2009

    Postponed to 1.9.

    1. Aug 08, 2009

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

  8. Nov 20, 2009

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

  9. Jan 08, 2010

    Is this proposal still being worked on?

    1. Sep 18, 2010

      I'm currently working on Zend\Ical for ZF2 again.

      1. Apr 20, 2011

        Are you still working on that ? I had look in http://framework.zend.com/svn/framework/laboratory/Zend_Ical/library/Zend/ but it looks very incomplete. Do you have another repository ?

        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...

        1. Aug 24, 2011

          Check my GitHub account.