diff --git a/lib/public/share.php b/lib/public/share.php index 9aacf5e344..d46bee26dd 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)) {