summaryrefslogtreecommitdiffstats
path: root/apps/files_versions
diff options
context:
space:
mode:
authorBjoern Schiessle <schiessle@owncloud.com>2012-07-03 18:01:05 +0200
committerBjoern Schiessle <schiessle@owncloud.com>2012-07-03 18:25:49 +0200
commitaec6eea235526644be4e0642dd59a3b5f8e9c0e3 (patch)
tree82ca399c610bed73d6c87d77aa505021a19f5098 /apps/files_versions
parent4bc9e4e012fa0ee4300ec26d020d2b27b032ff6a (diff)
downloadnextcloud-server-aec6eea235526644be4e0642dd59a3b5f8e9c0e3.tar.gz
nextcloud-server-aec6eea235526644be4e0642dd59a3b5f8e9c0e3.zip
use filesystem abstraction layer to copy file versions
Diffstat (limited to 'apps/files_versions')
-rw-r--r--apps/files_versions/versions.php14
1 files changed, 11 insertions, 3 deletions
diff --git a/apps/files_versions/versions.php b/apps/files_versions/versions.php
index 7ed5f257505..1a1a2e9ecf8 100644
--- a/apps/files_versions/versions.php
+++ b/apps/files_versions/versions.php
@@ -68,6 +68,9 @@ class Storage {
*/
public static function store($filename) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
+ $files_view = \OCP\Files::getStorage("files");
+ $users_view = \OCP\Files::getStorage("files_versions");
+ $users_view->chroot(\OCP\User::getUser().'/');
if (\OCP\App::isEnabled('files_sharing') && $source = \OC_Share::getSource('/'.\OCP\User::getUser().'/files'.$filename)) {
$pos = strpos($source, '/files', 1);
$uid = substr($source, 1, $pos - 1);
@@ -79,8 +82,13 @@ class Storage {
$filesfoldername=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/files';
Storage::init();
+ //check if source file already exist as version to avoid recursions.
+ if ($users_view->file_exists($filename)) {
+ return false;
+ }
+
// check if filename is a directory
- if(is_dir($filesfoldername.'/'.$filename)){
+ if($files_view->is_dir($filename)){
return false;
}
@@ -95,7 +103,7 @@ class Storage {
}
// check filesize
- if(filesize($filesfoldername.'/'.$filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)){
+ if($files_view->filesize($filename)>\OCP\Config::getSystemValue('files_versionsmaxfilesize', Storage::DEFAULTMAXFILESIZE)){
return false;
}
@@ -116,7 +124,7 @@ class Storage {
if(!file_exists($versionsFolderName.'/'.$info['dirname'])) mkdir($versionsFolderName.'/'.$info['dirname'],0700,true);
// store a new version of a file
- copy($filesfoldername.'/'.$filename,$versionsFolderName.'/'.$filename.'.v'.time());
+ $users_view->copy('files'.$filename, 'versions'.$filename.'.v'.time());
// expire old revisions if necessary
Storage::expire($filename);