'HubSpot', 'tally' => 'Tally', 'typeform' => 'Typeform', 'calendly' => 'Calendly', ); /** * Hooks. */ public function register() { add_action( 'plugins_loaded', array( $this, 'load' ), 20 ); /** * Generic entry point for custom forms: * do_action( 'dealroot_capture', 'my-form', 'Contact', array( array( 'label' => 'Email', 'value' => '...' ) ) ); */ add_action( 'dealroot_capture', array( $this, 'capture_custom' ), 10, 3 ); } /** * Instantiates available integrations. */ public function load() { foreach ( self::integrations() as $class ) { if ( $class::is_available() ) { ( new $class() )->register(); } } } /** * Integration classes. * * @return string[] */ public static function integrations() { /** * Filters the list of form integrations. * * @param string[] $classes Class names extending Dealroot\Forms\Integration. */ return apply_filters( 'dealroot_form_integrations', array( Contact_Form_7::class, Elementor::class, WPForms::class, Gravity_Forms::class, Fluent_Forms::class, Ninja_Forms::class, Formidable::class, Forminator::class, JetFormBuilder::class, Everest_Forms::class, WS_Form::class, SureForms::class, MetForm::class, HappyForms::class, Jetpack_Forms::class, Kadence_Forms::class, Spectra_Forms::class, Otter_Forms::class, Divi::class, Bricks::class, Beaver_Builder::class, Thrive::class, MC4WP::class, MailPoet::class, Ultimate_Member::class, WooCommerce::class, ) ); } /** * Handles the dealroot_capture action. * * @param string $form_id Form identifier. * @param string $form_name Form title. * @param array $fields Fields with label, name, type, value. */ public function capture_custom( $form_id, $form_name = '', $fields = array() ) { Capture::submission( 'custom', (string) $form_id, (string) $form_name, (array) $fields ); } }