%s

', esc_html( sprintf( /* translators: 1: required PHP version, 2: required WordPress version. */ __( 'Flexsolutions Form Builder requires PHP %1$s+ and WordPress %2$s+. The plugin is inactive until the server is updated.', 'flexsolutions-form-builder' ), MIN_PHP, MIN_WP ) ) ); } ); return; } /* * Minimal PSR-4 style autoloader that follows the WordPress file naming * convention: Flexsolutions Form Builder\Tag_Parser => includes/class-tag-parser.php. */ spl_autoload_register( static function ( string $class_name ): void { $prefix = __NAMESPACE__ . '\\'; if ( ! str_starts_with( $class_name, $prefix ) ) { return; } $relative = substr( $class_name, strlen( $prefix ) ); // Only allow plain class names; never build paths from unexpected input. if ( ! preg_match( '/^[A-Za-z0-9_]+$/', $relative ) ) { return; } $file = PLUGIN_DIR . '/includes/class-' . strtolower( str_replace( '_', '-', $relative ) ) . '.php'; if ( is_readable( $file ) ) { require_once $file; } } ); require_once PLUGIN_DIR . '/includes/functions.php'; register_activation_hook( __FILE__, array( Installer::class, 'activate' ) ); register_deactivation_hook( __FILE__, array( Installer::class, 'deactivate' ) ); add_action( 'plugins_loaded', array( Plugin::class, 'boot' ) );