diff --git a/apps/files_versions/lib/versions.php b/apps/files_versions/lib/versions.php index a9d51b2c58..7fadf81426 100644 --- a/apps/files_versions/lib/versions.php +++ b/apps/files_versions/lib/versions.php @@ -265,7 +265,7 @@ class Storage { $pathinfo = pathinfo($filename); $versionedFile = $pathinfo['basename']; - $dir = self::VERSIONS_ROOT . '/' . $pathinfo['dirname']; + $dir = \OC\Files\Filesystem::normalizePath(self::VERSIONS_ROOT . '/' . $pathinfo['dirname']); $dirContent = false; if ($view->is_dir($dir)) { @@ -293,7 +293,7 @@ class Storage { } else { $versions[$key]['preview'] = \OCP\Util::linkToRoute('core_ajax_versions_preview', array('file' => $userFullPath, 'version' => $timestamp)); } - $versions[$key]['path'] = $filename; + $versions[$key]['path'] = $pathinfo['dirname'] . '/' . $filename; $versions[$key]['name'] = $versionedFile; $versions[$key]['size'] = $view->filesize($dir . '/' . $entryName); } diff --git a/apps/files_versions/tests/versions.php b/apps/files_versions/tests/versions.php index 0343227635..558c8dfcb8 100644 --- a/apps/files_versions/tests/versions.php +++ b/apps/files_versions/tests/versions.php @@ -266,6 +266,40 @@ class Test_Files_Versioning extends \PHPUnit_Framework_TestCase { \OC\Files\Filesystem::unlink('test2.txt'); } + /** + * test if we find all versions and if the versions array contain + * the correct 'path' and 'name' + */ + public function testGetVersions() { + + $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; + + // create some versions + $v1 = self::USERS_VERSIONS_ROOT . '/subfolder/test.txt.v' . $t1; + $v2 = self::USERS_VERSIONS_ROOT . '/subfolder/test.txt.v' . $t2; + + $this->rootView->mkdir(self::USERS_VERSIONS_ROOT . '/subfolder/'); + + $this->rootView->file_put_contents($v1, 'version1'); + $this->rootView->file_put_contents($v2, 'version2'); + + // execute copy hook of versions app + $versions = \OCA\Files_Versions\Storage::getVersions(self::TEST_VERSIONS_USER, '/subfolder/test.txt'); + + $this->assertSame(2, count($versions)); + + foreach ($versions as $version) { + $this->assertSame('/subfolder/test.txt', $version['path']); + $this->assertSame('test.txt', $version['name']); + } + + //cleanup + $this->rootView->deleteAll(self::USERS_VERSIONS_ROOT . '/subfolder'); + } + /** * @param string $user * @param bool $create