From 48bb53030c657e1133da47765c7c778a069af665 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Thu, 7 Mar 2013 15:51:44 +0100 Subject: [PATCH 1/3] distinguish between touch and write --- apps/files_versions/lib/hooks.php | 6 ++++++ apps/files_versions/lib/versions.php | 1 + lib/files/view.php | 10 +++++++++- 3 files changed, 16 insertions(+), 1 deletion(-) diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php index 7891b20e92f..6e81286052f 100644 --- a/apps/files_versions/lib/hooks.php +++ b/apps/files_versions/lib/hooks.php @@ -21,6 +21,12 @@ class Hooks { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { $path = $params[\OC\Files\Filesystem::signal_param_path]; + $pos = strrpos($path, '.part'); + if ($pos) { + error_log("old path: $path"); + $path = substr($path, 0, $pos); + error_log("new path: $path"); + } if($path<>'') { Storage::store($path); } diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index c37133cf32c..274f38095db 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -107,6 +107,7 @@ class Storage { // store a new version of a file $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename)); + error_log("version created!"); $versionsSize = self::getVersionsSize($uid); if ( $versionsSize === false || $versionsSize < 0 ) { $versionsSize = self::calculateSize($uid); diff --git a/lib/files/view.php b/lib/files/view.php index 3e2cb080e1d..59339ff2071 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -245,7 +245,14 @@ class View { if (!is_null($mtime) and !is_numeric($mtime)) { $mtime = strtotime($mtime); } - return $this->basicOperation('touch', $path, array('write'), $mtime); + + $hooks = array('touch'); + + if (!$this->file_exists($path)) { + $hooks[] = 'write'; + } + + return $this->basicOperation('touch', $path, $hooks, $mtime); } public function file_get_contents($path) { @@ -596,6 +603,7 @@ class View { if ($path == null) { return false; } + foreach ($hooks as $h) if ($h == "write") error_log("write triggered by $operation for $path"); $run = $this->runHooks($hooks, $path); list($storage, $internalPath) = Filesystem::resolvePath($absolutePath . $postFix); if ($run and $storage) { From 45869afa5ac718e11c3d2e3bccdb501a022cfc24 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 8 Mar 2013 10:51:28 +0100 Subject: [PATCH 2/3] remove debug output --- apps/files_versions/lib/versions.php | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 274f38095db..79b16f2586f 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -61,7 +61,7 @@ class Storage { } return false; } - + /** * write to the database how much space is in use for versions * @@ -107,7 +107,6 @@ class Storage { // store a new version of a file $users_view->copy('files'.$filename, 'files_versions'.$filename.'.v'.$users_view->filemtime('files'.$filename)); - error_log("version created!"); $versionsSize = self::getVersionsSize($uid); if ( $versionsSize === false || $versionsSize < 0 ) { $versionsSize = self::calculateSize($uid); From 8d26400cb5427763b0562da8799bea52f4eae21e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bj=C3=B6rn=20Schie=C3=9Fle?= Date: Fri, 8 Mar 2013 11:27:25 +0100 Subject: [PATCH 3/3] remove some debug output; move code to the right function --- apps/files_versions/lib/hooks.php | 6 ------ apps/files_versions/lib/versions.php | 8 ++++++++ lib/files/view.php | 2 +- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php index 6e81286052f..7891b20e92f 100644 --- a/apps/files_versions/lib/hooks.php +++ b/apps/files_versions/lib/hooks.php @@ -21,12 +21,6 @@ class Hooks { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { $path = $params[\OC\Files\Filesystem::signal_param_path]; - $pos = strrpos($path, '.part'); - if ($pos) { - error_log("old path: $path"); - $path = substr($path, 0, $pos); - error_log("new path: $path"); - } if($path<>'') { Storage::store($path); } diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index 79b16f2586f..20611c61ec7 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -82,6 +82,14 @@ class Storage { */ public static function store($filename) { if(\OCP\Config::getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') { + + // if the file gets streamed we need to remove the .part extension + // to get the right target + $ext = pathinfo($filename, PATHINFO_EXTENSION); + if ($ext === 'part') { + $filename = substr($filename, 0, strlen($filename)-5); + } + list($uid, $filename) = self::getUidAndFilename($filename); $files_view = new \OC\Files\View('/'.$uid .'/files'); diff --git a/lib/files/view.php b/lib/files/view.php index 59339ff2071..fe753342b6c 100644 --- a/lib/files/view.php +++ b/lib/files/view.php @@ -603,7 +603,7 @@ class View { if ($path == null) { return false; } - foreach ($hooks as $h) if ($h == "write") error_log("write triggered by $operation for $path"); + $run = $this->runHooks($hooks, $path); list($storage, $internalPath) = Filesystem::resolvePath($absolutePath . $postFix); if ($run and $storage) {