aboutsummaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorSam Tuke <samtuke@owncloud.com>2012-07-03 18:17:32 +0100
committerSam Tuke <samtuke@owncloud.com>2012-07-03 18:17:32 +0100
commitb1c9785eb3fec9bc12dab8e4984b0b45880e7fa6 (patch)
tree5467788a76be25b2a26ed5a75d2e1058573737d6 /apps
parenta775deaf22ee803ae2ff0dbe1068229d9c819232 (diff)
parentaec6eea235526644be4e0642dd59a3b5f8e9c0e3 (diff)
downloadnextcloud-server-b1c9785eb3fec9bc12dab8e4984b0b45880e7fa6.tar.gz
nextcloud-server-b1c9785eb3fec9bc12dab8e4984b0b45880e7fa6.zip
Merge branch 'master' of gitorious.org:owncloud/owncloud
Conflicts: apps/files_versions/lib/versions.php
Diffstat (limited to 'apps')
-rw-r--r--apps/files_versions/ajax/rollbackVersion.php2
-rw-r--r--apps/files_versions/lib/versions.php30
2 files changed, 20 insertions, 12 deletions
diff --git a/apps/files_versions/ajax/rollbackVersion.php b/apps/files_versions/ajax/rollbackVersion.php
index 127592f3b58..8d1092f8b8e 100644
--- a/apps/files_versions/ajax/rollbackVersion.php
+++ b/apps/files_versions/ajax/rollbackVersion.php
@@ -2,8 +2,6 @@
OCP\JSON::checkAppEnabled('files_versions');
-require_once('apps/files_versions/versions.php');
-
$userDirectory = "/".OCP\USER::getUser()."/files";
$file = $_GET['file'];
diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php
index af7ae11a258..fb78e0a56c0 100644
--- a/apps/files_versions/lib/versions.php
+++ b/apps/files_versions/lib/versions.php
@@ -75,6 +75,11 @@ class Storage {
*/
public 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);
@@ -86,8 +91,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;
}
@@ -102,7 +112,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;
}
@@ -123,10 +133,10 @@ 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
- $this->expire($filename);
+ Storage::expire($filename);
}
}
@@ -134,7 +144,7 @@ class Storage {
/**
* rollback to an old version of a file.
*/
- public function rollback( $filename, $revision ) {
+ public static function rollback($filename,$revision) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
if (\OCP\App::isEnabled('files_sharing') && $source = \OC_Share::getSource('/'.\OCP\User::getUser().'/files'.$filename)) {
@@ -149,11 +159,11 @@ class Storage {
$filesfoldername=\OCP\Config::getSystemValue('datadirectory').'/'. $uid .'/files';
// rollback
- if ( copy( $versionsFolderName.'/'.$filename.'.v'.$revision, $filesfoldername.'/'.$filename ) ) {
+ if ( @copy($versionsFolderName.'/'.$filename.'.v'.$revision,$filesfoldername.'/'.$filename) ) {
return true;
- } else {
+ }else{
return false;
@@ -271,7 +281,7 @@ class Storage {
/**
* @brief Erase a file's versions which exceed the set quota
*/
- public function expire( $filename ) {
+ public static function expire($filename) {
if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
if (\OCP\App::isEnabled('files_sharing') && $source = \OC_Share::getSource('/'.\OCP\User::getUser().'/files'.$filename)) {
@@ -295,7 +305,7 @@ class Storage {
foreach( $deleteItems as $de ) {
- $this->view->unlink( $versionsFolderName.'/'.$filename.'.v'.$de );
+ unlink( $versionsFolderName.'/'.$filename.'.v'.$de );
}
}
@@ -327,7 +337,7 @@ class Storage {
if(Storage::isversioned($rel_path)) {
$versions = Storage::getVersions($rel_path);
foreach ($versions as $v){
- $this->view->unlink( $abs_path . $v['version'] );
+ unlink($abs_path . $v['version']);
}
}
}