nextcloud / server

☁️ Nextcloud server, a safe home for all your data
https://nextcloud.com
GNU Affero General Public License v3.0
27.27k stars 4.06k forks source link

When a calendar event is deleted, corresponding calendar_invitation entries are not deleted #12387

Open brad2014 opened 5 years ago

brad2014 commented 5 years ago

A note for minor cleanup.

When a calendarobject (a particular event) is deleted, any outstanding calendar_invitations for that event should be deleted as well. Currently, I believe they are left dangling until they expire at the end time of the (now deleted) event, if the event has one.

nextcloud-bot commented 5 years ago

GitMate.io thinks possibly related issues are https://github.com/nextcloud/server/issues/4451 ("Delete Calendar" Issue), https://github.com/nextcloud/server/issues/11305 (Deleting contacts not necessarily delets birthday-entries in birthday calendar), https://github.com/nextcloud/server/issues/10864 (Automatically delete old calendar events), https://github.com/nextcloud/server/issues/1506 (Birthday events created while importing contacts should be deleted if addressbook containing the corresponding contact is deleted), and https://github.com/nextcloud/server/issues/11395 (Deleting an addressbook does not seem to delete its birthday calendar entries).

tcitworld commented 3 years ago

So calendar_invitations reference calendarobjects (though UID) but not calendars. Therefore we can remove them when the event is (permanently) deleted, but not when the calendar itself is (permanently) deleted.

I'm not certain that it's a good idea to reference the calendar in calendar_invitations, so maybe another cleanup job?

szaimen commented 1 year ago

Hi, please update to 24.0.8 or better 25.0.2 and report back if it fixes the issue. Thank you!

brad2014 commented 1 year ago

Still a bug.

I can confirm that in 25.0.2, when a calendar event is deleted, the calendar event now is moved to a trash bin (so the event object is not deleted, and the token does not refer to a deleted event uid). However, when the calendar trash is emptied, and the deleted calendar object is removed from the database, the calendar_invitation referring to that calendar object is not cleaned up, and is left dangling (its uid now refers to a nonexistant id).

Site Note: installations that have occ config:app:set dav invitation_link_recipients --value no are not affected, since invitation tokens are not generated for such systems.

SebastianKrupinski commented 3 months ago

Tested on version 30-dev. Confirmed.

Tested with internal NC attendee: On event delete,

Tested with external attendee only: On event delete,

Issue 1: calendar_invitations entries are not deleted, at any stage.

Issue 2: More options should show error message or notification message that the event no longer exists.

Solution 1: Delete link on event delete and check if link is still valid and show appropriate message, then generate new link on restore.

Solution 2: Delete link on trash empty but check event status, and show appropriate message.

SebastianKrupinski commented 3 months ago

Related to #15814