Skip to content

Releases: u01jmg3/ics-parser

New Minor Version Release

23 Sep 08:21
9bb34b1
Compare
Choose a tag to compare

v2.2.1

  • #269: remove dependency on Carbon
    ℹ️ composer update required

Previous Release Changelogs

v2.1.20

  • #267: accept any line endings in initString()
  • Added the option to fund this project ❤️

v2.1.19

  • #259: skip empty lines
  • #263: fix bug with COUNT in conjunction with EXDATE

v2.1.18

  • #260 (#261): fix init() lines bug with a false returns

v2.1.17

  • #251 (#256): use ISO Year within WEEKLY recurrence handling
  • #253 (#254): support the Accept-Language request HTTP header

v2.1.16

  • #240 (#246, #247): support the DTSTART of an event also being an EXDATE

v2.1.15

  • #238 (#239): improve the approach to mapping one weekstart to another in WEEKLY

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

v2.1.13

  • #197, #208 (#228): provide more accurate time zone support
  • #227: clean-up parsing of time zone strings

v2.1.12

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 of array_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 and DTEND_TZ for recurrence events
  • #126: allow $cal object to be accessed so attributes such as METHOD can be queried
  • #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on DTSTART_TZ and DTEND_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() to date() 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 the VFREEBUSY 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 within DTSTART / DTEND
    • Fallback to applying the calendar timezone when using iCalDateWithTimeZone() unless Zulu time has been specified
  • #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 appropr...
Read more

Maintenance Release

13 Jul 11:25
Compare
Choose a tag to compare

v2.1.20

  • #267: accept any line endings in initString()
  • Added the option to fund this project ❤️

Previous Release Changelogs

v2.1.19

  • #259: skip empty lines
  • #263: fix bug with COUNT in conjunction with EXDATE

v2.1.18

  • #260 (#261): fix init() lines bug with a false returns

v2.1.17

  • #251 (#256): use ISO Year within WEEKLY recurrence handling
  • #253 (#254): support the Accept-Language request HTTP header

v2.1.16

  • #240 (#246, #247): support the DTSTART of an event also being an EXDATE

v2.1.15

  • #238 (#239): improve the approach to mapping one weekstart to another in WEEKLY

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

v2.1.13

  • #197, #208 (#228): provide more accurate time zone support
  • #227: clean-up parsing of time zone strings

v2.1.12

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 of array_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 and DTEND_TZ for recurrence events
  • #126: allow $cal object to be accessed so attributes such as METHOD can be queried
  • #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on DTSTART_TZ and DTEND_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() to date() 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 the VFREEBUSY 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 within DTSTART / DTEND
    • Fallback to applying the calendar timezone when using iCalDateWithTimeZone() unless Zulu time has been specified
  • #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's DateTime object
    • #105, #109: ensure all DateTime objects use a default timezone setting
  • Allow ...
Read more

Maintenance Release

19 May 20:08
Compare
Choose a tag to compare

v2.1.19

  • #259: skip empty lines
  • #263: fix bug with COUNT in conjunction with EXDATE

Previous Release Changelogs

v2.1.18

  • #260 (#261): fix init() lines bug with a false returns

v2.1.17

  • #251 (#256): use ISO Year within WEEKLY recurrence handling
  • #253 (#254): support the Accept-Language request HTTP header

v2.1.16

  • #240 (#246, #247): support the DTSTART of an event also being an EXDATE

v2.1.15

  • #238 (#239): improve the approach to mapping one weekstart to another in WEEKLY

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

v2.1.13

  • #197, #208 (#228): provide more accurate time zone support
  • #227: clean-up parsing of time zone strings

v2.1.12

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 of array_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 and DTEND_TZ for recurrence events
  • #126: allow $cal object to be accessed so attributes such as METHOD can be queried
  • #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on DTSTART_TZ and DTEND_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() to date() 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 the VFREEBUSY 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 within DTSTART / DTEND
    • Fallback to applying the calendar timezone when using iCalDateWithTimeZone() unless Zulu time has been specified
  • #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's DateTime object
    • #105, #109: ensure all DateTime objects use a default timezone setting
  • Allow default settings to be overridden and passed into the constructor
  • Correct how a timezone is applied to recurrence events if $useTimeZoneWithRRules is set to true
  • Improve ...
Read more

Maintenance Release

20 Mar 19:14
Compare
Choose a tag to compare

v2.1.18

  • #260 (#261): fix init() lines bug with a false returns

Previous Release Changelogs

v2.1.17

  • #251 (#256): use ISO Year within WEEKLY recurrence handling
  • #253 (#254): support the Accept-Language request HTTP header

v2.1.16

  • #240 (#246, #247): support the DTSTART of an event also being an EXDATE

v2.1.15

  • #238 (#239): improve the approach to mapping one weekstart to another in WEEKLY

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

v2.1.13

  • #197, #208 (#228): provide more accurate time zone support
  • #227: clean-up parsing of time zone strings

v2.1.12

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 of array_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 and DTEND_TZ for recurrence events
  • #126: allow $cal object to be accessed so attributes such as METHOD can be queried
  • #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on DTSTART_TZ and DTEND_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() to date() 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 the VFREEBUSY 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 within DTSTART / DTEND
    • Fallback to applying the calendar timezone when using iCalDateWithTimeZone() unless Zulu time has been specified
  • #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's DateTime object
    • #105, #109: ensure all DateTime objects use a default timezone setting
  • Allow default settings to be overridden and passed into the constructor
  • Correct how a timezone is applied to recurrence events if $useTimeZoneWithRRules is set to true
  • Improve documentation

v2.0.2

  • #14: support ability to parse a negative BYDAY value
  • #16: support abil...
Read more

Maintenance Release

27 Jan 16:18
Compare
Choose a tag to compare

v2.1.17

  • #251 (#256): use ISO Year within WEEKLY recurrence handling
  • #253 (#254): support the Accept-Language request HTTP header

Previous Release Changelogs

v2.1.16

  • #240 (#246, #247): support the DTSTART of an event also being an EXDATE

v2.1.15

  • #238 (#239): improve the approach to mapping one weekstart to another in WEEKLY

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

v2.1.13

  • #197, #208 (#228): provide more accurate time zone support
  • #227: clean-up parsing of time zone strings

v2.1.12

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 of array_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 and DTEND_TZ for recurrence events
  • #126: allow $cal object to be accessed so attributes such as METHOD can be queried
  • #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on DTSTART_TZ and DTEND_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() to date() 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 the VFREEBUSY 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 within DTSTART / DTEND
    • Fallback to applying the calendar timezone when using iCalDateWithTimeZone() unless Zulu time has been specified
  • #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's DateTime object
    • #105, #109: ensure all DateTime objects use a default timezone setting
  • Allow default settings to be overridden and passed into the constructor
  • Correct how a timezone is applied to recurrence events if $useTimeZoneWithRRules is set to true
  • 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 excl...
Read more

Maintenance Release

03 Dec 19:15
Compare
Choose a tag to compare

v2.1.16

  • #240 (#246, #247): support the DTSTART of an event also being an EXDATE

Previous Release Changelogs

v2.1.15

  • #238 (#239): improve the approach to mapping one weekstart to another in WEEKLY

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

v2.1.13

  • #197, #208 (#228): provide more accurate time zone support
  • #227: clean-up parsing of time zone strings

v2.1.12

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 of array_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 and DTEND_TZ for recurrence events
  • #126: allow $cal object to be accessed so attributes such as METHOD can be queried
  • #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on DTSTART_TZ and DTEND_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() to date() 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 the VFREEBUSY 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 within DTSTART / DTEND
    • Fallback to applying the calendar timezone when using iCalDateWithTimeZone() unless Zulu time has been specified
  • #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's DateTime object
    • #105, #109: ensure all DateTime objects use a default timezone setting
  • Allow default settings to be overridden and passed into the constructor
  • Correct how a timezone is applied to recurrence events if $useTimeZoneWithRRules is set to true
  • 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 when BYDAY is not present in the recurrence rule
  • Impr...
