fix for share folder on external storage

This commit is contained in:
Florin Peter 2013-05-29 19:11:39 +02:00
parent ae0f37e9e2
commit d265264542
2 changed files with 33 additions and 2 deletions

View File

@ -327,6 +327,13 @@ class Hooks {
// if a folder was shared, get a list of all (sub-)folders
if ($params['itemType'] === 'folder') {
// get the path including mount point only if not a shared folder
if(strncmp($path, '/Shared' , strlen('/Shared') !== 0)) {
// get path including the the storage mount point
$path = $util->getPathWithMountPoint($params['itemSource']);
}
$allFiles = $util->getAllFiles($path);
} else {
$allFiles = array($path);
@ -402,7 +409,13 @@ class Hooks {
// if we unshare a folder we need a list of all (sub-)files
if ( $params['itemType'] === 'folder' ) {
// get the path including mount point only if not a shared folder
if(strncmp($path, '/Shared' , strlen('/Shared') !== 0)) {
// get path including the the storage mount point
$path = $util->getPathWithMountPoint($params['itemSource']);
}
$allFiles = $util->getAllFiles( $path );
} else {

View File

@ -1199,7 +1199,7 @@ class Util {
$result = array();
$content = $this->view->getDirectoryContent($this->userFilesDir . $dir);
$content = $this->view->getDirectoryContent(\OC\Files\Filesystem::normalizePath($this->userFilesDir . '/' . $dir));
// handling for re shared folders
$path_split = explode('/', $dir);
@ -1531,4 +1531,22 @@ class Util {
$this->recoverAllFiles('/', $privateKey);
}
/**
* Get the path including the storage mount point
* @param int $id
* @return string the path including the mount point like AmazonS3/folder/file.txt
*/
public function getPathWithMountPoint($id) {
list($storage, $internalPath) = \OC\Files\Cache\Cache::getById($id);
$mount = \OC\Files\Filesystem::getMountByStorageId($storage);
$mountPoint = $mount[0]->getMountPoint();
$path = \OC\Files\Filesystem::normalizePath($mountPoint.'/'.$internalPath);
// reformat the path to be relative e.g. /user/files/folder becomes /folder/
$pathSplit = explode( '/', $path );
$relativePath = implode( '/', array_slice( $pathSplit, 3 ) );
return $relativePath;
}
}