|
|
|
@ -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)) { |
|
|
|
|