Read more

Maintenance Release

10 Sep 09:48
Compare
Choose a tag to compare

v2.1.15

  • #238 (#239): improve the approach to mapping one weekstart to another in WEEKLY

Previous Release Changelogs

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

v2.1.13

  • #197, #208 (#228): provide more accurate time zone support
  • #227: clean-up parsing of time zone strings

v2.1.12

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 of array_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 and DTEND_TZ for recurrence events
  • #126: allow $cal object to be accessed so attributes such as METHOD can be queried
  • #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on DTSTART_TZ and DTEND_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() to date() 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 the VFREEBUSY 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 within DTSTART / DTEND
    • Fallback to applying the calendar timezone when using iCalDateWithTimeZone() unless Zulu time has been specified
  • #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's DateTime object
    • #105, #109: ensure all DateTime objects use a default timezone setting
  • Allow default settings to be overridden and passed into the constructor
  • Correct how a timezone is applied to recurrence events if $useTimeZoneWithRRules is set to true
  • 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 when BYDAY is not present in the recurrence rule
  • Improve documentation

v2.0.1

  • Incorporate timezone settings when parsing recurrence rule...
Read more

Maintenance Release

18 Aug 16:31
Compare
Choose a tag to compare

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

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 of array_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 and DTEND_TZ for recurrence events
  • #126: allow $cal object to be accessed so attributes such as METHOD can be queried
  • #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on DTSTART_TZ and DTEND_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() to date() 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 the VFREEBUSY 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 within DTSTART / DTEND
    • Fallback to applying the calendar timezone when using iCalDateWithTimeZone() unless Zulu time has been specified
  • #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's DateTime object
    • #105, #109: ensure all DateTime objects use a default timezone setting
  • Allow default settings to be overridden and passed into the constructor
  • Correct how a timezone is applied to recurrence events if $useTimeZoneWithRRules is set to true
  • 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 when BYDAY 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...
Read more

Maintenance Release

18 Jul 15:15
Compare
Choose a tag to compare

v2.1.13

  • #197, #208 (#228): provide more accurate time zone support
  • #227: clean-up parsing of time zone strings

Previous Release Changelogs

v2.1.12

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 of array_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 and DTEND_TZ for recurrence events
  • #126: allow $cal object to be accessed so attributes such as METHOD can be queried
  • #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on DTSTART_TZ and DTEND_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() to date() 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 the VFREEBUSY 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 within DTSTART / DTEND
    • Fallback to applying the calendar timezone when using iCalDateWithTimeZone() unless Zulu time has been specified
  • #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's DateTime object
    • #105, #109: ensure all DateTime objects use a default timezone setting
  • Allow default settings to be overridden and passed into the constructor
  • Correct how a timezone is applied to recurrence events if $useTimeZoneWithRRules is set to true
  • 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 when BYDAY 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

Maintenance Release

11 Jul 10:33
Compare
Choose a tag to compare

v2.1.12


Previous Release Changelogs

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 of array_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 and DTEND_TZ for recurrence events
  • #126: allow $cal object to be accessed so attributes such as METHOD can be queried
  • #127: prevent re-applying a time zone on a timestamp already defined with one and instead rely on DTSTART_TZ and DTEND_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() to date() 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 the VFREEBUSY 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 within DTSTART / DTEND
    • Fallback to applying the calendar timezone when using iCalDateWithTimeZone() unless Zulu time has been specified
  • #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's DateTime object
    • #105, #109: ensure all DateTime objects use a default timezone setting
  • Allow default settings to be overridden and passed into the constructor
  • Correct how a timezone is applied to recurrence events if $useTimeZoneWithRRules is set to true
  • 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 when BYDAY 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