aboutsummaryrefslogtreecommitdiffstats
path: root/lib/private/Files/Node/HookConnector.php
diff options
context:
space:
mode:
Diffstat (limited to 'lib/private/Files/Node/HookConnector.php')
-rw-r--r--lib/private/Files/Node/HookConnector.php103
1 files changed, 80 insertions, 23 deletions
diff --git a/lib/private/Files/Node/HookConnector.php b/lib/private/Files/Node/HookConnector.php
index 1f7f194c5f7..2f2641868af 100644
--- a/lib/private/Files/Node/HookConnector.php
+++ b/lib/private/Files/Node/HookConnector.php
@@ -27,26 +27,39 @@ namespace OC\Files\Node;
use OC\Files\Filesystem;
use OC\Files\View;
use OCP\EventDispatcher\GenericEvent;
+use OCP\EventDispatcher\IEventDispatcher;
+use OCP\Files\Events\Node\BeforeNodeCopiedEvent;
+use OCP\Files\Events\Node\BeforeNodeCreatedEvent;
+use OCP\Files\Events\Node\BeforeNodeDeletedEvent;
+use OCP\Files\Events\Node\BeforeNodeReadEvent;
+use OCP\Files\Events\Node\BeforeNodeRenamedEvent;
+use OCP\Files\Events\Node\BeforeNodeTouchedEvent;
+use OCP\Files\Events\Node\BeforeNodeWrittenEvent;
+use OCP\Files\Events\Node\NodeCopiedEvent;
+use OCP\Files\Events\Node\NodeCreatedEvent;
+use OCP\Files\Events\Node\NodeDeletedEvent;
+use OCP\Files\Events\Node\NodeRenamedEvent;
+use OCP\Files\Events\Node\NodeTouchedEvent;
+use OCP\Files\Events\Node\NodeWrittenEvent;
use OCP\Files\FileInfo;
+use OCP\Files\IRootFolder;
use OCP\Util;
use Symfony\Component\EventDispatcher\EventDispatcherInterface;
class HookConnector {
- /**
- * @var Root
- */
+ /** @var IRootFolder */
private $root;
- /**
- * @var View
- */
+ /** @var View */
private $view;
- /**
- * @var FileInfo[]
- */
+ /** @var FileInfo[] */
private $deleteMetaCache = [];
+
/** @var EventDispatcherInterface */
+ private $legacyDispatcher;
+
+ /** @var IEventDispatcher */
private $dispatcher;
/**
@@ -55,9 +68,14 @@ class HookConnector {
* @param Root $root
* @param View $view
*/
- public function __construct(Root $root, View $view, EventDispatcherInterface $dispatcher) {
+ public function __construct(
+ IRootFolder $root,
+ View $view,
+ EventDispatcherInterface $legacyDispatcher,
+ IEventDispatcher $dispatcher) {
$this->root = $root;
$this->view = $view;
+ $this->legacyDispatcher = $legacyDispatcher;
$this->dispatcher = $dispatcher;
}
@@ -86,85 +104,124 @@ class HookConnector {
public function write($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'preWrite', [$node]);
- $this->dispatcher->dispatch('\OCP\Files::preWrite', new GenericEvent($node));
+ $this->legacyDispatcher->dispatch('\OCP\Files::preWrite', new GenericEvent($node));
+
+ $event = new BeforeNodeWrittenEvent($node);
+ $this->dispatcher->dispatchTyped($event);
}
public function postWrite($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'postWrite', [$node]);
- $this->dispatcher->dispatch('\OCP\Files::postWrite', new GenericEvent($node));
+ $this->legacyDispatcher->dispatch('\OCP\Files::postWrite', new GenericEvent($node));
+
+ $event = new NodeWrittenEvent($node);
+ $this->dispatcher->dispatchTyped($event);
}
public function create($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'preCreate', [$node]);
- $this->dispatcher->dispatch('\OCP\Files::preCreate', new GenericEvent($node));
+ $this->legacyDispatcher->dispatch('\OCP\Files::preCreate', new GenericEvent($node));
+
+ $event = new BeforeNodeCreatedEvent($node);
+ $this->dispatcher->dispatchTyped($event);
}
public function postCreate($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'postCreate', [$node]);
- $this->dispatcher->dispatch('\OCP\Files::postCreate', new GenericEvent($node));
+ $this->legacyDispatcher->dispatch('\OCP\Files::postCreate', new GenericEvent($node));
+
+ $event = new NodeCreatedEvent($node);
+ $this->dispatcher->dispatchTyped($event);
}
public function delete($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->deleteMetaCache[$node->getPath()] = $node->getFileInfo();
$this->root->emit('\OC\Files', 'preDelete', [$node]);
- $this->dispatcher->dispatch('\OCP\Files::preDelete', new GenericEvent($node));
+ $this->legacyDispatcher->dispatch('\OCP\Files::preDelete', new GenericEvent($node));
+
+ $event = new BeforeNodeDeletedEvent($node);
+ $this->dispatcher->dispatchTyped($event);
}
public function postDelete($arguments) {
$node = $this->getNodeForPath($arguments['path']);
unset($this->deleteMetaCache[$node->getPath()]);
$this->root->emit('\OC\Files', 'postDelete', [$node]);
- $this->dispatcher->dispatch('\OCP\Files::postDelete', new GenericEvent($node));
+ $this->legacyDispatcher->dispatch('\OCP\Files::postDelete', new GenericEvent($node));
+
+ $event = new NodeDeletedEvent($node);
+ $this->dispatcher->dispatchTyped($event);
}
public function touch($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'preTouch', [$node]);
- $this->dispatcher->dispatch('\OCP\Files::preTouch', new GenericEvent($node));
+ $this->legacyDispatcher->dispatch('\OCP\Files::preTouch', new GenericEvent($node));
+
+ $event = new BeforeNodeTouchedEvent($node);
+ $this->dispatcher->dispatchTyped($event);
}
public function postTouch($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'postTouch', [$node]);
- $this->dispatcher->dispatch('\OCP\Files::postTouch', new GenericEvent($node));
+ $this->legacyDispatcher->dispatch('\OCP\Files::postTouch', new GenericEvent($node));
+
+ $event = new NodeTouchedEvent($node);
+ $this->dispatcher->dispatchTyped($event);
}
public function rename($arguments) {
$source = $this->getNodeForPath($arguments['oldpath']);
$target = $this->getNodeForPath($arguments['newpath']);
$this->root->emit('\OC\Files', 'preRename', [$source, $target]);
- $this->dispatcher->dispatch('\OCP\Files::preRename', new GenericEvent([$source, $target]));
+ $this->legacyDispatcher->dispatch('\OCP\Files::preRename', new GenericEvent([$source, $target]));
+
+ $event = new BeforeNodeRenamedEvent($source, $target);
+ $this->dispatcher->dispatchTyped($event);
}
public function postRename($arguments) {
$source = $this->getNodeForPath($arguments['oldpath']);
$target = $this->getNodeForPath($arguments['newpath']);
$this->root->emit('\OC\Files', 'postRename', [$source, $target]);
- $this->dispatcher->dispatch('\OCP\Files::postRename', new GenericEvent([$source, $target]));
+ $this->legacyDispatcher->dispatch('\OCP\Files::postRename', new GenericEvent([$source, $target]));
+
+ $event = new NodeRenamedEvent($source, $target);
+ $this->dispatcher->dispatchTyped($event);
}
public function copy($arguments) {
$source = $this->getNodeForPath($arguments['oldpath']);
$target = $this->getNodeForPath($arguments['newpath']);
$this->root->emit('\OC\Files', 'preCopy', [$source, $target]);
- $this->dispatcher->dispatch('\OCP\Files::preCopy', new GenericEvent([$source, $target]));
+ $this->legacyDispatcher->dispatch('\OCP\Files::preCopy', new GenericEvent([$source, $target]));
+
+ $event = new BeforeNodeCopiedEvent($source, $target);
+ $this->dispatcher->dispatchTyped($event);
}
public function postCopy($arguments) {
$source = $this->getNodeForPath($arguments['oldpath']);
$target = $this->getNodeForPath($arguments['newpath']);
$this->root->emit('\OC\Files', 'postCopy', [$source, $target]);
- $this->dispatcher->dispatch('\OCP\Files::postCopy', new GenericEvent([$source, $target]));
+ $this->legacyDispatcher->dispatch('\OCP\Files::postCopy', new GenericEvent([$source, $target]));
+
+ $event = new NodeCopiedEvent($source, $target);
+ $this->dispatcher->dispatchTyped($event);
}
public function read($arguments) {
$node = $this->getNodeForPath($arguments['path']);
$this->root->emit('\OC\Files', 'read', [$node]);
- $this->dispatcher->dispatch('\OCP\Files::read', new GenericEvent([$node]));
+ $this->legacyDispatcher->dispatch('\OCP\Files::read', new GenericEvent([$node]));
+
+ $event = new BeforeNodeReadEvent($node);
+ $this->dispatcher->dispatchTyped($event);
}
private function getNodeForPath($path) {