container->set(ValueSanitizer::class, function () { return new ValueSanitizer(); }); $this->container->set(SpecialTagResolver::class, function () { return new SpecialTagResolver(); }); $this->container->set(AutomaticFieldMapper::class, function ($c) { return new AutomaticFieldMapper($c->get(ValueSanitizer::class)); }); $this->container->set(CustomFieldMapper::class, function ($c) { return new CustomFieldMapper( $c->get(ValueSanitizer::class), $c->get(SpecialTagResolver::class) ); }); $this->container->set(FieldMappingManager::class, function ($c) { return new FieldMappingManager( $c->get(AutomaticFieldMapper::class), $c->get(CustomFieldMapper::class) ); }); $this->container->set(FormProviderRegistry::class, function () { return new FormProviderRegistry(); }); $this->container->set(ElementorFormProvider::class, function ($c) { return new ElementorFormProvider( $c->get(QueueService::class), $c->get(ConnectionRepositoryInterface::class) ); }); $this->container->set(WPFormsFormProvider::class, function ($c) { return new WPFormsFormProvider( $c->get(QueueService::class), $c->get(ConnectionRepositoryInterface::class) ); }); $this->container->set(ForminatorFormProvider::class, function ($c) { return new ForminatorFormProvider( $c->get(QueueService::class), $c->get(ConnectionRepositoryInterface::class) ); }); } /** * @inheritDoc */ public function boot(): void { $registry = $this->container->get(FormProviderRegistry::class); // Register default Elementor Pro Forms provider. $registry->register($this->container->get(ElementorFormProvider::class)); // Register WPForms provider. $registry->register($this->container->get(WPFormsFormProvider::class)); // Register Forminator provider. $registry->register($this->container->get(ForminatorFormProvider::class)); // Hook to register custom third-party form providers. do_action('oneclickformsync_register_form_providers', $registry); // Get user-configured enabled form provider IDs (defaults to elementor, wpforms, forminator if not set). $enabledProviders = get_option('oneclickformsync_enabled_form_providers', null); if ($enabledProviders === null) { $enabledProviders = ['elementor', 'wpforms', 'forminator']; } $enabledProviders = is_array($enabledProviders) ? $enabledProviders : ['elementor', 'wpforms', 'forminator']; // Boot action listeners for active and allowed form providers. foreach ($registry->getAvailable() as $provider) { if (in_array($provider->getId(), $enabledProviders, true)) { $provider->register(); } } } }