diff options
Diffstat (limited to 'apps/files_trashbin/lib/Events')
-rw-r--r-- | apps/files_trashbin/lib/Events/BeforeNodeRestoredEvent.php | 39 | ||||
-rw-r--r-- | apps/files_trashbin/lib/Events/MoveToTrashEvent.php | 55 | ||||
-rw-r--r-- | apps/files_trashbin/lib/Events/NodeRestoredEvent.php | 21 |
3 files changed, 115 insertions, 0 deletions
diff --git a/apps/files_trashbin/lib/Events/BeforeNodeRestoredEvent.php b/apps/files_trashbin/lib/Events/BeforeNodeRestoredEvent.php new file mode 100644 index 00000000000..0bc6b37c35b --- /dev/null +++ b/apps/files_trashbin/lib/Events/BeforeNodeRestoredEvent.php @@ -0,0 +1,39 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Files_Trashbin\Events; + +use Exception; +use OCP\Files\Events\Node\AbstractNodesEvent; +use OCP\Files\Node; + +/** + * @since 28.0.0 + */ +class BeforeNodeRestoredEvent extends AbstractNodesEvent { + public function __construct( + Node $source, + Node $target, + private bool &$run, + ) { + parent::__construct($source, $target); + } + + /** + * @return never + */ + public function abortOperation(?\Throwable $ex = null) { + $this->stopPropagation(); + $this->run = false; + if ($ex !== null) { + throw $ex; + } else { + throw new Exception('Operation aborted'); + } + } +} diff --git a/apps/files_trashbin/lib/Events/MoveToTrashEvent.php b/apps/files_trashbin/lib/Events/MoveToTrashEvent.php new file mode 100644 index 00000000000..0d776b606b1 --- /dev/null +++ b/apps/files_trashbin/lib/Events/MoveToTrashEvent.php @@ -0,0 +1,55 @@ +<?php + +/** + * SPDX-FileCopyrightText: 2017 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Files_Trashbin\Events; + +use OCP\EventDispatcher\Event; +use OCP\Files\Node; + +/** + * Class MoveToTrashEvent + * + * Event to allow other apps to disable the trash bin for specific files + * + * @package OCA\Files_Trashbin\Events + * @since 28.0.0 Dispatched as a typed event + */ +class MoveToTrashEvent extends Event { + + /** @var bool */ + private $moveToTrashBin; + + public function __construct( + private Node $node, + ) { + $this->moveToTrashBin = true; + } + + /** + * get Node which will be deleted + * + * @return Node + */ + public function getNode() { + return $this->node; + } + + /** + * disable trash bin for this operation + */ + public function disableTrashBin() { + $this->moveToTrashBin = false; + } + + /** + * should the file be moved to the trash bin? + * + * @return bool + */ + public function shouldMoveToTrashBin() { + return $this->moveToTrashBin; + } +} diff --git a/apps/files_trashbin/lib/Events/NodeRestoredEvent.php b/apps/files_trashbin/lib/Events/NodeRestoredEvent.php new file mode 100644 index 00000000000..4278d6cfe95 --- /dev/null +++ b/apps/files_trashbin/lib/Events/NodeRestoredEvent.php @@ -0,0 +1,21 @@ +<?php + +declare(strict_types=1); + +/** + * SPDX-FileCopyrightText: 2023 Nextcloud GmbH and Nextcloud contributors + * SPDX-License-Identifier: AGPL-3.0-or-later + */ +namespace OCA\Files_Trashbin\Events; + +use OCP\Files\Events\Node\AbstractNodesEvent; +use OCP\Files\Node; + +/** + * @since 28.0.0 + */ +class NodeRestoredEvent extends AbstractNodesEvent { + public function __construct(Node $source, Node $target) { + parent::__construct($source, $target); + } +} |