diff options
-rw-r--r-- | apps/files_sharing/public.php | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/apps/files_sharing/public.php b/apps/files_sharing/public.php index 1a0f6b2cdee..a8813085d09 100644 --- a/apps/files_sharing/public.php +++ b/apps/files_sharing/public.php @@ -21,6 +21,23 @@ if (isset($_GET['token'])) { }
// Enf of backward compatibility
+function getID($path) {
+ // use the share table from the db to find the item source if the file was reshared because shared files are not stored in the file cache.
+ if (substr(OC_Filesystem::getMountPoint($path), -7, 6) == "Shared") {
+ $path_parts = explode('/', $path, 5);
+ $user = $path_parts[1];
+ $intPath = '/'.$path_parts[4];
+ $query = \OC_DB::prepare('SELECT item_source FROM *PREFIX*share WHERE uid_owner = ? AND file_target = ? ');
+ $result = $query->execute(array($user, $intPath));
+ $row = $result->fetchRow();
+ $fileSource = $row['item_source'];
+ } else {
+ $fileSource = OC_Filecache::getId($path, '');
+ }
+
+ return $fileSource;
+}
+
if (isset($_GET['file']) || isset($_GET['dir'])) {
if (isset($_GET['dir'])) {
$type = 'folder';
@@ -40,7 +57,7 @@ if (isset($_GET['file']) || isset($_GET['dir'])) { $uidOwner = substr($path, 1, strpos($path, '/', 1) - 1);
if (OCP\User::userExists($uidOwner)) {
OC_Util::setupFS($uidOwner);
- $fileSource = OC_Filecache::getId($path, '');
+ $fileSource = getId($path);
if ($fileSource != -1 && ($linkItem = OCP\Share::getItemSharedWithByLink($type, $fileSource, $uidOwner))) {
// TODO Fix in the getItems
if (!isset($linkItem['item_type']) || $linkItem['item_type'] != $type) {
|