diff --git a/apps/files_versions/lib/Storage.php b/apps/files_versions/lib/Storage.php index 217bf02fd39a5..401544cc5d746 100644 --- a/apps/files_versions/lib/Storage.php +++ b/apps/files_versions/lib/Storage.php @@ -337,6 +337,9 @@ public static function rollback($file, $revision) { 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 @@ public static function rollback($file, $revision) { 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 be462d9c935c8..0c0531dff9466 100644 --- a/lib/private/Preview/Watcher.php +++ b/lib/private/Preview/Watcher.php @@ -49,6 +49,10 @@ public function __construct(IAppData $appData) { } public function postWrite(Node $node) { + $this->deleteNode($node); + } + + protected function deleteNode(Node $node) { // We only handle files if ($node instanceof Folder) { return; @@ -61,4 +65,10 @@ public function postWrite(Node $node) { //Nothing to do } } + + 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 bf9e6c29e4f51..f374b909d8f2c 100644 --- a/lib/private/Preview/WatcherConnector.php +++ b/lib/private/Preview/WatcherConnector.php @@ -60,6 +60,8 @@ public function connectWatcher() { $this->root->listen('\OC\Files', 'postWrite', function (Node $node) { $this->getWatcher()->postWrite($node); }); + + \OC_Hook::connect('\OCP\Versions', 'rollback', $this->getWatcher(), 'versionRollback'); } } }