settings_repository = $settings_repository; } /** * Create an integration manager for the free integration set. */ public function create_manager(): IntegrationManager { $secret_provider = new WordPressSecretProvider(); $token_service = new FormTokenService( $secret_provider ); $hasher = new IdentifierHasher( $secret_provider ); $spam_engine = $this->create_spam_engine( $token_service, $hasher ); $event_logger = new EventLogger( new OptionEventStore(), $this->settings_repository, $hasher ); return new IntegrationManager( array( new ContactForm7Integration( new ProtectionFieldRenderer( $token_service ), new ContactForm7ContextFactory(), new ContactForm7ResultMapper(), $spam_engine, $this->settings_repository, null, $event_logger ), new WPFormsIntegration( new ProtectionFieldRenderer( $token_service ), new WPFormsContextFactory(), new WPFormsResultMapper(), $spam_engine, $this->settings_repository, null, null, $event_logger ), new ElementorFormLiteIntegration( new ElementorFormLiteMarkupInjector( new ProtectionFieldRenderer( $token_service ) ), new ElementorFormLiteContextFactory(), new ElementorFormLiteResultMapper(), $spam_engine, $this->settings_repository, null, null, null, $event_logger ), new CommentsIntegration( new ProtectionFieldRenderer( $token_service ), new CommentsContextFactory(), new CommentsResultMapper(), $spam_engine, $this->settings_repository, null, $event_logger ), new LoginIntegration( new ProtectionFieldRenderer( $token_service ), new LoginContextFactory(), new LoginResultMapper(), $spam_engine, $this->settings_repository, null, $event_logger ), new RegistrationIntegration( new ProtectionFieldRenderer( $token_service ), new RegistrationContextFactory(), new RegistrationResultMapper(), $spam_engine, $this->settings_repository, null, $event_logger ), ) ); } /** * Create the shared Phase 2 spam engine. * * @param FormTokenService $token_service Token service. * @param IdentifierHasher $hasher Privacy-safe identifier hasher. */ private function create_spam_engine( FormTokenService $token_service, IdentifierHasher $hasher ): SpamEngine { return new SpamEngine( array( new HoneypotCheck(), new MinimumTimeCheck(), new JavaScriptTokenCheck( $token_service ), new RateLimitCheck( new WordPressTransientRateLimitStore(), $hasher ), new LinkDensityCheck(), ) ); } }