[Pkg-owncloud-commits] [owncloud] 12/34: don't move versions if only the mount point was renamed

David Prévot taffit at moszumanska.debian.org
Fri Nov 7 11:44:11 UTC 2014


This is an automated email from the git hooks/post-receive script.

taffit pushed a commit to branch master
in repository owncloud.

commit 840f5487aa0354db640deb67e64d97853b194e98
Author: Bjoern Schiessle <schiessle at owncloud.com>
Date:   Fri Oct 31 16:42:54 2014 +0100

    don't move versions if only the mount point was renamed
---
 apps/files_versions/lib/hooks.php      | 10 ++++++++
 apps/files_versions/tests/versions.php | 43 ++++++++++++++++++++++++++++++++++
 2 files changed, 53 insertions(+)

diff --git a/apps/files_versions/lib/hooks.php b/apps/files_versions/lib/hooks.php
index 024cb6a..5398046 100644
--- a/apps/files_versions/lib/hooks.php
+++ b/apps/files_versions/lib/hooks.php
@@ -115,6 +115,16 @@ class Hooks {
 	public static function pre_renameOrCopy_hook($params) {
 		if (\OCP\App::isEnabled('files_versions')) {
 
+			// if we rename a movable mount point, then the versions don't have
+			// to be renamed
+			$absOldPath = \OC\Files\Filesystem::normalizePath('/' . \OCP\User::getUser() . '/files' . $params['oldpath']);
+			$manager = \OC\Files\Filesystem::getMountManager();
+			$mount = $manager->find($absOldPath);
+			$internalPath = $mount->getInternalPath($absOldPath);
+			if ($internalPath === '' and $mount instanceof \OC\Files\Mount\MoveableMount) {
+				return;
+			}
+
 			$view = new \OC\Files\View(\OCP\User::getUser() . '/files');
 			if ($view->file_exists($params['newpath'])) {
 				Storage::store($params['newpath']);
diff --git a/apps/files_versions/tests/versions.php b/apps/files_versions/tests/versions.php
index 6dfba6b..761cc07 100644
--- a/apps/files_versions/tests/versions.php
+++ b/apps/files_versions/tests/versions.php
@@ -288,6 +288,49 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase {
 		\OC\Files\Filesystem::unlink('/folder1/folder2/test.txt');
 	}
 
+	function testRenameSharedFile() {
+
+		\OC\Files\Filesystem::file_put_contents("test.txt", "test file");
+
+		$fileInfo = \OC\Files\Filesystem::getFileInfo('test.txt');
+
+		$t1 = time();
+		// second version is two weeks older, this way we make sure that no
+		// version will be expired
+		$t2 = $t1 - 60 * 60 * 24 * 14;
+
+		$this->rootView->mkdir(self::USERS_VERSIONS_ROOT);
+		// create some versions
+		$v1 = self::USERS_VERSIONS_ROOT . '/test.txt.v' . $t1;
+		$v2 = self::USERS_VERSIONS_ROOT . '/test.txt.v' . $t2;
+		// the renamed versions should not exist! Because we only moved the mount point!
+		$v1Renamed = self::USERS_VERSIONS_ROOT . '/test2.txt.v' . $t1;
+		$v2Renamed = self::USERS_VERSIONS_ROOT . '/test2.txt.v' . $t2;
+
+		$this->rootView->file_put_contents($v1, 'version1');
+		$this->rootView->file_put_contents($v2, 'version2');
+
+		\OCP\Share::shareItem('file', $fileInfo['fileid'], \OCP\Share::SHARE_TYPE_USER, self::TEST_VERSIONS_USER2, OCP\PERMISSION_ALL);
+
+		self::loginHelper(self::TEST_VERSIONS_USER2);
+
+		$this->assertTrue(\OC\Files\Filesystem::file_exists('test.txt'));
+
+		// execute rename hook of versions app
+		\OC\Files\Filesystem::rename('test.txt', 'test2.txt');
+
+		self::loginHelper(self::TEST_VERSIONS_USER);
+
+		$this->assertTrue($this->rootView->file_exists($v1));
+		$this->assertTrue($this->rootView->file_exists($v2));
+
+		$this->assertFalse($this->rootView->file_exists($v1Renamed));
+		$this->assertFalse($this->rootView->file_exists($v2Renamed));
+
+		//cleanup
+		\OC\Files\Filesystem::unlink('/test.txt');
+	}
+
 	function testCopy() {
 
 		\OC\Files\Filesystem::file_put_contents("test.txt", "test file");

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-owncloud/owncloud.git



More information about the Pkg-owncloud-commits mailing list