diff options
Diffstat (limited to 'lib/public/EventDispatcher/Event.php')
-rw-r--r-- | lib/public/EventDispatcher/Event.php | 37 |
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; + } } |