summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMichael Gapczynski <mtgap@owncloud.com>2012-09-11 00:37:31 -0400
committerMichael Gapczynski <mtgap@owncloud.com>2012-09-11 00:37:31 -0400
commit37f0b85d3f0517a1548a0e62d1d1aa1b04e0c79c (patch)
treeecfbde7637dc875064251d941478457842adb562
parentff6141b1e9fa265557ddae11963a577a5a4eb240 (diff)
downloadnextcloud-server-37f0b85d3f0517a1548a0e62d1d1aa1b04e0c79c.tar.gz
nextcloud-server-37f0b85d3f0517a1548a0e62d1d1aa1b04e0c79c.zip
Fix problem with non share collection item types being treated as collections
-rw-r--r--lib/public/share.php20
1 files changed, 14 insertions, 6 deletions
diff --git a/lib/public/share.php b/lib/public/share.php
index 6186c2d1c17..ccb5a56ac74 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -458,8 +458,11 @@ class Share {
$collectionTypes[] = $type;
}
}
+ if (!self::getBackend($itemType) instanceof Share_Backend_Collection) {
+ unset($collectionTypes[0]);
+ }
// Return array if collections were found or the item type is a collection itself - collections can be inside collections
- if (count($collectionTypes) > 1 || self::getBackend($itemType) instanceof Share_Backend_Collection) {
+ if (count($collectionTypes) > 0) {
return $collectionTypes;
}
return false;
@@ -504,9 +507,14 @@ class Share {
$root = '';
if ($includeCollections && !isset($item) && ($collectionTypes = self::getCollectionItemTypes($itemType))) {
// If includeCollections is true, find collections of this item type, e.g. a music album contains songs
- $placeholders = join(',', array_fill(0, count($collectionTypes), '?'));
- $where .= ' OR item_type IN ('.$placeholders.'))';
- $queryArgs = $collectionTypes;
+ if (!in_array($itemType, $collectionTypes)) {
+ $itemTypes = array_merge(array($itemType), $collectionTypes);
+ } else {
+ $itemTypes = $collectionTypes;
+ }
+ $placeholders = join(',', array_fill(0, count($itemTypes), '?'));
+ $where .= ' WHERE item_type IN ('.$placeholders.'))';
+ $queryArgs = $itemTypes;
} else {
$where = ' WHERE `item_type` = ?';
$queryArgs = array($itemType);
@@ -580,7 +588,7 @@ class Share {
}
}
$queryArgs[] = $item;
- if ($includeCollections && $collectionTypes = self::getCollectionItemTypes($itemType)) {
+ if ($includeCollections && $collectionTypes) {
$placeholders = join(',', array_fill(0, count($collectionTypes), '?'));
$where .= ' OR item_type IN ('.$placeholders.'))';
$queryArgs = array_merge($queryArgs, $collectionTypes);
@@ -689,7 +697,7 @@ class Share {
}
}
// Check if this is a collection of the requested item type
- if ($includeCollections && in_array($row['item_type'], $collectionTypes)) {
+ if ($includeCollections && $collectionTypes && in_array($row['item_type'], $collectionTypes)) {
if (($collectionBackend = self::getBackend($row['item_type'])) && $collectionBackend instanceof Share_Backend_Collection) {
// Collections can be inside collections, check if the item is a collection
if (isset($item) && $row['item_type'] == $itemType && $row[$column] == $item) {