summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBjörn Schießle <schiessle@owncloud.com>2012-10-24 13:09:43 +0200
committerBjörn Schießle <schiessle@owncloud.com>2012-10-24 13:11:29 +0200
commit1d200c554fbd86336422fd46b11166869e66474d (patch)
tree9933f3b14f4218d85cf7710d8b4a744cda5cef18
parent916e0fc343e176233ac121ac51220dce660b1a36 (diff)
downloadnextcloud-server-1d200c554fbd86336422fd46b11166869e66474d.tar.gz
nextcloud-server-1d200c554fbd86336422fd46b11166869e66474d.zip
Shared files are not stored in the file cache. Therefore we need to
use the share table from the db to find the item source if the public link re-shares a already shared file.
-rw-r--r--apps/files_sharing/public.php19
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) {