summaryrefslogtreecommitdiffstats
path: root/lib/private/share
diff options
context:
space:
mode:
authorBjoern Schiessle <schiessle@owncloud.com>2014-09-26 13:01:54 +0200
committerBjoern Schiessle <schiessle@owncloud.com>2014-09-26 13:01:54 +0200
commitd242e518f93c5588462486920fc22ee8db1802f3 (patch)
treeea37e9397b10013e715fe3f8b37869bc8e7b630c /lib/private/share
parent52b6469b0c2a21ce6e77f8c56dae464eac99781e (diff)
downloadnextcloud-server-d242e518f93c5588462486920fc22ee8db1802f3.tar.gz
nextcloud-server-d242e518f93c5588462486920fc22ee8db1802f3.zip
for group shares only the parent has the up-to-date permission. Make sure that we always use this permission, except if the user permission is '0' because in this case the user unshared the group share from self
Diffstat (limited to 'lib/private/share')
-rw-r--r--lib/private/share/share.php13
1 files changed, 12 insertions, 1 deletions
diff --git a/lib/private/share/share.php b/lib/private/share/share.php
index 10b7acd9fed..e0e9fcfd05f 100644
--- a/lib/private/share/share.php
+++ b/lib/private/share/share.php
@@ -1295,7 +1295,7 @@ class Share extends \OC\Share\Constants {
}
}
- if ($shareType == self::$shareTypeUserAndGroups) {
+ if ($shareType == self::$shareTypeUserAndGroups && $limit === 1) {
// Make sure the unique user target is returned if it exists,
// unique targets should follow the group share in the database
// If the limit is not 1, the filtering can be done later
@@ -1334,6 +1334,12 @@ class Share extends \OC\Share\Constants {
$row['share_type'] = self::SHARE_TYPE_GROUP;
$row['unique_name'] = true; // remember that we use a unique name for this user
$row['share_with'] = $items[$row['parent']]['share_with'];
+ // if the group share was unshared from the user we keep the permission, otherwise
+ // we take the permission from the parent because this is always the up-to-date
+ // permission for the group share
+ if ($row['permissions'] > 0) {
+ $row['permissions'] = $items[$row['parent']]['permissions'];
+ }
// Remove the parent group share
unset($items[$row['parent']]);
if ($row['permissions'] == 0) {
@@ -1657,6 +1663,11 @@ class Share extends \OC\Share\Constants {
$fileTarget = $sourceExists['file_target'];
$itemTarget = $sourceExists['item_target'];
+ // for group shares we don't need a additional entry if the target is the same
+ //if($isGroupShare && $groupItemTarget === $itemTarget) {
+ // continue;
+ //}
+
} elseif(!$sourceExists && !$isGroupShare) {
$itemTarget = Helper::generateTarget($itemType, $itemSource, self::SHARE_TYPE_USER, $user,