diff options
Diffstat (limited to 'lib/private/Preview/Watcher.php')
-rw-r--r-- | lib/private/Preview/Watcher.php | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/lib/private/Preview/Watcher.php b/lib/private/Preview/Watcher.php new file mode 100644 index 00000000000..21f040d8342 --- /dev/null +++ b/lib/private/Preview/Watcher.php @@ -0,0 +1,63 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2016 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OC\Preview; + +use OCP\Files\FileInfo; +use OCP\Files\Folder; +use OCP\Files\IAppData; +use OCP\Files\Node; +use OCP\Files\NotFoundException; + +/** + * Class Watcher + * + * @package OC\Preview + * + * Class that will watch filesystem activity and remove previews as needed. + */ +class Watcher { + /** @var IAppData */ + private $appData; + + /** + * Watcher constructor. + * + * @param IAppData $appData + */ + public function __construct(IAppData $appData) { + $this->appData = $appData; + } + + public function postWrite(Node $node) { + $this->deleteNode($node); + } + + protected function deleteNode(FileInfo $node) { + // We only handle files + if ($node instanceof Folder) { + return; + } + + try { + if (is_null($node->getId())) { + return; + } + $folder = $this->appData->getFolder((string)$node->getId()); + $folder->delete(); + } catch (NotFoundException $e) { + //Nothing to do + } + } + + public function versionRollback(array $data) { + if (isset($data['node'])) { + $this->deleteNode($data['node']); + } + } +} |