From 0d2d0bdc113b501b0f284a017a457674354d413e Mon Sep 17 00:00:00 2001 From: Andy Miller Date: Mon, 20 Oct 2025 11:30:44 -0600 Subject: [PATCH] Solution for handling Event errors on upgrade Signed-off-by: Andy Miller --- .../src/RocketTheme/Toolbox/Event/Event.php | 38 ++++++++++++++++++- 1 file changed, 37 insertions(+), 1 deletion(-) diff --git a/system/src/RocketTheme/Toolbox/Event/Event.php b/system/src/RocketTheme/Toolbox/Event/Event.php index 412790c7a..20699f74a 100644 --- a/system/src/RocketTheme/Toolbox/Event/Event.php +++ b/system/src/RocketTheme/Toolbox/Event/Event.php @@ -6,6 +6,42 @@ use RocketTheme\Toolbox\ArrayTraits\ArrayAccess; use RocketTheme\Toolbox\ArrayTraits\Constructor; use RocketTheme\Toolbox\ArrayTraits\Export; +if (!class_exists(__NAMESPACE__ . '\\BaseEvent', false)) { + if (class_exists(\Symfony\Contracts\EventDispatcher\Event::class)) { + /** + * @internal Maps to the Symfony Contracts event when available. + */ + abstract class BaseEvent extends \Symfony\Contracts\EventDispatcher\Event + { + } + } elseif (class_exists(\Symfony\Component\EventDispatcher\Event::class)) { + /** + * @internal Fallback for legacy Symfony Event dispatcher during upgrades. + */ + abstract class BaseEvent extends \Symfony\Component\EventDispatcher\Event + { + } + } else { + /** + * @internal Minimal stop-propagation implementation used as a last resort. + */ + abstract class BaseEvent + { + private bool $propagationStopped = false; + + public function isPropagationStopped(): bool + { + return $this->propagationStopped; + } + + public function stopPropagation(): void + { + $this->propagationStopped = true; + } + } + } +} + /** * Implements Symfony Event interface. * @@ -14,7 +50,7 @@ use RocketTheme\Toolbox\ArrayTraits\Export; * @license MIT * @deprecated Event classes will be removed in the future. Use PSR-14 implementation instead. */ -class Event extends \Symfony\Contracts\EventDispatcher\Event implements \ArrayAccess +class Event extends BaseEvent implements \ArrayAccess { use ArrayAccess, Constructor, Export;