diff options
author | Björn Schießle <bjoern@schiessle.org> | 2012-11-26 20:47:45 +0400 |
---|---|---|
committer | Björn Schießle <bjoern@schiessle.org> | 2012-11-26 20:47:45 +0400 |
commit | d6bc7757abd2aa21cc8192ec6292f91177438690 (patch) | |
tree | 5e88c862a7bf606e7c546183fd71a28ea25889bf | |
parent | 94db6c64a9d79e1cade6d0aae1602852be39b41c (diff) | |
parent | 1b4f24915742f9aaaf03041a972c89be5973c9f2 (diff) |
Merge pull request #581 from schiesbn/add_user_to_fscache
make sure to add the right user as owner of a file to the file cache table
-rw-r--r-- | apps/files_sharing/lib/sharedstorage.php | 21 | ||||
-rw-r--r-- | lib/filecache.php | 1 |
2 files changed, 15 insertions, 7 deletions
diff --git a/apps/files_sharing/lib/sharedstorage.php b/apps/files_sharing/lib/sharedstorage.php index d2489f9cbad..de41750f1da 100644 --- a/apps/files_sharing/lib/sharedstorage.php +++ b/apps/files_sharing/lib/sharedstorage.php @@ -112,12 +112,9 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { if ($path == '' || $path == '/' || !$this->isCreatable(dirname($path))) { return false; } else if ($source = $this->getSourcePath($path)) { - $parts = explode('/', $source, 4); - $user = $parts[1]; - $intPath = '/'.$parts[3]; $storage = OC_Filesystem::getStorage($source); if( ($storage->mkdir($this->getInternalPath($source))) ) { - OC_FileCache::put($intPath ,array('user'=>$user), '/'.$user.'/files'); + $this->updateFSCache($path); return true; } } @@ -308,7 +305,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { $intPath = '/'.$parts[3]; $storage = OC_Filesystem::getStorage($source); if( ( $result = $storage->file_put_contents($this->getInternalPath($source), $data) ) ) { - OC_FileCache::put($intPath ,array('user'=>$user), '/'.$user.'/files'); + $this->updateFSCache($path); return $result; } } @@ -412,7 +409,7 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { $intPath = '/'.$parts[3];
if ( $write && $storage->touch($this->getInternalPath($source)) ) {
- OC_FileCache::put($intPath ,array('user'=>$user), '/'.$user.'/files');
+ $this->updateFSCache($path);
} return $storage->fopen($this->getInternalPath($source), $mode); } @@ -467,4 +464,16 @@ class OC_Filestorage_Shared extends OC_Filestorage_Common { //TODO return false; } + + private function updateFSCache($path) { + $source = $this->getSourcePath($path); + $parts = explode('/', $source, 4); + $user = $parts[1]; + $intPath = '/'.$parts[3]; + + $mtime = $this->filemtime($path); + $size = $this->filesize($path); + $mime = $this->getMimeType($path); + OC_FileCache::put($intPath ,array('user'=>$user, 'size'=>$size, 'mtime'=>$mtime, 'mimetype'=>$mime, 'writable'=>true),'/'.$user.'/files');
+ } } diff --git a/lib/filecache.php b/lib/filecache.php index e7b5374e4a9..6a1b1f384ad 100644 --- a/lib/filecache.php +++ b/lib/filecache.php @@ -537,7 +537,6 @@ class OC_FileCache{ $fullPath = OC_Filesystem::normalizePath($root.'/'.$path); $sharedPos = strpos($fullPath, '/Shared/'); if ( $sharedPos !== false && ($source = OC_Files_Sharing_Util::getSourcePath(substr($fullPath, $sharedPos+8))) ) { - $source = OC_Files_Sharing_Util::getSourcePath(str_replace('/Shared/', '', $path)); $parts = explode('/', $source, 4); $root = '/'.$parts[1].'/files'; $path = '/'.$parts[3]; |