don't move versions if only the mount point was renamed
This commit is contained in:
parent
206cb5ba63
commit
ebe1d3df0a
2 changed files with 53 additions and 0 deletions
|
@ -115,6 +115,16 @@ class Hooks {
|
||||||
public static function pre_renameOrCopy_hook($params) {
|
public static function pre_renameOrCopy_hook($params) {
|
||||||
if (\OCP\App::isEnabled('files_versions')) {
|
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');
|
$view = new \OC\Files\View(\OCP\User::getUser() . '/files');
|
||||||
if ($view->file_exists($params['newpath'])) {
|
if ($view->file_exists($params['newpath'])) {
|
||||||
Storage::store($params['newpath']);
|
Storage::store($params['newpath']);
|
||||||
|
|
|
@ -288,6 +288,49 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase {
|
||||||
\OC\Files\Filesystem::unlink('/folder1/folder2/test.txt');
|
\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() {
|
function testCopy() {
|
||||||
|
|
||||||
\OC\Files\Filesystem::file_put_contents("test.txt", "test file");
|
\OC\Files\Filesystem::file_put_contents("test.txt", "test file");
|
||||||
|
|
Loading…
Reference in a new issue