v2.1.4
- Support Unicode CLDR time zones
- Apply changes to altered recurrence instances after processing recurrence rules to account for the first event in a rule having an alteration
- Decrement the event count by the number of events that are removed when altered recurrence instances are handled
- Prevent altering the indexing of the events array to ensure other processing is not affected
ℹ️ A composer update
is required to update Carbon
Previous Release Changelogs
v2.1.3
- #171: https links
- #173: fix undefined index
- #174: fix method name
- #177: use UTC timestamps when comparing dates
v2.1.2
- #164: define
mbstring
as a required extension - Add configurable option to disable character replacement
- Avoid fatal error with invalid iCal date
v2.1.1
- #162: fix fatal error and remove unnecessary require statement
v2.1.0
- #154
- Process an altered recurrence event even when it is the initial parent event that has been altered
- Correct
if
condition and use ofarray_search()
- #155: provide better support for
VALARM
- #159: fix parse failure on dates before 1970 with an inline time zone
- #161
- Introduce Carbon to allow robust time zone comparison
- Force the default time zone on UTC exdates
- Cache valid time zones to improve parser performance
- Remove unnecessary class inheritance
ℹ️ A composer update
is required to pull in Carbon
v2.0.7
- #116 (#144): continue parsing and default to the default time zone if an invalid
TZID
is found - #147: correct the parsing of exdates that contain attributes such as
VALUE=DATE
- #145: account for exdates that are not reached but affect the recurrence count
- #148: correctly apply time zone data
- Fix an "invalid code point value" PHP warning in PHP 7.2
- Update contributing guidelines
v2.0.6
- #124: create function to prepare the data prior to adding to the Event object
- #125: prevent time zone from being reapplied to
DTSTART_TZ
andDTEND_TZ
for recurrence events - #126: allow
$cal
object to be accessed so attributes such asMETHOD
can be queried - #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on
DTSTART_TZ
andDTEND_TZ
- #129: when converting an event date to a UNIX timestamp only apply the event time zone if explicitly requested
- #133: allow default time zone to be set during instantiation
- #134: correctly parse
FREEBUSY
calendar info - #136: consider
BYSETPOS
when parsing a monthly recurrence rule - #137: change from
gmdate()
todate()
to prevent issues during daylight savings - #138: throw a catchable error exception when a file or URL that does not exist is passed to the parser
- Allow a custom date format to be supplied to
iCalDateWithTimeZone()
- Allow time zone to be set even if no filename is passed to the constructor
- Alter recurrence matching logic to support events with time zone data
- Apply a snake_case conversion to all Event keys
- Correctly force a time zone (if present) when calling
iCalDateWithTimeZone()
- Count
FREEBUSY
occurrences rather than theVFREEBUSY
parent component - Enhance Event object to provide access to the ICal object and its methods
- Ensure public initialisation methods return an ICal object
- Provide separate methods to allow the initialisation of the parser using a file or URL
- Provide support for dates beyond 29 Jan 2038 by converting to a DateTime object
- Support Mac/Linux line endings
- Support multiple files on instantiation
- Trigger an appropriate error if the parser is initialised more than once with iCal content
v2.0.5
- #113: expand
WKST
logic to support days other than Sunday - #114: correctly implement iCal unfolding prior to parsing
- #115: support ability to parse multiple EXDATE lines
- #116
- Correct the logic when applying the event timezone
- Correctly validate timezone
- #118: use multibyte safe string replacement function when cleaning data
- #121: support iCal files with Mac OS X line endings (
\r
) - #123: allow the parser to silently ignore events with an invalid start date
v2.0.4
- #109
- Do not re-apply the timezone if
TZID
is specified withinDTSTART
/DTEND
- Fallback to applying the calendar timezone when using
iCalDateWithTimeZone()
unless Zulu time has been specified
- Do not re-apply the timezone if
- #110
- Attempt to clean data before running it through the parser
- Improve the method of splitting keys from values in an iCal string
- #111
- Implement unfolding prior to parsing as per the iCal spec
- Remove unprintable Unicode characters as well as ASCII
- #112: support ability to skip
processRecurrences()
- Allow missing timezone abbreviations such as MET
- Allow the timezone to be forced when populating
dtstart_tz
/dtend_tz
- Ensure only permitted configurable variables can be overridden in the constructor
- Include an example of using VFREEBUSY
- Update Bootstrap styling used in the examples to
v3.3.7
v2.0.3
- Where appropriate change from
date()
/gmdate()
to use PHP'sDateTime
object - Allow default settings to be overridden and passed into the constructor
- Correct how a timezone is applied to recurrence events if
$useTimeZoneWithRRules
is set totrue
- Improve documentation
v2.0.2
- #14: support ability to parse a negative BYDAY value
- #16: support ability to parse multiple months in YEARLY BYMONTH
- #17: support ability to parse every day of month when BYDAY lacks number
- #65: fix date exclusions that use
EXDATE
- #99: improve performance of parser
- #100: correctly populate
$bydays
array using the day of the week from$startTimestamp
whenBYDAY
is not present in the recurrence rule - Improve documentation
v2.0.1
- Incorporate timezone settings when parsing recurrence rules
- Fix date exclusions that use
EXDATE
- Ensure timezones are checked to be valid before using
- Add new
eventsFromInterval
function - Ensure PSR-2 compliance
- Other improvements and bug fixes
v2.0.0
- Add namespace and autoloading
- Convert Event to be an object