*/ public static function integration_definitions() { return array( 'cf7' => array( 'label' => 'Contact Form 7', 'file' => 'class-ascue-integration-cf7.php', 'class' => 'Ascue_Integration_CF7', ), 'wpforms' => array( 'label' => 'WPForms', 'file' => 'class-ascue-integration-wpforms.php', 'class' => 'Ascue_Integration_WPForms', ), 'gravity_forms' => array( 'label' => 'Gravity Forms', 'file' => 'class-ascue-integration-gravity-forms.php', 'class' => 'Ascue_Integration_Gravity_Forms', ), 'elementor_pro' => array( 'label' => 'Elementor Pro', 'file' => 'class-ascue-integration-elementor.php', 'class' => 'Ascue_Integration_Elementor', ), ); } /** * Whether the form plugin behind an integration is active. * * @param string $id Integration id. * @return bool */ public static function is_form_plugin_active( $id ) { switch ( $id ) { case 'cf7': return defined( 'WPCF7_VERSION' ) && class_exists( 'WPCF7_Submission' ); case 'wpforms': return defined( 'WPFORMS_VERSION' ) && function_exists( 'wpforms' ); case 'gravity_forms': return class_exists( 'GFForms' ) && class_exists( 'GFCommon' ); case 'elementor_pro': return defined( 'ELEMENTOR_PRO_VERSION' ) || class_exists( '\ElementorPro\Plugin' ); } return false; } /** * Loads and registers each integration whose form plugin is active and * which the site owner has not switched off. * * @return void */ public static function load_integrations() { require_once ASCUE_PLUGIN_DIR . 'includes/integrations/class-ascue-integration.php'; foreach ( self::integration_definitions() as $id => $definition ) { if ( ! self::is_form_plugin_active( $id ) || ! Ascue_Settings::is_integration_enabled( $id ) ) { continue; } require_once ASCUE_PLUGIN_DIR . 'includes/integrations/' . $definition['file']; $class = $definition['class']; $integration = new $class(); $integration->register(); } } }