diff options
author | Morris Jobke <hey@morrisjobke.de> | 2018-05-28 11:20:18 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2018-05-28 11:20:18 +0200 |
commit | 8889220f55b61c7d7d9c4bbcab367a20c9bbce72 (patch) | |
tree | 1e4c0968b1b0fb5047a64f1265210b1068f008fe | |
parent | 5536d1718135c5a92856e27690f09c317953389e (diff) | |
parent | d33834f07a274889cb174f4117dccd6f0e5f61d3 (diff) | |
download | nextcloud-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.php | 8 | ||||
-rw-r--r-- | lib/private/Preview/Watcher.php | 10 | ||||
-rw-r--r-- | lib/private/Preview/WatcherConnector.php | 2 |
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'); } } } |