From: Björn Schießle Date: Wed, 6 Feb 2013 13:19:32 +0000 (+0100) Subject: port already approved bugfix to master, https://github.com/owncloud/core/pull/1479 X-Git-Tag: v5.0.0alpha1~107 X-Git-Url: https://source.dussan.org/?a=commitdiff_plain;h=9e08f85c5e8b57d759cecc9ca145a816e121fe6c;p=nextcloud-server.git port already approved bugfix to master, https://github.com/owncloud/core/pull/1479 --- 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)) {