fix: fix share cleanup for deleted groups with sharding

Signed-off-by: Robin Appelman <robin@icewind.nl>
This commit is contained in:
Robin Appelman 2024-08-06 14:46:50 +02:00 committed by Louis
parent ddecae894a
commit dc5f0f5fb7

View file

@ -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();
}
}