diff --git a/app/Bus/Handlers/Events/Component/CleanupComponentSubscriptionsHandler.php b/app/Bus/Handlers/Events/Component/CleanupComponentSubscriptionsHandler.php new file mode 100644 index 00000000..5c64caf7 --- /dev/null +++ b/app/Bus/Handlers/Events/Component/CleanupComponentSubscriptionsHandler.php @@ -0,0 +1,40 @@ + + */ +class CleanupComponentSubscriptionsHandler +{ + /** + * Handle the event. + * + * @param \CachetHQ\Cachet\Bus\Events\Component\ComponentWasRemovedEvent $event + * + * @return void + */ + public function handle(ComponentWasRemovedEvent $event) + { + $component = $event->component; + $subscription = Subscription::forComponent($component->id); + + // Cleanup the subscriptions. + $subscription->delete(); + } +} diff --git a/app/Foundation/Providers/EventServiceProvider.php b/app/Foundation/Providers/EventServiceProvider.php index f9f02494..7888cc54 100644 --- a/app/Foundation/Providers/EventServiceProvider.php +++ b/app/Foundation/Providers/EventServiceProvider.php @@ -34,7 +34,7 @@ class EventServiceProvider extends ServiceProvider // ], 'CachetHQ\Cachet\Bus\Events\Component\ComponentWasRemovedEvent' => [ - // + 'CachetHQ\Cachet\Bus\Handlers\Events\Component\CleanupComponentSubscriptionsHandler', ], 'CachetHQ\Cachet\Bus\Events\Component\ComponentWasUpdatedEvent' => [ 'CachetHQ\Cachet\Bus\Handlers\Events\Component\SendComponentUpdateEmailNotificationHandler', diff --git a/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php b/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php index b782fd05..642a98b1 100644 --- a/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php +++ b/tests/Bus/Events/Component/ComponentWasRemovedEventTest.php @@ -18,7 +18,7 @@ class ComponentWasRemovedEventTest extends AbstractComponentEventTestCase { protected function objectHasHandlers() { - return false; + return true; } protected function getObjectAndParams()