From 04b158c5441417475002b0088a12f7f60806a196 Mon Sep 17 00:00:00 2001 From: Kijin Sung Date: Wed, 24 Dec 2025 21:45:02 +0900 Subject: [PATCH] Fix fatal error if CAPTCHA is configured but disabled --- modules/spamfilter/spamfilter.controller.php | 6 +++++- modules/spamfilter/spamfilter.model.php | 6 +++--- 2 files changed, 8 insertions(+), 4 deletions(-) diff --git a/modules/spamfilter/spamfilter.controller.php b/modules/spamfilter/spamfilter.controller.php index ceea7c0f0..d85fd8bfc 100644 --- a/modules/spamfilter/spamfilter.controller.php +++ b/modules/spamfilter/spamfilter.controller.php @@ -337,8 +337,12 @@ class SpamfilterController extends Spamfilter if (count($target_actions)) { $captcha_class = 'Rhymix\\Modules\\Spamfilter\\Captcha\\' . $config->captcha->type; - $captcha_class::init($config->captcha); + if (!class_exists($captcha_class)) + { + return; + } + $captcha_class::init($config->captcha); if (strncasecmp('proc', $obj->act, 4) === 0) { $captcha_class::check(); diff --git a/modules/spamfilter/spamfilter.model.php b/modules/spamfilter/spamfilter.model.php index c7f73f217..379cf776c 100644 --- a/modules/spamfilter/spamfilter.model.php +++ b/modules/spamfilter/spamfilter.model.php @@ -218,7 +218,7 @@ class SpamfilterModel extends Spamfilter { $config = ModuleModel::getModuleConfig('spamfilter'); $user = Context::get('logged_info'); - if (!isset($config) || empty($config->captcha) || empty($config->captcha->type) || empty($config->captcha->site_key) || empty($config->captcha->secret_key)) + if (!isset($config) || empty($config->captcha) || empty($config->captcha->type) || $config->captcha->type === 'none' || empty($config->captcha->site_key) || empty($config->captcha->secret_key)) { return false; } @@ -253,7 +253,7 @@ class SpamfilterModel extends Spamfilter public static function getCaptcha($target_action = null) { $config = ModuleModel::getModuleConfig('spamfilter'); - if (!isset($config) || empty($config->captcha) || empty($config->captcha->type) || empty($config->captcha->site_key) || empty($config->captcha->secret_key)) + if (!isset($config) || empty($config->captcha) || empty($config->captcha->type) || $config->captcha->type === 'none' || empty($config->captcha->site_key) || empty($config->captcha->secret_key)) { return null; } @@ -285,7 +285,7 @@ class SpamfilterModel extends Spamfilter public static function checkCaptchaResponse(?string $response = null): void { $config = ModuleModel::getModuleConfig('spamfilter'); - if (!isset($config) || empty($config->captcha) || empty($config->captcha->type) || empty($config->captcha->site_key) || empty($config->captcha->secret_key)) + if (!isset($config) || empty($config->captcha) || empty($config->captcha->type) || $config->captcha->type === 'none' || empty($config->captcha->site_key) || empty($config->captcha->secret_key)) { throw new Exception('msg_recaptcha_not_configured'); }