summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorChristoph Wurst <ChristophWurst@users.noreply.github.com>2021-02-10 16:13:06 +0100
committerGitHub <noreply@github.com>2021-02-10 16:13:06 +0100
commit039ecbdcf9d0798b612b6cb02203c0cd6e930100 (patch)
tree8f06a5c07f9f2f7473b906634f6e2d288b411528 /lib
parent2f26ff40e9aaabd1c8cc2167dea2158a22b1961f (diff)
parent0a28440bf62d7f0a29652265864f058c18632a7f (diff)
downloadnextcloud-server-039ecbdcf9d0798b612b6cb02203c0cd6e930100.tar.gz
nextcloud-server-039ecbdcf9d0798b612b6cb02203c0cd6e930100.zip
Merge pull request #25560 from nextcloud/enhancement/pure-psr-event
Make our event base class independent of Symfony and follow PSR
Diffstat (limited to 'lib')
-rw-r--r--lib/public/EventDispatcher/Event.php37
1 files changed, 35 insertions, 2 deletions
diff --git a/lib/public/EventDispatcher/Event.php b/lib/public/EventDispatcher/Event.php
index 8e6a5217af9..b07efba0f19 100644
--- a/lib/public/EventDispatcher/Event.php
+++ b/lib/public/EventDispatcher/Event.php
@@ -26,7 +26,7 @@ declare(strict_types=1);
namespace OCP\EventDispatcher;
-use Symfony\Contracts\EventDispatcher\Event as SymfonyEvent;
+use Psr\EventDispatcher\StoppableEventInterface;
/**
* Base event class for the event dispatcher service
@@ -34,9 +34,21 @@ use Symfony\Contracts\EventDispatcher\Event as SymfonyEvent;
* Typically this class isn't instantiated directly but sub classed for specific
* event types
*
+ * This class extended \Symfony\Contracts\EventDispatcher\Event until 21.0, since
+ * 22.0.0 this class directly implements the PSR StoppableEventInterface and no
+ * longer relies on Symfony. This transition does not come with any changes in API,
+ * the class has the same methods and behavior before and after this change.
+ *
* @since 17.0.0
*/
-class Event extends SymfonyEvent {
+class Event implements StoppableEventInterface {
+
+ /**
+ * @var bool
+ *
+ * @since 22.0.0
+ */
+ private $propagationStopped = false;
/**
* Compatibility constructor
@@ -51,4 +63,25 @@ class Event extends SymfonyEvent {
*/
public function __construct() {
}
+
+ /**
+ * Stops the propagation of the event to further event listeners
+ *
+ * @return void
+ *
+ * @since 22.0.0
+ */
+ public function stopPropagation(): void {
+ $this->propagationStopped = true;
+ }
+
+ /**
+ * {@inheritDoc}
+ *
+ * @since 22.0.0
+ * @see \Psr\EventDispatcher\StoppableEventInterface
+ */
+ public function isPropagationStopped(): bool {
+ return $this->propagationStopped;
+ }
}