diff options
author | Roeland Jago Douma <rullzer@owncloud.com> | 2016-01-28 20:35:46 +0100 |
---|---|---|
committer | Roeland Jago Douma <rullzer@owncloud.com> | 2016-01-28 20:35:46 +0100 |
commit | 1ff4ec1cd33c115a5d905141ea0d9667f063d109 (patch) | |
tree | 09b149290371ea10e98f511a6e1ff2153cfbc4d3 /lib/private/share20/defaultshareprovider.php | |
parent | 8b3d7d09d52ba169953d6a7d03ab570eb3ceed7a (diff) | |
download | nextcloud-server-1ff4ec1cd33c115a5d905141ea0d9667f063d109.tar.gz nextcloud-server-1ff4ec1cd33c115a5d905141ea0d9667f063d109.zip |
[Share 2.0] When deleting a group share delete children
For group shares we can have children. Those are custom shares when a
user has moved or deleted a group share. Those also have to be deleted
if the group share is removed.
Diffstat (limited to 'lib/private/share20/defaultshareprovider.php')
-rw-r--r-- | lib/private/share20/defaultshareprovider.php | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/lib/private/share20/defaultshareprovider.php b/lib/private/share20/defaultshareprovider.php index baa12d6c933..35b3f71f3de 100644 --- a/lib/private/share20/defaultshareprovider.php +++ b/lib/private/share20/defaultshareprovider.php @@ -288,21 +288,21 @@ class DefaultShareProvider implements IShareProvider { * Delete a share * * @param \OCP\Share\IShare $share - * @throws BackendError */ public function delete(\OCP\Share\IShare $share) { - // Fetch share to make sure it exists - $share = $this->getShareById($share->getId()); - $qb = $this->dbConn->getQueryBuilder(); $qb->delete('share') ->where($qb->expr()->eq('id', $qb->createNamedParameter($share->getId()))); - - try { - $qb->execute(); - } catch (\Exception $e) { - throw new BackendError(); + + /* + * If the share is a group share delete all possible + * user defined groups shares. + */ + if ($share->getShareType() === \OCP\Share::SHARE_TYPE_GROUP) { + $qb->orWhere($qb->expr()->eq('parent', $qb->createNamedParameter($share->getId()))); } + + $qb->execute(); } /** |