summaryrefslogtreecommitdiffstats
path: root/apps
diff options
context:
space:
mode:
authorVincent Petry <pvince81@owncloud.com>2015-05-29 13:15:12 +0200
committerVincent Petry <pvince81@owncloud.com>2015-05-29 13:15:12 +0200
commit9a6d253af39dba49a1397416fb448e922df8a7a1 (patch)
tree18b6c00c1cb6a4d7eebe0c48998381956f1268b7 /apps
parent173b14730556d1b32d06e6b362c65b4a6dabb178 (diff)
downloadnextcloud-server-9a6d253af39dba49a1397416fb448e922df8a7a1.tar.gz
nextcloud-server-9a6d253af39dba49a1397416fb448e922df8a7a1.zip
Abort expiration when file is gone
Sometimes a background job for versions expiration was scheduled for a file that has been moved or deleted since. This prevents showing useless warnings in the log and simply bail out.
Diffstat (limited to 'apps')
-rw-r--r--apps/files_versions/lib/storage.php6
-rw-r--r--apps/files_versions/tests/versions.php10
2 files changed, 15 insertions, 1 deletions
diff --git a/apps/files_versions/lib/storage.php b/apps/files_versions/lib/storage.php
index 98e486690b6..296cebfe058 100644
--- a/apps/files_versions/lib/storage.php
+++ b/apps/files_versions/lib/storage.php
@@ -346,7 +346,7 @@ class Storage {
*/
public static function getVersions($uid, $filename, $userFullPath = '') {
$versions = array();
- if ($filename === '') {
+ if (empty($filename)) {
return $versions;
}
// fetch for old versions
@@ -556,6 +556,10 @@ class Storage {
$config = \OC::$server->getConfig();
if($config->getSystemValue('files_versions', Storage::DEFAULTENABLED)=='true') {
list($uid, $filename) = self::getUidAndFilename($filename);
+ if (empty($filename)) {
+ // file maybe renamed or deleted
+ return false;
+ }
$versionsFileview = new \OC\Files\View('/'.$uid.'/files_versions');
// get available disk space for user
diff --git a/apps/files_versions/tests/versions.php b/apps/files_versions/tests/versions.php
index 685bf48d652..0b6bfc698d7 100644
--- a/apps/files_versions/tests/versions.php
+++ b/apps/files_versions/tests/versions.php
@@ -552,10 +552,20 @@ class Test_Files_Versioning extends \Test\TestCase {
public function testGetVersionsEmptyFile() {
// execute copy hook of versions app
$versions = \OCA\Files_Versions\Storage::getVersions(self::TEST_VERSIONS_USER, '');
+ $this->assertCount(0, $versions);
+ $versions = \OCA\Files_Versions\Storage::getVersions(self::TEST_VERSIONS_USER, null);
$this->assertCount(0, $versions);
}
+ public function testExpireNonexistingFile() {
+ $this->logout();
+ // needed to have a FS setup (the background job does this)
+ \OC_Util::setupFS(self::TEST_VERSIONS_USER);
+
+ $this->assertFalse(\OCA\Files_Versions\Storage::expire('/void/unexist.txt'));
+ }
+
public function testRestoreSameStorage() {
\OC\Files\Filesystem::mkdir('sub');
$this->doTestRestore();