#288: Only decode CHARSET if we're reading vCard 2.1. If it appears
in any other document, we must ignore it.
4.0.1 (2016-01-04)
#284: When generating CANCEL iTip messages, we now include DTEND.
(@kewisch)
4.0.0 (2015-12-11)
#274: When creating new vCards, the default vCard version is now 4.0.
#275: VEVENT, VTODO and VCARD now automatically get a UID and
DTSTAMP property if this was not already specified.
ParseException now extends \Exception.
Sabre\VObject\Reader::read now has a $charset argument.
#272: Sabre\VObject\Recur\EventIterator::$maxInstances is now
Sabre\VObject\Settings::$maxRecurrences and is also honored by the
FreeBusyGenerator.
#278: expand() did not work correctly on events with sub-components.
4.0.0-beta1 (2015-12-02)
#258: Support for expanding events that use RDATE. (@jabdoa2)
#258: Correctly support TZID for events that use RDATE. (@jabdoa2)
#240: Component\VCalendar::expand() now returns a new expanded VCalendar
object, instead of editing the existing VCalendar in-place. This is a BC
break.
#265: Using the new InvalidDataException in place of
InvalidArgumentException and LogicException in all places where we fail
because there was something wrong with input data.
#139: We now accept DateTimeInterface wherever it accepted DateTime
before in arguments. This means that either DateTime or
DateTimeImmutable may be used everywhere.
#242: Full support for the VAVAILABILITY component, and calculating
VFREEBUSY based on VAVAILABILITY data.
#186: Fixing conversion of UTC-OFFSET properties when going back and
forward between jCal and iCalendar.
Properties, Components and Parameters now implement PHP's JsonSerializable
interface.
#139: We now always return DateTimeImmutable from any method. This could
potentially have big implications if you manipulate Date objects anywhere.
#161: Simplified ElementList by extending ArrayIterator.
Now using php-cs-fixer to automatically enforce and correct CS.
#233: The +00:00 timezone is now recognized as UTC. (c960657">@c960657)
#237: Added a destroy() method to all documents. This method breaks any
circular references, allowing PHP to free up memory.
#197: Made accessing properties and objects by their name a lot faster. This
especially helps objects that have a lot of sub-components or properties,
such as large iCalendar objects.
#197: The $children property on components has been changed from public
to protected. Use the children() method instead to get a flat list of
objects.
#244: The Float and Integer classes have been renamed to FloatValue
and IntegerValue to allow PHP 7 compatibility.
3.4.8 (2016-01-04)
#284: When generating CANCEL iTip messages, we now include DTEND.
(@kewisch).
3.4.7 (2015-09-05)
#253: Handle isInTimeRange for recurring events that have 0 valid
instances. (@DominikTo, @migrax).
3.4.6 (2015-08-06)
#250: Recurring all-day events are incorrectly included in time range
requests when not using UTC in the time range. (@armin-hackmann)
3.4.5 (2015-06-02)
#229: Converting vcards from 3.0 to 4.0 that contained a LANG property
would throw an error.
3.4.4 (2015-05-27)
#228: Fixed a 'party crasher' bug in the iTip broker. This would break
scheduling in some cases.
3.4.3 (2015-05-19)
#219: Corrected validation of EXDATE properties with more than one value.
#212: BYSETPOS with values below -1 was broken and could cause infinite
loops.
#211: Fix BYDAY=-5TH in recurrence iterator. (@lindquist)
#216: ENCODING parameter is now validated for all document types.
#217: Initializing vCard DATE objects with a PHP DateTime object will now
work correctly. (@thomascube)
3.4.2 (2015-02-25)
#210: iTip: Replying to an event without a master event was broken.
3.4.1 (2015-02-24)
A minor change to ensure that unittests work correctly in the sabre/dav
test-suite.
3.4.0 (2015-02-23)
#196: Made parsing recurrence rules a lot faster on big calendars.
Updated windows timezone mappings to latest unicode version.
#202: Support for parsing and validating VAVAILABILITY components. (@Hywan)
#195: PHP 5.3 compatibility in 'generatevcards' script. (@rickdenhaan)
#205: Improving handling of multiple EXDATE when processing iTip changes.
(@armin-hackmann)
#187: Fixed validator rules for LAST-MODIFIED properties.
#188: Retain floating times when generating instances using
Recur\EventIterator.
#203: Skip tests for timezones that are not supported on older PHP versions,
instead of a hard fail.
#204: Dealing a bit better with vCard date-time values that contained
milliseconds. (which is normally invalid). (@armin-hackmann)
3.3.5 (2015-01-09)
#168: Expanding calendars now removes objects with recurrence rules that
don't have a valid recurrence instance.
#177: SCHEDULE-STATUS should not contain a reason phrase, only a status
code.
#179: Fixed jCal serialization of floating DATE-TIME properties.
#173: vCard converter failed for X-ABDATE properties that had no
X-ABLABEL.
#180: Added PROFILE_CALDAV and PROFILE_CARDDAV to enable validation rules
specific for CalDAV/CardDAV servers.
#176: A missing UID is no longer an error, but a warning for the vCard
validator, unless PROFILE_CARDDAV is specified.
3.3.4 (2014-11-19)
#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.
2.1.7 (2015-01-21)
Fixed: Issue #94, a workaround for bad escaping of ; and , in compound
properties. It's not a full solution, but it's an improvement for those
stuck in the 2.1 versions.
2.1.6 (2014-12-10)
Fixed: Minor change to make sure that unittests succeed on every PHP version.
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.