-
-
Notifications
You must be signed in to change notification settings - Fork 145
Outlook/Office 365 recurrent events issue #344
Description
PHP Version
8.3
PHP date.timezone
UTC
ICS Parser Version
3.4.1
Operating System
Linux
Description
There seems an issue with Microsoft ICS. The original event and the recurrent event are displayed both the same day.
It is hard to explain, so I will copy a comment from WordPress plugin which use your library and had fixed the issue.
Note: This handling addresses an issue with, at least, Outlook/Office 365, where an
individual instance that deviates from the recurrence rules appears in the array,
in addition to the regular (but, in this instance, incorrect) rules. Each recurrence
in the array can be identified by the 'uid' key. The individual instances that deviate
are identified by 'recurrence_id', which is absent in the event entry that follows the
normal rule. Therefore, we look for instances of 'recurrence_id', find the
corresponding 'uid', and then look through all other events for the date for an
instance that includes 'uid' but not 'recurrence_id'.
This may also be an issue with the ICS Parser library, in that it does not seem aware
of this handling in Office 365.
https://plugins.trac.wordpress.org/browser/ics-calendar/tags/11.4.2/class-r34ics.php#L2079
Indeed, their code seems to fix the problem, but it would be better if the correction were made in the library itself.
Steps to Reproduce
use this ics :
BEGIN:VCALENDAR
METHOD:PUBLISH
PRODID:Microsoft Exchange Server 2010
VERSION:2.0
X-WR-CALNAME:Calendrier
BEGIN:VTIMEZONE
TZID:W. Europe Standard Time
BEGIN:STANDARD
DTSTART:16010101T030000
TZOFFSETFROM:+0200
TZOFFSETTO:+0100
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=10
END:STANDARD
BEGIN:DAYLIGHT
DTSTART:16010101T020000
TZOFFSETFROM:+0100
TZOFFSETTO:+0200
RRULE:FREQ=YEARLY;INTERVAL=1;BYDAY=-1SU;BYMONTH=3
END:DAYLIGHT
END:VTIMEZONE
BEGIN:VEVENT
DESCRIPTION:\n\n
RRULE:FREQ=WEEKLY;UNTIL=20251227T100000Z;INTERVAL=1;BYDAY=SA;WKST=MO
EXDATE;TZID=W. Europe Standard Time:20240622T110000,20240629T110000,2024070
6T110000,20240713T110000,20240720T110000,20240727T110000,20240803T110000,2
0240810T110000,20240817T110000,20240824T110000,20240831T110000,20241109T11
0000,20250118T110000,20250607T110000,20250621T110000,20250628T110000,20250
705T110000,20250712T110000,20250719T110000,20250726T110000,20250802T110000
,20250809T110000,20250816T110000,20250823T110000
SUMMARY:Original event
DTSTART;TZID=W. Europe Standard Time:20240106T110000
DTEND;TZID=W. Europe Standard Time:20240106T154500
UID:040000008200E00074C5B7101A82E0080000000070DA31F8B807D301000000000000000
010000000667540225DDB1D4F8518AF19275345F7
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20250102T152009Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:1
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT
BEGIN:VEVENT
DESCRIPTION:\n\n
SUMMARY:Recurrent event
DTSTART;TZID=W. Europe Standard Time:20250104T110000
DTEND;TZID=W. Europe Standard Time:20250104T154500
UID:040000008200E00074C5B7101A82E0080000000070DA31F8B807D301000000000000000
010000000667540225DDB1D4F8518AF19275345F7
RECURRENCE-ID;TZID=W. Europe Standard Time:20250104T000000
CLASS:PUBLIC
PRIORITY:5
DTSTAMP:20250102T152009Z
TRANSP:OPAQUE
STATUS:CONFIRMED
SEQUENCE:0
LOCATION:
X-MICROSOFT-CDO-APPT-SEQUENCE:0
X-MICROSOFT-CDO-BUSYSTATUS:BUSY
X-MICROSOFT-CDO-INTENDEDSTATUS:BUSY
X-MICROSOFT-CDO-ALLDAYEVENT:FALSE
X-MICROSOFT-CDO-IMPORTANCE:1
X-MICROSOFT-CDO-INSTTYPE:3
X-MICROSOFT-DISALLOW-COUNTER:FALSE
END:VEVENT
END:VCALENDAR
Result : there are two events instead of one.
