v2.1.14
- #233, #234 (#232, #236): major refactoring of the
processRecurrences()
method (thanks to @s0600204) - #229: adds a new set of tests based on the RFC 5545 recurrence examples
- #223: maintain PHP 5.3.9 support
Previous Release Changelogs
v2.1.13
- #197, #208 (#228): provide more accurate time zone support
- #227: clean-up parsing of time zone strings
v2.1.12
- #212: support parsing every month's first weekday and every month's last day
- #224: only compare the first word of a weekday
- #216 (#217): fix filter days before and after issue
- #218 (#219): limit until
rrule
if it goes beyond the default span - #222: cleanup the code handling timezones when converting an iCal date to a unix date
v2.1.11
- #205: support defining a custom HTTP User Agent
v2.1.10
- #180 (#209, #210): correct the recurrence calculation applied against whole day events with a user defined time zone
- Includes the welcomed addition of unit testing by @hubermat
- #207 (#213): drop non-recurring events if out-of-range
- #196 (#211): unit test added against non-issue
- Support
nesbot/carbon
^2.0
for those using PHP 7+
v2.1.9
- #202: fix
mb_strlen($str, $encoding = 'auto')
warning in PHP 7.3
v2.1.8
- #195: support HTTP basic authentication
- Improve multibyte safe replacement method
v2.1.7
- #184 (#190), #182, #149: support reducing the number of events to be parsed
- Add corrected time zones
v2.1.6
- #186 (#187): map Windows time zone IDs to their IANA equivalent
- Fallback to using the start date/time as the end date/time when no end date/time is explicitly defined
- Trigger an error if a user provided default span is not an integer
- Fix for initialising using an array of iCal lines
ℹ️ A composer update
is required to update Carbon
v2.1.5
- #179: correct placement of variable
- Version control the composer lock file
- Ensure PHP
5.3.*
compatibility when installing Composer dependencies
ℹ️ A composer update
is required to update Carbon
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
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