*/ class MailProviderListener implements IEventListener { public function __construct( private IAppConfig $config, ) { } public function handle(Event $event): void { /** @var DeclarativeSettingsGetValueEvent|DeclarativeSettingsSetValueEvent $event */ if ($event->getApp() !== Application::APP_ID) { return; } if ($event instanceof DeclarativeSettingsGetValueEvent) { $this->handleGetValue($event); return; } if ($event instanceof DeclarativeSettingsSetValueEvent) { $this->handleSetValue($event); return; } } private function handleGetValue(DeclarativeSettingsGetValueEvent $event): void { if ($event->getFieldId() === 'mail_providers_enabled') { $event->setValue((int)$this->config->getValueBool('core', 'mail_providers_enabled', true)); } } private function handleSetValue(DeclarativeSettingsSetValueEvent $event): void { if ($event->getFieldId() === 'mail_providers_enabled') { $this->config->setValueBool('core', 'mail_providers_enabled', (bool)$event->getValue()); $event->stopPropagation(); } } }