Skip to content
Snippets Groups Projects
Commit 1d200c55 authored by Björn Schießle's avatar Björn Schießle
Browse files

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.
parent 916e0fc3
No related branches found
No related tags found
No related merge requests found
......@@ -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) {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment