diff --git a/apps/dav/lib/CardDAV/CardDavBackend.php b/apps/dav/lib/CardDAV/CardDavBackend.php index 699248f7b17c9..5106bd89e334e 100644 --- a/apps/dav/lib/CardDAV/CardDavBackend.php +++ b/apps/dav/lib/CardDAV/CardDavBackend.php @@ -470,7 +470,30 @@ function deleteAddressBook($addressBookId) { $query->delete($this->dbCardsPropertiesTable) ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId))) ->execute(); + } + + /** + * Delete all the content from an addressbook + * + * @param mixed $addressBookId + * @return void + */ + public function emptyAddressBook($addressBookId): void + { + $query = $this->db->getQueryBuilder(); + $query->delete('cards') + ->where($query->expr()->eq('addressbookid', $query->createParameter('addressbookid'))) + ->setParameter('addressbookid', $addressBookId) + ->execute(); + + $query->delete('addressbookchanges') + ->where($query->expr()->eq('addressbookid', $query->createParameter('addressbookid'))) + ->setParameter('addressbookid', $addressBookId) + ->execute(); + $query->delete($this->dbCardsPropertiesTable) + ->where($query->expr()->eq('addressbookid', $query->createNamedParameter($addressBookId))) + ->execute(); } /** diff --git a/apps/dav/lib/CardDAV/SyncService.php b/apps/dav/lib/CardDAV/SyncService.php index 1fea3caf4270c..fc45c2b8bde84 100644 --- a/apps/dav/lib/CardDAV/SyncService.php +++ b/apps/dav/lib/CardDAV/SyncService.php @@ -345,6 +345,6 @@ public function syncInstance(\Closure $progressCallback = null) { public function purgeSystemAddressBook(): void { $systemAddressBook = $this->getLocalSystemAddressBook(); - $this->backend->deleteAddressBook($systemAddressBook['id']); + $this->backend->emptyAddressBook($systemAddressBook['id']); } }