Hi Ralf,
Danke für die Antwort und den Tipp. Ich habe jetzt noch mal lange rumprobiert und kann jetzt folgendes Problem reproduzieren. Das ganze ist nicht exakt die gleiche Stelle aus dem ersten Beitrag, klingt aber sehr ähnlich.
- Ein Benutzer legt einen Termin mit Wiederholungstyp jährlich an
- Der Termin wird via DAV über einen Gruppen Kallender abgerufen (also z.B. https…/groupdav.php/some-group/calendar/13.ics)
- E-Groupware liefert jetzt die Warnung zu array_intersec (siehe stacktrace) und einen leere ICS Datei womit DAVdroid wiederum nicht zurechtkommt.
DAVdroid Fehlermeldung: Received multi-get response without address data (code)
DAV debug (calendar-data ist leer):
<D:response xmlns:ns0="urn:uuid:c2f41010-65b3-11d1-a29f-00aa00c14882/" xmlns:ns2="urn:ietf:params:xml:ns:caldav">
<D:href>/egroupware/groupdav.php/some-group/calendar/13.ics</D:href>
<D:propstat>
<D:prop>
<D:getcontenttype>text/calendar; charset=utf-8; component=VEVENT</D:getcontenttype>
<D:getetag>"13:3:1536564930"</D:getetag>
<ns2:calendar-data/>
</D:prop>
<D:status>HTTP/1.1 200 OK</D:status>
</D:propstat>
</D:response>
Warning in der E-Groupware/Apache log:
PHP Warning: array_intersect(): Argument #2 is not an array in /usr/share/egroupware/calendar/inc/class.calendar_groupdav.inc.php on line 818, referer: https://.../egroupware/groupdav.php/some-group/calendar/
#1 /usr/share/egroupware/calendar/inc/class.calendar_groupdav.inc.php(818): array_intersect(Array, NULL), referer: https://.../egroupware/groupdav.php/some-group/calendar/
#2 /usr/share/egroupware/calendar/inc/class.calendar_groupdav.inc.php(800): calendar_groupdav::isParticipant(Array, -6), referer: https://.../egroupware/groupdav.php/some-group/calendar/
#3 /usr/share/egroupware/calendar/inc/class.calendar_groupdav.inc.php(691): calendar_groupdav::get_series('calendar-13-53d...', Object(calendar_boupdate), false, -6), referer: https://.../egroupware/groupdav.php/some-group/calendar/
#4 /usr/share/egroupware/calendar/inc/class.calendar_groupdav.inc.php(644): calendar_groupdav->iCal(Array, -6, NULL), referer: https://.../egroupware/groupdav.php/some-group/calendar/
#5 /usr/share/egroupware/api/src/CalDAV.php(996): calendar_groupdav->get(Array, '13.ics', -6), referer: https://.../egroupware/groupdav.php/some-group/calendar/
#6 /usr/share/egroupware/api/src/WebDAV/Server.php(1278): EGroupware\\Api\\CalDAV->GET(Array), referer: https://.../egroupware/groupdav.php/some-group/calendar/
#7 /usr/share/egroupware/api/src/WebDAV/Server.php(306): HTTP_WebDAV_Server->http_GET(), referer: https://.../egroupware/groupdav.php/some-group/calendar/
#8 /usr/share/egroupware/api/src/CalDAV.php(2058): HTTP_WebDAV_Server->ServeRequest(NULL), referer: https://.../egroupware/groupdav.php/some-group/calendar/
#9 /usr/share/egroupware/groupdav.php(52): EGroupware\\Api\\CalDAV->ServeRequest(), referer: https://.../egroupware/groupdav.php/some-group/calendar/
#10 {main}, referer: https://.../egroupware/groupdav.php/some-group/calendar/
# Instance=default, User=test, Request=GET https://.../groupdav.php/some-group/calendar/13.ics, User-agent=Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/60.0, referer: https://.../egroupware/groupdav.php/some-group/calendar/
Wenn ich die 13.ics im Browser runterlade ist die Datei komplett leer. Some-group hat id 6. Bei dem Termin handelt es sich um einen Geburtstag, also mit Wiederholungstyp jährlich. Wenn ich die Wiederholung ausschalte, klappt alles super und die ics wird gefüllt.
Ab hier unterscheiden sich die wiederkehrenden und nicht wiederkehrenden Events:
Im folgenden code werden die events, welche in variable master enthalten sind, nicht übernommen da isParticipant für eine Gruppe nix zurück liefert (siehe Warning oben). Die Methode gibt dann ein leeres Ergebnis zurück.
Weitere werte: user=-6, expand="", master[‘participants’]=Array([9] => ACHAIR) (der User 9 ist Mitglied in Gruppe 6, aber die Gruppe 6 nimmt nicht am Event teil)
Irgendwo auf dem Weg muss dann wohl geprüft werden ob es sich bei user um eine Gruppe handelt.
Grüße
Sascha