error("Cannot register captcha provider '{$name}': Provider must implement CaptchaProviderInterface"); return; } self::$providers[$name] = $provider; // Grav::instance()['log']->debug("Registered captcha provider: {$name}"); } /** * Check if a provider is registered * * @param string $name Provider name * @return bool */ public static function hasProvider(string $name): bool { return isset(self::$providers[$name]); } /** * Get a provider by name * * @param string $name Provider name * @return CaptchaProviderInterface|null Provider instance or null if not found */ public static function getProvider(string $name): ?CaptchaProviderInterface { return self::$providers[$name] ?? null; } /** * Get all registered providers * * @return array */ public static function getProviders(): array { return self::$providers; } /** * Register all default captcha providers * * @return void */ public static function registerDefaultProviders(): void { // Register built-in providers self::registerProvider('recaptcha', new ReCaptchaProvider()); self::registerProvider('turnstile', new TurnstileProvider()); self::registerProvider('basic-captcha', new BasicCaptchaProvider()); // Log the registration // Grav::instance()['log']->debug('Registered default captcha providers'); } }