@@ -56,9 +56,9 @@ public function onCardChanged(int $addressBookId, string $cardUri, string $cardD
5656 }
5757
5858 $ principalUri = $ book ->getPrincipalUri ();
59- $ calendar = $ this ->ensureBirthdayCalendarExists ($ principalUri );
59+ $ calendarInstance = $ this ->ensureBirthdayCalendarExists ($ principalUri );
6060
61- $ this ->updateCalendar ($ cardUri , $ cardData , $ book , $ calendar -> getCalendar () );
61+ $ this ->updateCalendar ($ cardUri , $ cardData , $ book , $ calendarInstance );
6262 }
6363
6464 public function onCardDeleted (int $ addressBookId , string $ cardUri ): void
@@ -70,12 +70,16 @@ public function onCardDeleted(int $addressBookId, string $cardUri): void
7070 }
7171
7272 $ principalUri = $ book ->getPrincipalUri ();
73- $ calendar = $ this ->ensureBirthdayCalendarExists ($ principalUri );
73+ $ calendarInstance = $ this ->ensureBirthdayCalendarExists ($ principalUri );
7474
7575 $ objectUri = $ book ->getUri ().'- ' .$ cardUri .'.ics ' ;
7676
77+ $ calendar = $ calendarInstance ->getCalendar ();
78+ // This is the structure that needs to be passed to the backend methods
79+ $ calendarId = [$ calendar ->getId (), $ calendarInstance ->getId ()];
80+
7781 $ this ->calendarBackend ->deleteCalendarObject (
78- $ calendar -> getCalendar ()-> getId () ,
82+ $ calendarId ,
7983 $ objectUri
8084 );
8185 }
@@ -318,34 +322,38 @@ public function birthdayEventChanged(string $existingCalendarData, VCalendar $ne
318322 /**
319323 * @throws InvalidDataException
320324 */
321- private function updateCalendar (string $ cardUri , string $ cardData , AddressBook $ book , Calendar $ calendar ): void
325+ private function updateCalendar (string $ cardUri , string $ cardData , AddressBook $ book , CalendarInstance $ calendarInstance ): void
322326 {
323327 $ objectUid = $ book ->getUri ().'- ' .$ cardUri ;
324328 $ objectUri = $ objectUid .'.ics ' ;
325329 $ calendarData = $ this ->buildDataFromContact ($ cardData );
326330
331+ $ calendar = $ calendarInstance ->getCalendar ();
332+ // This is the structure that needs to be passed to the backend methods
333+ $ calendarId = [$ calendar ->getId (), $ calendarInstance ->getId ()];
334+
327335 $ existing = $ this ->doctrine ->getRepository (CalendarObject::class)->findOneBy (['calendar ' => $ calendar , 'uri ' => $ objectUri ]);
328336
329337 if (null === $ calendarData ) {
330338 if (null !== $ existing ) {
331339 $ this ->calendarBackend ->deleteCalendarObject (
332- $ calendar ->getId (),
340+ [ $ calendar ->getId (), $ calendarInstance -> getId ()] ,
333341 $ objectUri
334342 );
335343 }
336344 } else {
337345 if (null === $ existing ) {
338346 $ this ->calendarBackend ->createCalendarObject (
339- $ calendar ->getId (),
347+ [ $ calendar ->getId (), $ calendarInstance -> getId ()] ,
340348 $ objectUri ,
341- $ calendarData
349+ $ calendarData-> serialize ()
342350 );
343351 } else {
344352 if ($ this ->birthdayEventChanged ($ existing ->getCalendarData (), $ calendarData )) {
345353 $ this ->calendarBackend ->updateCalendarObject (
346- $ calendar ->getId (),
354+ [ $ calendar ->getId (), $ calendarInstance -> getId ()] ,
347355 $ objectUri ,
348- $ calendarData
356+ $ calendarData-> serialize ()
349357 );
350358 }
351359 }
0 commit comments