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_Calendar Component Proposal

Proposed Component Name Zend_Calendar
Developer Notes
Proposers Ramses Paiva - Sourcebits Technologies
Zend Liaison TBD
Revision 1.0 - March 23th, 2009: Initial Draft. (wiki revision: 26)

Table of Contents

1. Overview

Zend_Calendar is a component for handling dates and events in a given interval of time. It can easily fetch events from a database, as well as it startup settings. It provides a simple and straightforward interface for handling the periods in this interval, rendering them in the views and provide links for navigation.

On this Calendar component, my approach is on the usage as an Object Date where I can place and manage events ocurring on that particular interval of time.

As stated on Wikipedia:
"Calendars can include computerized systems, which can be set to remind the user of upcoming events and appointments".

And the definition on Wiktionary:
"Any system by which time is divided into days, weeks, months, and years; A means to determine the date consisting of a document containing dates and other temporal information; A list of planned events; To set a date for a proceeding in court, usually done by a judge at a calendar call"

Once one of the purpose is handling events, it will also support iCalendar events for generating vCards with scheduled events.

2. References

3. Component Requirements, Constraints, and Acceptance Criteria

  • This component will provide a collection of period objects, which will represent a particular date.
  • Each period object that represents a DAY will provide a collection of event objects.
  • This event objects will be compliant with the RFC 2445 and RFC 2739 - iCalendar Core Object Specification and Calendar Attributes for vCard and LDAP - for events schedulling and external synchronization.
  • This component will support magic configuration using Zend_Registry
  • This component will support Zend_Config
  • This component will be locale aware
  • This component will provide a common interface for extensibility for supporting different calendar types, such as Gregorian (default and included), Chinese, Arabian, etc.
  • This component will provide a simple interface for being populated with events from the database.

4. Dependencies on Other Framework Components

Currently, the performance of Zend_Calendar is very poor due to the Zend_Date component performance and perhaps I'll decouple it from that or hope Thomas can work on an improvement . Testing with a simpler Date object, it works gracefully.

5. Theory of Operation

The component is a singleton object, which will handle a set of periods and events belonging to this periods.

6. Milestones / Tasks

  • Milestone 1: [IN PROGRESS] Acceptance of this Proposal.
  • Milestone 1: [IN PROGRESS] Design Notes.
  • Milestone 2: Planning Documentation.
  • Milestone 3: Implementation code.
  • Milestone 4: Unit tests.
  • Milestone 6: Improvements and prototype commited to SVN supporting the mentioned use cases.
  • Milestone 7: Reference Guide Documentation.
  • Milestone 8: Final release.

7. Class Index

  • Zend_Date_Calendar (an intermediate object, which extends Zend_Date and can have further functionalities in future - like calendar date conversion from one calendar type to another).
  • Zend_Calendar (Singleton class).
  • Zend_Calendar_Exception
  • Zend_Calendar_Adapter.
  • Zend_Calendar_Adapter_Exception.
  • Zend_Calendar_Adapter_Gregorian (different adapters can be created, but as of now the Gregorian will be the only one available).
  • Zend_Calendar_Adapter_Interface.
  • Zend_Calendar_Event
  • Zend_Calendar_Event_Exception
  • Zend_Calendar_EventsList
  • Zend_Calendar_Period (extends Zend_Date_Calendar)
  • Zend_Calendar_Period_Day
  • Zend_Calendar_Period_Exception
  • Zend_Calendar_Period_Interface
  • Zend_Calendar_Period_Month
  • Zend_Calendar_Period_Week
  • Zend_Calendar_Period_Year
  • Zend_Calendar_Shift

8. Use Cases

9. Class Skeletons



calendar calendar Delete
zend zend Delete
zend_calendar zend_calendar Delete
Enter labels to add to this page:
Please wait 
Looking for a label? Just start typing.
  1. Feb 05, 2011

    <p>Archiving this proposal, feel free to recover it when you want to work on it again. For more details see <a href="">this email</a>.</p>