[nombre, slug, tipo, integración]. * * La clave `integracion` es el slug del adaptador de ValidaFirma, o null si todavía no existe. * * @return array */ public static function catalogo() { return array( 'wpforms-lite/wpforms.php' => array( 'WPForms Lite', 'wpforms-lite', __( 'Formularios', 'validafirma' ), 'wpforms' ), 'wpforms/wpforms.php' => array( 'WPForms', 'wpforms', __( 'Formularios', 'validafirma' ), 'wpforms' ), 'elementor-pro/elementor-pro.php' => array( 'Elementor Pro', 'elementor-pro', __( 'Formularios', 'validafirma' ), 'elementor' ), 'contact-form-7/wp-contact-form-7.php' => array( 'Contact Form 7', 'contact-form-7', __( 'Formularios', 'validafirma' ), null ), 'gravityforms/gravityforms.php' => array( 'Gravity Forms', 'gravityforms', __( 'Formularios', 'validafirma' ), null ), 'fluentform/fluentform.php' => array( 'Fluent Forms', 'fluentform', __( 'Formularios', 'validafirma' ), null ), 'forminator/forminator.php' => array( 'Forminator', 'forminator', __( 'Formularios', 'validafirma' ), null ), 'ninja-forms/ninja-forms.php' => array( 'Ninja Forms', 'ninja-forms', __( 'Formularios', 'validafirma' ), null ), 'formidable/formidable.php' => array( 'Formidable Forms', 'formidable', __( 'Formularios', 'validafirma' ), null ), 'woocommerce/woocommerce.php' => array( 'WooCommerce', 'woocommerce', __( 'Tienda', 'validafirma' ), null ), 'easy-digital-downloads/easy-digital-downloads.php' => array( 'Easy Digital Downloads', 'easy-digital-downloads', __( 'Tienda', 'validafirma' ), null ), 'ameliabooking/ameliabooking.php' => array( 'Amelia', 'ameliabooking', __( 'Reservas', 'validafirma' ), null ), 'bookly-responsive-appointment-booking-tool/main.php' => array( 'Bookly', 'bookly', __( 'Reservas', 'validafirma' ), null ), 'simply-schedule-appointments/simply-schedule-appointments.php' => array( 'Simply Schedule Appointments', 'simply-schedule-appointments', __( 'Reservas', 'validafirma' ), null ), 'latepoint/latepoint.php' => array( 'LatePoint', 'latepoint', __( 'Reservas', 'validafirma' ), null ), 'learndash/learndash.php' => array( 'LearnDash', 'learndash', __( 'Cursos', 'validafirma' ), null ), 'tutor/tutor.php' => array( 'Tutor LMS', 'tutor', __( 'Cursos', 'validafirma' ), null ), ); } /** * Plugins del catálogo que están activos en el sitio. * * @return array[] Cada uno con nombre, slug, tipo, integracion e integrado (bool). */ public static function detectados() { $activos = (array) get_option( 'active_plugins', array() ); if ( is_multisite() ) { $activos = array_merge( $activos, array_keys( (array) get_site_option( 'active_sitewide_plugins', array() ) ) ); } $integrados = self::slugs_integrados(); $lista = array(); foreach ( self::catalogo() as $archivo => $info ) { if ( ! in_array( $archivo, $activos, true ) ) { continue; } $lista[] = array( 'nombre' => $info[0], 'slug' => $info[1], 'tipo' => $info[2], 'integracion' => $info[3], 'integrado' => null !== $info[3] && in_array( $info[3], $integrados, true ), ); } return $lista; } /** * Slugs de adaptadores que el registro dice tener, sea cual sea el formato de su respuesta. * * @return string[] */ public static function slugs_integrados() { if ( ! class_exists( 'Validafirma_Registro_Adaptadores' ) ) { return array(); } $slugs = Validafirma_Registro_Adaptadores::slugs_integrados(); $salida = array(); foreach ( (array) $slugs as $clave => $valor ) { $salida[] = is_string( $clave ) ? $clave : (string) $valor; } return $salida; } /** * Detectados que todavía no tienen integración (los que se pueden pedir). * * @return array[] */ public static function pedibles() { return array_values( array_filter( self::detectados(), static function ( $plugin ) { return ! $plugin['integrado']; } ) ); } /** * Formularios con la empresa firmando y sin firmante desatendido de producción (lista previa de D-36). * * @return array[] */ public static function formularios_sin_desatendido_de_produccion() { if ( ! class_exists( 'Validafirma_Registro_Adaptadores' ) || ! method_exists( 'Validafirma_Registro_Adaptadores', 'formularios_sin_desatendido_de_produccion' ) ) { return array(); } $lista = Validafirma_Registro_Adaptadores::formularios_sin_desatendido_de_produccion(); return is_array( $lista ) ? $lista : array(); } }