diff --git a/lib/public/share.php b/lib/public/share.php
index cead8396a439c021250dbbb0390a54c62f5b7f96..a97ecff60e70646b159a1dfb284b748506f9b64c 100644
--- a/lib/public/share.php
+++ b/lib/public/share.php
@@ -448,9 +448,16 @@ class Share {
 	private static function getItems($itemType, $item = null, $shareType = null, $shareWith = null, $uidOwner = null, $format = self::FORMAT_NONE, $parameters = null, $limit = -1, $includeCollections = false, $itemShareWithBySource = false) {
 		$backend = self::getBackend($itemType);
 		// Get filesystem root to add it to the file target and remove from the file source
-		$root = \OC_Filesystem::getRoot();
-		// If includeCollections is true, find collections of this item type, e.g. a music album contains songs
-		if ($includeCollections && !isset($item) && $collectionTypes = self::getCollectionItemTypes($itemType)) {
+		if ($backend instanceof Share_Backend_File_Dependent) {
+			$root = \OC_Filesystem::getRoot();
+		} else {
+			$root = '';
+		}
+		if ($itemType == 'file' && !isset($item)) {
+			$where = 'WHERE file_target IS NOT NULL';
+			$query_args = array();
+		} else 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
 			$item_types = array_merge(array($itemType), $collectionTypes);
 			$placeholders = join(',', array_fill(0, count($item_types), '?'));
 			$where = "WHERE item_type IN ('".$placeholders."')";
@@ -574,7 +581,7 @@ class Share {
 			}
 			// TODO Check this outside of the loop
 			// Check if this is a collection of the requested item type
-			if ($row['item_type'] != $itemType) {
+			if ($row['item_type'] != $itemType && $itemType != 'file' && !isset($item)) {
 				if ($collectionBackend = self::getBackend($row['item_type'])) {
 					$row['collection'] = array('item_type' => $itemType, $column => $row[$column]);
 					// Fetch all of the children sources