aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRobin Appelman <robin@icewind.nl>2024-08-06 14:46:50 +0200
committerLouis Chemineau <louis@chmn.me>2024-08-28 10:21:20 +0200
commitcc091b150eb370f16d3c7a076d912b08878af96e (patch)
tree6ce959071f99e3e31dfc1e3afe92087ddae06155
parente538f4699d73e286469848f4a5378ac50f6378df (diff)
downloadnextcloud-server-cc091b150eb370f16d3c7a076d912b08878af96e.tar.gz
nextcloud-server-cc091b150eb370f16d3c7a076d912b08878af96e.zip
fix: fix share cleanup for deleted groups with sharding
Signed-off-by: Robin Appelman <robin@icewind.nl>
-rw-r--r--lib/private/Share20/DefaultShareProvider.php28
1 files changed, 18 insertions, 10 deletions
diff --git a/lib/private/Share20/DefaultShareProvider.php b/lib/private/Share20/DefaultShareProvider.php
index b86145ba919..9268d575c85 100644
--- a/lib/private/Share20/DefaultShareProvider.php
+++ b/lib/private/Share20/DefaultShareProvider.php
@@ -1203,10 +1203,14 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
if (!empty($ids)) {
$chunks = array_chunk($ids, 100);
+
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->delete('share')
+ ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
+ ->andWhere($qb->expr()->in('parent', $qb->createParameter('parents')));
+
foreach ($chunks as $chunk) {
- $qb->delete('share')
- ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
- ->andWhere($qb->expr()->in('parent', $qb->createNamedParameter($chunk, IQueryBuilder::PARAM_INT_ARRAY)));
+ $qb->setParameter('parents', $chunk, IQueryBuilder::PARAM_INT_ARRAY);
$qb->execute();
}
}
@@ -1247,14 +1251,18 @@ class DefaultShareProvider implements IShareProviderWithNotification, IShareProv
if (!empty($ids)) {
$chunks = array_chunk($ids, 100);
+
+ /*
+ * Delete all special shares with this user for the found group shares
+ */
+ $qb = $this->dbConn->getQueryBuilder();
+ $qb->delete('share')
+ ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
+ ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($uid)))
+ ->andWhere($qb->expr()->in('parent', $qb->createParameter('parents')));
+
foreach ($chunks as $chunk) {
- /*
- * Delete all special shares with this users for the found group shares
- */
- $qb->delete('share')
- ->where($qb->expr()->eq('share_type', $qb->createNamedParameter(IShare::TYPE_USERGROUP)))
- ->andWhere($qb->expr()->eq('share_with', $qb->createNamedParameter($uid)))
- ->andWhere($qb->expr()->in('parent', $qb->createNamedParameter($chunk, IQueryBuilder::PARAM_INT_ARRAY)));
+ $qb->setParameter('parents', $chunk, IQueryBuilder::PARAM_INT_ARRAY);
$qb->executeStatement();
}
}