#154: Converting ANNIVERSARY to X-ANNIVERSARY and X-ABDATE and
vice-versa when converting to/from vCard 4.
#154: It's now possible to easily select all vCard properties belonging to
a single group with $vcard->{'ITEM1.'} syntax. (@armin-hackmann)
#156: Simpler way to check if a string is UTF-8. (@Hywan)
Unittest improvements.
#159: The recurrence iterator, freebusy generator and iCalendar DATE and
DATE-TIME properties can now all accept a reference timezone when working
floating times or all-day events.
#159: Master events will no longer get a RECURRENCE-ID when expanding.
#159: RECURRENCE-ID for all-day events will now be correct when expanding.
#163: Added a getTimeZone() method to VTIMEZONE components.
3.3.3 (2014-10-09)
#142: CANCEL and REPLY messages now include the DTSTART from the
original event.
#143: SCHEDULE-AGENT on the ORGANIZER property is respected.
#144: PARTSTAT=NEEDS-ACTION is now set for new invites, if no PARTSTAT is
set to support the inbox feature of iOS.
#130: Incorrect validation rules for RELATED (should be RELATED-TO).
#128: ATTACH in iCalendar is URI by default, not BINARY.
#131: RRULE that doesn't provide a single valid instance now throws an
exception.
#136: Validator rejects all control characters. We were missing a few.
#133: Splitter objects will throw exceptions when receiving incompatible
objects.
#127: Attendees who delete recurring event instances events they had already
declined earlier will no longer generate another reply.
#125: Send CANCEL messages when ORGANIZER property gets deleted.
3.3.1 (2014-08-18)
Changed: It's now possible to pass DateTime objects when using the magic
setters on properties. ($event->DTSTART = new DateTime('now')).
#111: iTip Broker does not process attendee adding events to EXDATE.
#112: EventIterator now sets TZID on RECURRENCE-ID.
#113: Timezone support during creation of iTip REPLY messages.
#114: VTIMEZONE is retained when generating new REQUEST objects.
#114: Support for 'MAILTO:' style email addresses (in uppercase) in the iTip
broker. This improves evolution support.
#115: Using REQUEST-STATUS from REPLY messages and now propegating that into
SCHEDULE-STATUS.
3.3.0 (2014-08-07)
We now use PSR-4 for the directory structure. This means that everything
that was used to be in the lib/Sabre/VObject directory is now moved to
lib/. If you use composer to load this library, you shouldn't have to do
anything about that though.
VEVENT now get populated with a DTSTAMP and UID property by default.
BC Break: Removed the 'includes.php' file. Use composer instead.
#103: Added support for processing iTip messages. This allows a user
to parse incoming iTip messages and apply the result on existing calendars,
or automatically generate invites/replies/cancellations based on changes that
a user made on objects.
#75, #58, #18: Fixes related to overriding the first event in recurrences.
Added: VCalendar::getBaseComponent to find the 'master' component in a
calendar.
Added: Decoding RFC6868 parameter values (uses ^ as an escape character).
Added: Fancy new MimeDir parser that can also parse streams.
Added: Automatically mapping many, many properties to a property-class with
specialized API's.
Added: remove() method for easily removing properties and sub-components
components.
Changed: Components, Properties and Parameters can no longer be created with
Component::create, Property::create and Parameter::create. They must instead
be created through the root component. (A VCalendar or VCard object).
Changed: API for DateTime properties has slightly changed.
Changed: the ->value property is now protected everywhere. Use getParts() and
getValue() instead.
BC Break: No support for mac newlines (\r). Never came across these anyway.
Added: add() method to the Property class.
Added: It's now possible to easy set multi-value properties as arrays.
Added: When setting date-time properties you can just pass PHP's DateTime
object.
Added: New components automatically get a bunch of default properties, such as
VERSION and CALSCALE.
Added: You can add new sub-components much quicker with the magic setters, and
add() method.
Fixed: Issue #87: Several compatibility fixes related to timezone handling
changes in PHP 5.5.10.
2.1.3 (2013-10-02)
Fixed: Issue #55. \r must be stripped from property values.
Fixed: Issue #65. Putting quotes around parameter values that contain a colon.
2.1.2 (2013-08-02)
Fixed: Issue #53. A regression in RecurrenceIterator.
2.1.1 (2013-07-27)
Fixed: Issue #50. RecurrenceIterator gives incorrect result when exception
events are out of order in the iCalendar file.
Fixed: Issue #48. Overridden events in the recurrence iterator that were past
the UNTIL date were ignored.
2.1.0 (2013-06-17)
This version is fully backwards compatible with 2.0.*. However, it contains a
few new API's that mimic the VObject 3 API. This allows it to be used a
'bridge' version. Specifically, this new version exists so SabreDAV 1.7 and
1.8 can run with both the 2 and 3 versions of this library.
Added: Property\DateTime::hasTime().
Added: Property\MultiDateTime::hasTime().
Added: Property::getValue().
Added: Document class.
Added: Document::createComponent and Document::createProperty.
Added: Parameter::getValue().
2.0.7 (2013-03-05)
Fixed: Microsoft re-uses their magic numbers for different timezones,
specifically id 2 for both Sarajevo and Lisbon). A workaround was added to
deal with this.
2.0.6 (2013-02-17)
Fixed: The reader now properly parses parameters without a value.
2.0.5 (2012-11-05)
Fixed: The FreeBusyGenerator is now properly using the factory methods for
creation of components and properties.
2.0.4 (2012-11-02)
Added: Known Lotus Notes / Domino timezone id's.
2.0.3 (2012-10-29)
Added: Support for 'GMT+????' format in TZID's.
Added: Support for formats like SystemV/EST5EDT in TZID's.
Fixed: RecurrenceIterator now repairs recurrence rules where UNTIL < DTSTART.
Added: Support for BYHOUR in FREQ=DAILY (@hollodk).
Added: Support for BYHOUR and BYDAY in FREQ=WEEKLY.
2.0.2 (2012-10-06)
Added: includes.php file, to load the entire library in one go.
Fixed: A problem with determining alarm triggers for TODO's.
2.0.1 (2012-09-22)
Removed: Element class. It wasn't used.
Added: Basic validation and repair methods for broken input data.
Fixed: RecurrenceIterator could infinitely loop when an INTERVAL of 0 was
specified.
Added: A cli script that can validate and automatically repair vcards and
iCalendar objects.
Added: A new 'Compound' property, that can automatically split up parts for
properties such as N, ADR, ORG and CATEGORIES.
Added: Splitter classes, that can split up large objects (such as exports)
into individual objects (thanks @DominikTO and @armin-hackmann).
Added: VFREEBUSY component, which allows easily checking wether timeslots are
available.
Added: The Reader class now has a 'FORGIVING' option, which allows it to parse
properties with incorrect characters in the name (at this time, it just allows
underscores).
Added: Also added the 'IGNORE_INVALID_LINES' option, to completely disregard
any invalid lines.
Fixed: A bug in Windows timezone-id mappings for times created in Greenlands
timezone (sorry Greenlanders! I do care!).
Fixed: DTEND was not generated correctly for VFREEBUSY reports.
Fixed: Parser is at least 25% faster with real-world data.
2.0.0 (2012-08-08)
VObject is now a separate project from SabreDAV. See the SabreDAV changelog
for version information before 2.0.
New: VObject library now uses PHP 5.3 namespaces.
New: It's possible to specify lists of parameters when constructing
properties.
New: made it easier to construct the FreeBusyGenerator.