diff options
author | Björn Schießle <schiessle@owncloud.com> | 2012-10-24 13:09:43 +0200 |
---|---|---|
committer | Björn Schießle <schiessle@owncloud.com> | 2012-10-24 13:11:29 +0200 |
commit | 1d200c554fbd86336422fd46b11166869e66474d (patch) | |
tree | 9933f3b14f4218d85cf7710d8b4a744cda5cef18 | |
parent | 916e0fc343e176233ac121ac51220dce660b1a36 (diff) | |
download | nextcloud-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.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) {
|