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