diff --git a/friendly-captcha/includes/core.php b/friendly-captcha/includes/core.php index 7cc1744..9eb3483 100644 --- a/friendly-captcha/includes/core.php +++ b/friendly-captcha/includes/core.php @@ -245,6 +245,13 @@ class FriendlyCaptcha_Plugin "plugins" => array("wp-job-openings/wp-job-openings.php", "pro-pack-for-wp-job-openings/pro-pack.php"), "settings_description" => "Enable Friendly Captcha for the WP Job Openings application form.", ), + array( + "name" => "SI Schedule+Registration", + "slug" => 'tws_siwp', + "entry" => "tws-siwp/tws-siwp.php", + "plugins" => array("tws-siwp/tws-siwp.php"), + "settings_description" => "Enable Friendly Captcha for the SI Schedule+Registration trial lesson signup form.", + ), ); public function init() @@ -394,6 +401,6 @@ public function remove_verification_failed_alert() foreach (FriendlyCaptcha_Plugin::$integrations as $integration) { if (FriendlyCaptcha_Plugin::$instance->get_integration_active($integration['slug'])) { - require_once plugin_dir_path(__FILE__) . '../modules/' . $integration['entry']; + include_once plugin_dir_path(__FILE__) . '../modules/' . $integration['entry']; } } diff --git a/friendly-captcha/modules/tws-siwp/index.php b/friendly-captcha/modules/tws-siwp/index.php new file mode 100644 index 0000000..bacffcc --- /dev/null +++ b/friendly-captcha/modules/tws-siwp/index.php @@ -0,0 +1 @@ +is_configured()) { + return $html; + } + + frcaptcha_enqueue_widget_scripts(); + + $widget = frcaptcha_generate_widget_tag_from_plugin($plugin); + return $html . $widget; + } +); + +// Validate captcha on form submission +// $form_data is passed for potential future use (e.g. logging) +add_filter( + 'tws_siwp_validate_captcha', function ($error, $form_data) { + unset($form_data); // Currently unused, but available for future extensions + $plugin = FriendlyCaptcha_Plugin::$instance; + if (!$plugin->is_configured()) { + return $error; + } + + $solution = frcaptcha_get_sanitized_frcaptcha_solution_from_post(); + + if (empty($solution)) { + /* translators: Error message when captcha was not completed */ + return __("Bitte lösen Sie das Anti-Spam-Rätsel.", "frcaptcha"); + } + + $verification = frcaptcha_verify_captcha_solution( + $solution, + $plugin->get_sitekey(), + $plugin->get_api_key(), + 'tws-siwp' + ); + + if (!$verification["success"]) { + return FriendlyCaptcha_Plugin::default_error_user_message(); + } + + return $error; + }, 10, 2 +);