|
|
@@ -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; |
|
|
|
} |
|
|
|
} |