diff options
author | Michael Gapczynski <mtgap@owncloud.com> | 2012-09-09 11:50:12 -0400 |
---|---|---|
committer | Michael Gapczynski <mtgap@owncloud.com> | 2012-09-09 11:50:12 -0400 |
commit | 13d513c17c264a3bbb1b2c874bb742afbce76e10 (patch) | |
tree | f23ec9510bc0edaf16d9c58f9de0fbb253a1a4ad /lib | |
parent | 3e7951e1e6d8928e1c2e47d25489635d337cac04 (diff) | |
download | nextcloud-server-13d513c17c264a3bbb1b2c874bb742afbce76e10.tar.gz nextcloud-server-13d513c17c264a3bbb1b2c874bb742afbce76e10.zip |
Fix shared collection item searching
Diffstat (limited to 'lib')
-rw-r--r-- | lib/public/share.php | 67 |
1 files changed, 38 insertions, 29 deletions
diff --git a/lib/public/share.php b/lib/public/share.php index 5ed04c3e160..3e42e91d045 100644 --- a/lib/public/share.php +++ b/lib/public/share.php @@ -629,7 +629,6 @@ class Share { } $root = strlen($root); $query = \OC_DB::prepare('SELECT '.$select.' FROM `*PREFIX*share` '.$where, $queryLimit); - $result = $query->execute($queryArgs); $items = array(); $targets = array(); @@ -692,37 +691,47 @@ class Share { // Check if this is a collection of the requested item type if ($includeCollections && in_array($row['item_type'], $collectionTypes)) { if (($collectionBackend = self::getBackend($row['item_type'])) && $collectionBackend instanceof Share_Backend_Collection) { - $row['collection'] = array('item_type' => $itemType, $column => $row[$column]); - // Fetch all of the children sources - $children = $collectionBackend->getChildren($row[$column]); - foreach ($children as $child) { - $childItem = $row; - if ($row['item_type'] != 'file' && $row['item_type'] != 'folder') { - $childItem['item_source'] = $child['source']; - $childItem['item_target'] = $child['target']; - } - if ($backend instanceof Share_Backend_File_Dependent) { - if ($row['item_type'] == 'file' || $row['item_type'] == 'folder') { - $childItem['file_source'] = $child['source']; - } else { - $childItem['file_source'] = \OC_FileCache::getId($child['file_path']); + // Collections can be inside collections, check if the item is a collection + if (isset($item) && $row['item_type'] == $itemType && $row[$column] == $item) { + $collectionItems[] = $row; + } else { + $row['collection'] = array('item_type' => $row['item_type'], $column => $row[$column]); + // Fetch all of the children sources + $children = $collectionBackend->getChildren($row[$column]); + foreach ($children as $child) { + $childItem = $row; + $childItem['item_type'] = $itemType; + if ($row['item_type'] != 'file' && $row['item_type'] != 'folder') { + $childItem['item_source'] = $child['source']; + $childItem['item_target'] = $child['target']; } - $childItem['file_target'] = \OC_Filesystem::normalizePath($child['file_path']); - } - if (isset($item)) { - if ($childItem[$column] == $item) { - // Return only the item instead of a 2-dimensional array - if ($limit == 1 && $format == self::FORMAT_NONE) { - return $childItem; + if ($backend instanceof Share_Backend_File_Dependent) { + if ($row['item_type'] == 'file' || $row['item_type'] == 'folder') { + $childItem['file_source'] = $child['source']; } else { - // Unset the items array and break out of both loops - $items = array(); - $items[] = $childItem; - break 2; + $childItem['file_source'] = \OC_FileCache::getId($child['file_path']); } + $childItem['file_target'] = \OC_Filesystem::normalizePath($child['file_path']); + } + if (isset($item)) { + if ($childItem[$column] == $item) { + // Return only the item instead of a 2-dimensional array + if ($limit == 1) { + if ($format == self::FORMAT_NONE) { + return $childItem; + } else { + // Unset the items array and break out of both loops + $items = array(); + $items[] = $childItem; + break 2; + } + } else { + $collectionItems[] = $childItem; + } + } + } else { + $collectionItems[] = $childItem; } - } else { - $collectionItems[] = $childItem; } } } @@ -1182,4 +1191,4 @@ interface Share_Backend_Collection extends Share_Backend { */ public function getChildren($itemSource); -} +}
\ No newline at end of file |