From 09ad1c4e2be3f96c759106e8b1ad487cb92c931e Mon Sep 17 00:00:00 2001 From: Richard Steinmetz Date: Tue, 15 Jun 2021 11:35:03 +0200 Subject: Skip deleted calendar objects of deleted calendars Signed-off-by: Richard Steinmetz --- apps/dav/lib/CalDAV/CalDavBackend.php | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'apps') diff --git a/apps/dav/lib/CalDAV/CalDavBackend.php b/apps/dav/lib/CalDAV/CalDavBackend.php index 4bb75e3431a..5f0c1bf3c48 100644 --- a/apps/dav/lib/CalDAV/CalDavBackend.php +++ b/apps/dav/lib/CalDAV/CalDavBackend.php @@ -1098,6 +1098,14 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription return $result; } + /** + * Return all deleted calendar objects by the given principal that are not + * in deleted calendars. + * + * @param string $principalUri + * @return array + * @throws \OCP\DB\Exception + */ public function getDeletedCalendarObjectsByPrincipal(string $principalUri): array { $query = $this->db->getQueryBuilder(); $query->select(['co.id', 'co.uri', 'co.lastmodified', 'co.etag', 'co.calendarid', 'co.size', 'co.componenttype', 'co.classification', 'co.deleted_at']) @@ -1105,7 +1113,8 @@ class CalDavBackend extends AbstractBackend implements SyncSupport, Subscription ->from('calendarobjects', 'co') ->join('co', 'calendars', 'c', $query->expr()->eq('c.id', 'co.calendarid', IQueryBuilder::PARAM_INT)) ->where($query->expr()->eq('principaluri', $query->createNamedParameter($principalUri))) - ->andWhere($query->expr()->isNotNull('co.deleted_at')); + ->andWhere($query->expr()->isNotNull('co.deleted_at')) + ->andWhere($query->expr()->isNull('c.deleted_at')); $stmt = $query->executeQuery(); $result = []; -- cgit v1.2.3