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
+);