]> source.dussan.org Git - nextcloud-server.git/commitdiff
port already approved bugfix to master, https://github.com/owncloud/core/pull/1479
authorBjörn Schießle <schiessle@owncloud.com>
Wed, 6 Feb 2013 13:19:32 +0000 (14:19 +0100)
committerBjörn Schießle <schiessle@owncloud.com>
Wed, 6 Feb 2013 13:19:32 +0000 (14:19 +0100)
lib/public/share.php

index 9aacf5e34491e896e0207e068c7c02432c8561e1..d46bee26dd4bb5a028c46d01d796933efa19a2e8 100644 (file)
@@ -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)) {