aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Files/Node
diff options
context:
space:
mode:
authorMaxence Lange <maxence@artificial-owl.com>2024-03-08 13:08:57 -0100
committerMaxence Lange <maxence@artificial-owl.com>2024-03-08 13:09:22 -0100
commit467c84ec53511b008c7d6ac0888645a381787288 (patch)
treefe2f3471f74d70068630c9dcbba36452346d1c72 /lib/private/Files/Node
parent9522ef849771392583b51a3f03812a429a666d01 (diff)
downloadnextcloud-server-467c84ec53511b008c7d6ac0888645a381787288.tar.gz
nextcloud-server-467c84ec53511b008c7d6ac0888645a381787288.zip
feat(files): copy live photos
Signed-off-by: Maxence Lange <maxence@artificial-owl.com>
Diffstat (limited to 'lib/private/Files/Node')
-rw-r--r--lib/private/Files/Node/HookConnector.php50
1 files changed, 29 insertions, 21 deletions
diff --git a/lib/private/Files/Node/HookConnector.php b/lib/private/Files/Node/HookConnector.php
index f61eedee66e..d66c7a60664 100644
--- a/lib/private/Files/Node/HookConnector.php
+++ b/lib/private/Files/Node/HookConnector.php
@@ -6,6 +6,7 @@ declare(strict_types=1);
* @copyright Copyright (c) 2016, ownCloud, Inc.
*
* @author Arthur Schiwon <blizzz@arthur-schiwon.de>
+ * @author Maxence Lange <maxence@artificial-owl.com>
* @author Robin Appelman <robin@icewind.nl>
* @author Roeland Jago Douma <roeland@famdouma.nl>
*
@@ -30,6 +31,7 @@ use OC\Files\Filesystem;
use OC\Files\View;
use OCP\EventDispatcher\GenericEvent;
use OCP\EventDispatcher\IEventDispatcher;
+use OCP\Exceptions\AbortedEventException;
use OCP\Files\Events\Node\BeforeNodeCopiedEvent;
use OCP\Files\Events\Node\BeforeNodeCreatedEvent;
use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
@@ -46,27 +48,18 @@ use OCP\Files\Events\Node\NodeWrittenEvent;
use OCP\Files\FileInfo;
use OCP\Files\IRootFolder;
use OCP\Util;
+use Psr\Log\LoggerInterface;
class HookConnector {
- /** @var IRootFolder */
- private $root;
-
- /** @var View */
- private $view;
-
/** @var FileInfo[] */
- private $deleteMetaCache = [];
-
- /** @var IEventDispatcher */
- private $dispatcher;
+ private array $deleteMetaCache = [];
public function __construct(
- IRootFolder $root,
- View $view,
- IEventDispatcher $dispatcher) {
- $this->root = $root;
- $this->view = $view;
- $this->dispatcher = $dispatcher;
+ private IRootFolder $root,
+ private View $view,
+ private IEventDispatcher $dispatcher,
+ private LoggerInterface $logger
+ ) {
}
public function viewToNode() {
@@ -133,8 +126,13 @@ class HookConnector {
$this->root->emit('\OC\Files', 'preDelete', [$node]);
$this->dispatcher->dispatch('\OCP\Files::preDelete', new GenericEvent($node));
- $event = new BeforeNodeDeletedEvent($node, $arguments['run']);
- $this->dispatcher->dispatchTyped($event);
+ $event = new BeforeNodeDeletedEvent($node);
+ try {
+ $this->dispatcher->dispatchTyped($event);
+ } catch (AbortedEventException $e) {
+ $arguments['run'] = false;
+ $this->logger->warning('delete process aborted', ['exception' => $e]);
+ }
}
public function postDelete($arguments) {
@@ -171,8 +169,13 @@ class HookConnector {
$this->root->emit('\OC\Files', 'preRename', [$source, $target]);
$this->dispatcher->dispatch('\OCP\Files::preRename', new GenericEvent([$source, $target]));
- $event = new BeforeNodeRenamedEvent($source, $target, $arguments['run']);
- $this->dispatcher->dispatchTyped($event);
+ $event = new BeforeNodeRenamedEvent($source, $target);
+ try {
+ $this->dispatcher->dispatchTyped($event);
+ } catch (AbortedEventException $e) {
+ $arguments['run'] = false;
+ $this->logger->warning('rename process aborted', ['exception' => $e]);
+ }
}
public function postRename($arguments) {
@@ -192,7 +195,12 @@ class HookConnector {
$this->dispatcher->dispatch('\OCP\Files::preCopy', new GenericEvent([$source, $target]));
$event = new BeforeNodeCopiedEvent($source, $target);
- $this->dispatcher->dispatchTyped($event);
+ try {
+ $this->dispatcher->dispatchTyped($event);
+ } catch (AbortedEventException $e) {
+ $arguments['run'] = false;
+ $this->logger->warning('copy process aborted', ['exception' => $e]);
+ }
}
public function postCopy($arguments) {