summaryrefslogtreecommitdiffstats
path: root/lib/private
diff options
context:
space:
mode:
authorThomas Müller <thomas.mueller@tmit.eu>2016-01-29 11:34:38 +0100
committerThomas Müller <thomas.mueller@tmit.eu>2016-01-29 11:34:38 +0100
commit62b9e81919bb5c87183c58dbc1e856228fbfa9aa (patch)
treed8f89e835fb1a76aa1f3191c1c5f94a91faa09f9 /lib/private
parentede1cbf61245a269be5e2bb8fb27bcaa6b44f1a9 (diff)
parent1ff4ec1cd33c115a5d905141ea0d9667f063d109 (diff)
downloadnextcloud-server-62b9e81919bb5c87183c58dbc1e856228fbfa9aa.tar.gz
nextcloud-server-62b9e81919bb5c87183c58dbc1e856228fbfa9aa.zip
Merge pull request #21995 from owncloud/share2_delete_user_defined_group_shares
[Share 2.0] When deleting a group share delete children
Diffstat (limited to 'lib/private')
-rw-r--r--lib/private/share20/defaultshareprovider.php18
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();
}
/**