summaryrefslogtreecommitdiffstats
path: root/lib/public
diff options
context:
space:
mode:
authorBjörn Schießle <schiessle@owncloud.com>2013-02-06 14:19:32 +0100
committerBjörn Schießle <schiessle@owncloud.com>2013-02-06 14:19:32 +0100
commit9e08f85c5e8b57d759cecc9ca145a816e121fe6c (patch)
tree6a83d1c4d4d2c3f5694d9751d35f084e2008a89e /lib/public
parent2fdf8ff3e7de9a2e7f7d6f895b5c9afbc69b1b75 (diff)
downloadnextcloud-server-9e08f85c5e8b57d759cecc9ca145a816e121fe6c.tar.gz
nextcloud-server-9e08f85c5e8b57d759cecc9ca145a816e121fe6c.zip
port already approved bugfix to master, https://github.com/owncloud/core/pull/1479
Diffstat (limited to 'lib/public')
-rw-r--r--lib/public/share.php8
1 files changed, 7 insertions, 1 deletions
diff --git a/lib/public/share.php b/lib/public/share.php
index 9aacf5e3449..d46bee26dd4 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -721,6 +721,7 @@ class Share {
}
$items = array();
$targets = array();
+ $switchedItems = array();
while ($row = $result->fetchRow()) {
// Filter out duplicate group shares for users with unique targets
if ($row['share_type'] == self::$shareTypeGroupUserUnique && isset($items[$row['parent']])) {
@@ -745,6 +746,7 @@ class Share {
// Switch ids if sharing permission is granted on only one share to ensure correct parent is used if resharing
if (~(int)$items[$id]['permissions'] & PERMISSION_SHARE && (int)$row['permissions'] & PERMISSION_SHARE) {
$items[$row['id']] = $items[$id];
+ $switchedItems[$id] = $row['id'];
unset($items[$id]);
$id = $row['id'];
}
@@ -848,7 +850,11 @@ class Share {
}
}
// Remove collection item
- unset($items[$row['id']]);
+ $toRemove = $row['id'];
+ if (array_key_exists($toRemove, $switchedItems)) {
+ $toRemove = $switchedItems[$toRemove];
+ }
+ unset($items[$toRemove]);
}
}
if (!empty($collectionItems)) {