summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMorris Jobke <hey@morrisjobke.de>2018-05-28 11:20:18 +0200
committerGitHub <noreply@github.com>2018-05-28 11:20:18 +0200
commit8889220f55b61c7d7d9c4bbcab367a20c9bbce72 (patch)
tree1e4c0968b1b0fb5047a64f1265210b1068f008fe
parent5536d1718135c5a92856e27690f09c317953389e (diff)
parentd33834f07a274889cb174f4117dccd6f0e5f61d3 (diff)
downloadnextcloud-server-8889220f55b61c7d7d9c4bbcab367a20c9bbce72.tar.gz
nextcloud-server-8889220f55b61c7d7d9c4bbcab367a20c9bbce72.zip
Merge pull request #9622 from nextcloud/backport/9475/stable13
[stable13] Delete the previews when a version is restored
-rw-r--r--apps/files_versions/lib/Storage.php8
-rw-r--r--lib/private/Preview/Watcher.php10
-rw-r--r--lib/private/Preview/WatcherConnector.php2
3 files changed, 20 insertions, 0 deletions
diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php
index 4c76c5340fa..fb4b067b8bc 100644
--- a/apps/files_versions/lib/Storage.php
+++ b/apps/files_versions/lib/Storage.php
@@ -337,6 +337,9 @@ class Storage {
return false;
}
+ // Fetch the userfolder to trigger view hooks
+ $userFolder = \OC::$server->getUserFolder($uid);
+
$users_view = new View('/'.$uid);
$files_view = new View('/'. User::getUser().'/files');
@@ -375,9 +378,14 @@ class Storage {
if (self::copyFileContents($users_view, $fileToRestore, 'files' . $filename)) {
$files_view->touch($file, $revision);
Storage::scheduleExpire($uid, $file);
+
+ $node = $userFolder->get($file);
+
+ // TODO: move away from those legacy hooks!
\OC_Hook::emit('\OCP\Versions', 'rollback', array(
'path' => $filename,
'revision' => $revision,
+ 'node' => $node,
));
return true;
} else if ($versionCreated) {
diff --git a/lib/private/Preview/Watcher.php b/lib/private/Preview/Watcher.php
index 8d091b84b0e..893f60a86e5 100644
--- a/lib/private/Preview/Watcher.php
+++ b/lib/private/Preview/Watcher.php
@@ -52,6 +52,10 @@ class Watcher {
}
public function postWrite(Node $node) {
+ $this->deleteNode($node);
+ }
+
+ protected function deleteNode(Node $node) {
// We only handle files
if ($node instanceof Folder) {
return;
@@ -101,4 +105,10 @@ class Watcher {
}
}
}
+
+ public function versionRollback(array $data) {
+ if (isset($data['node'])) {
+ $this->deleteNode($data['node']);
+ }
+ }
}
diff --git a/lib/private/Preview/WatcherConnector.php b/lib/private/Preview/WatcherConnector.php
index 4e6e786cec7..735aaba41a9 100644
--- a/lib/private/Preview/WatcherConnector.php
+++ b/lib/private/Preview/WatcherConnector.php
@@ -67,6 +67,8 @@ class WatcherConnector {
$this->root->listen('\OC\Files', 'postDelete', function (Node $node) {
$this->getWatcher()->postDelete($node);
});
+
+ \OC_Hook::connect('\OCP\Versions', 'rollback', $this->getWatcher(), 'versionRollback');
}
}
}