15 Commits

Author SHA1 Message Date
ogrecooper 514b5ca03b Merge pull request 'Disable captcha on nested forms' (#11) from nested-forms into main
Reviewed-on: #11
2026-08-19 17:29:30 +00:00
Cooper Dalrymple 714af0515a Push version to 1.2.8 2026-08-19 12:28:58 -05:00
Cooper Dalrymple b3bc2f2772 Disable captcha on nested forms 2026-08-19 12:28:56 -05:00
ogrecooper e3b14cd625 Merge pull request 'Remove duplicate settings action link' (#10) from duplicate-settings-link into main
Reviewed-on: #10
2026-08-14 15:06:37 +00:00
Cooper Dalrymple 4b07e946f3 Update changelog 2026-08-14 10:06:22 -05:00
Cooper Dalrymple fd06317b1d Push to version 1.2.7 2026-08-14 10:03:33 -05:00
Cooper Dalrymple 406eb625a9 Add GF section to settings page 2026-08-14 10:03:27 -05:00
Cooper Dalrymple 05f6bc1b4b Remove GFAddOn plugin action link 2026-08-14 09:45:32 -05:00
Cooper Dalrymple e5da11e5f2 Generate ids for form locations 2026-08-03 17:14:17 -05:00
ogrecooper 2b10a82fdd Merge pull request 'Fix missing argument with AIOWPS when performing password reset' (#9) from lost-password-bug into main
Reviewed-on: #9
2026-07-15 15:23:16 +00:00
Cooper Dalrymple 4b53e00498 Push to version 1.2.6 2026-07-15 10:22:44 -05:00
Cooper Dalrymple d04eb1a5ba Fix missing argument with AIOWPS 2026-07-15 10:21:15 -05:00
Cooper Dalrymple 3af451a8ff Push to version 1.2.5 2026-07-01 12:11:58 -05:00
Cooper Dalrymple f310c6c2c2 Fix require license header 2026-07-01 12:00:46 -05:00
Cooper Dalrymple 099382680f Improve key inputs 2026-06-19 12:05:01 -05:00
12 changed files with 181 additions and 89 deletions
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"$schema": "https://getcomposer.org/schema.json", "$schema": "https://getcomposer.org/schema.json",
"name": "cleverogre/ogre-captcha", "name": "cleverogre/ogre-captcha",
"version": "1.2.4", "version": "1.2.8",
"title": "Ogre CAPTCHA", "title": "Ogre CAPTCHA",
"description": "Protect your site with CAPTCHA", "description": "Protect your site with CAPTCHA",
"author": "CleverOgre", "author": "CleverOgre",
Generated
+1 -1
View File
@@ -4,7 +4,7 @@
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies", "Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
"This file is @generated automatically" "This file is @generated automatically"
], ],
"content-hash": "d662e21940aa15a41d819c504c3139c9", "content-hash": "f65bf8d077abc18766530e9d520877ba",
"packages": [ "packages": [
{ {
"name": "cleverogre/plugin-framework", "name": "cleverogre/plugin-framework",
+16 -2
View File
@@ -47,8 +47,17 @@ abstract class Location {
abstract public function activate():void; abstract public function activate():void;
protected function get_widget_id(): string {
return sprintf(
'cap-%s',
$this->name
);
}
public function render():void { public function render():void {
Widget::render(); Widget::render([
'id' => $this->get_widget_id(),
]);
} }
public function process(WP_Error|null $errors = null):void { public function process(WP_Error|null $errors = null):void {
@@ -78,7 +87,12 @@ abstract class Location {
public function footer():void { public function footer():void {
if (!Settings::is_widget_floating()) return; if (!Settings::is_widget_floating()) return;
$html = ob_get_clean(); $html = ob_get_clean();
$html = Widget::set_button_floating($html); $html = Widget::set_button_floating(
$html,
[
'id' => $this->get_widget_id(),
]
);
echo $html; echo $html;
} }
+23 -2
View File
@@ -4,7 +4,7 @@
* @author cleverogre * @author cleverogre
* @copyright 2026 CleverOgre * @copyright 2026 CleverOgre
* @license GLP-3.0-or-later * @license GLP-3.0-or-later
* @version 1.2.4 * @version 1.2.7
* @since 1.0.0 * @since 1.0.0
*/ */
@@ -12,6 +12,7 @@ namespace Ogre\Captcha;
use Ogre\Singleton; use Ogre\Singleton;
use Ogre\Captcha as Plugin; use Ogre\Captcha as Plugin;
use Ogre\Captcha\GravityForms\Addon;
defined('ABSPATH') || exit; defined('ABSPATH') || exit;
@@ -278,7 +279,9 @@ final class Settings {
args: [ args: [
'name' => 'site_key', 'name' => 'site_key',
'description' => Plugin::__('Provide your Cap site key.'), 'description' => Plugin::__('Provide your Cap site key.'),
'type' => 'password', 'attributes' => [
'autocomplete' => 'off',
],
] ]
); );
@@ -291,6 +294,9 @@ final class Settings {
'name' => 'secret_key', 'name' => 'secret_key',
'description' => Plugin::__('Provide your Cap secret key.'), 'description' => Plugin::__('Provide your Cap secret key.'),
'type' => 'password', 'type' => 'password',
'attributes' => [
'autocomplete' => 'off',
],
] ]
); );
@@ -373,6 +379,21 @@ final class Settings {
] ]
); );
if (Plugin::is_gravityforms_active() && class_exists('Ogre\Captcha\GravityForms\Addon')) {
add_settings_section(
'gravityforms',
Plugin::__('Gravity Forms'),
[$this, 'section'],
Plugin::get_id(),
[
'description' => sprintf(
Plugin::__('The configuration of Ogre CAPTCHA\'s Gravityforms integration can be found on <a href="%s">this page</a> and within the settings of each form.'),
esc_url(Addon::get_instance()->get_url())
),
]
);
}
} }
+1 -1
View File
@@ -97,7 +97,7 @@ final class Widget {
); );
$attributes = [ $attributes = [
'data-cap-floating' => "#{$args['id']}", 'data-cap-floating' => '#' . $args['id'],
'data-cap-floating-position' => $args['position'], 'data-cap-floating-position' => $args['position'],
]; ];
+46 -3
View File
@@ -4,7 +4,7 @@
* @author cleverogre * @author cleverogre
* @copyright 2026 CleverOgre * @copyright 2026 CleverOgre
* @license GLP-3.0-or-later * @license GLP-3.0-or-later
* @version 1.2.1 * @version 1.2.8
* @since 1.1.0 * @since 1.1.0
*/ */
@@ -116,9 +116,19 @@ final class Addon extends GFAddOn {
} }
public function is_enabled(array|null $form = null): bool { public function is_enabled(array|null $form = null): bool {
// Check to make sure that we're enabled on the plugin level first
$plugin_enabled = $this->get_plugin_setting('enabled') === '1'; $plugin_enabled = $this->get_plugin_setting('enabled') === '1';
if (is_null($form) || !$plugin_enabled) return $plugin_enabled; if (is_null($form) || !$plugin_enabled) return $plugin_enabled;
$form_id = !is_null($form) ? absint(rgar($form, 'id')) : 0;
// If Gravity Perks Nested Forms is active and the current form is nested, disable entirely (it's not compatible at the moment)
if (class_exists('GP_Nested_Forms')) {
$gp_nested_forms = GP_Nested_Forms::get_instance();
if ($gp_nested_forms->is_nested_form_submission() && $gp_nested_forms->get_parent_form_id() !== $form_id) return false;
}
// Now check to see if the opt-out is enabled within the form settings
$form_settings = $this->get_form_settings($form); $form_settings = $this->get_form_settings($form);
$form_disabled = (bool) rgar($form_settings, 'disabled'); $form_disabled = (bool) rgar($form_settings, 'disabled');
return !$form_disabled; return !$form_disabled;
@@ -135,10 +145,24 @@ final class Addon extends GFAddOn {
if (!Settings::is_connected() || !$this->is_enabled($form)) return $button_input; if (!Settings::is_connected() || !$this->is_enabled($form)) return $button_input;
if ((is_admin() && !defined('DOING_AJAX')) || GFCommon::is_form_editor()) return $button_input; if ((is_admin() && !defined('DOING_AJAX')) || GFCommon::is_form_editor()) return $button_input;
$id = sprintf(
'gform_cap_%d',
absint(rgar($form, 'id'))
);
ob_start(); ob_start();
Widget::render(); Widget::render([
'id' => $id,
]);
$button_input = ob_get_clean() . $button_input; $button_input = ob_get_clean() . $button_input;
if (Settings::is_widget_floating()) $button_input = Widget::set_button_floating($button_input); if (Settings::is_widget_floating()) {
$button_input = Widget::set_button_floating(
$button_input,
[
'id' => $id,
]
);
}
return $button_input; return $button_input;
} }
@@ -146,7 +170,11 @@ final class Addon extends GFAddOn {
if ($context != 'form-submit') return $validation_result; if ($context != 'form-submit') return $validation_result;
$form = $validation_result['form']; $form = $validation_result['form'];
// Make sure that we are actually processing the end of the form
if (!GFFormDisplay::is_last_page($form) || rgpost('action') == 'heartbeat') return $validation_result; if (!GFFormDisplay::is_last_page($form) || rgpost('action') == 'heartbeat') return $validation_result;
// Make sure that we are connected and enabled
if (!Settings::is_connected() || !$this->is_enabled($form)) return $validation_result; if (!Settings::is_connected() || !$this->is_enabled($form)) return $validation_result;
$errors = API::process(Widget::get_token()); $errors = API::process(Widget::get_token());
@@ -158,4 +186,19 @@ final class Addon extends GFAddOn {
return $validation_result; return $validation_result;
} }
public function plugin_settings_link( $links, $file ) {
// Remove plugin action link
return $links;
}
public function get_url(): string {
return add_query_arg(
[
'page' => 'gf_settings',
'subview' => $this->get_slug()
],
admin_url('admin.php')
);
}
} }
+3 -1
View File
@@ -42,7 +42,9 @@ final class LoginForm extends Location {
$content .= ob_get_clean(); $content .= ob_get_clean();
if (Settings::is_widget_floating()) { if (Settings::is_widget_floating()) {
Widget::add_dynamic_floating_attributes(); Widget::add_dynamic_floating_attributes([
'id' => $this->get_widget_id(),
]);
} }
return $content; return $content;
+3 -4
View File
@@ -4,7 +4,7 @@
* @author cleverogre * @author cleverogre
* @copyright 2026 CleverOgre * @copyright 2026 CleverOgre
* @license GLP-3.0-or-later * @license GLP-3.0-or-later
* @version 1.2.4 * @version 1.2.6
* @since 1.0.0 * @since 1.0.0
*/ */
@@ -14,7 +14,6 @@ use Override;
use Ogre\Captcha\LoginLocation; use Ogre\Captcha\LoginLocation;
use Ogre\Captcha\Settings; use Ogre\Captcha\Settings;
use WP_Error; use WP_Error;
use WP_User;
defined('ABSPATH') || exit; defined('ABSPATH') || exit;
@@ -35,10 +34,10 @@ final class LostPasswordForm extends LoginLocation {
{ {
parent::activate(); parent::activate();
add_action('lostpassword_form', [$this, 'render']); add_action('lostpassword_form', [$this, 'render']);
add_action('lostpassword_post', [$this, 'process_form'], 10, 2); add_action('lostpassword_post', [$this, 'process_form'], 10, 1);
} }
public function process_form(WP_Error $errors, WP_User|bool $user_data):void { public function process_form(WP_Error $errors):void {
$this->process($errors); $this->process($errors);
} }
+3 -3
View File
@@ -6,14 +6,14 @@
* @author cleverogre * @author cleverogre
* @copyright 2026 CleverOgre * @copyright 2026 CleverOgre
* @license GLP-3.0-or-later * @license GLP-3.0-or-later
* @version 1.2.4 * @version 1.2.7
* @since 1.0.0 * @since 1.0.0
* *
* @wordpress-plugin * @wordpress-plugin
* Plugin Name: Ogre CAPTCHA * Plugin Name: Ogre CAPTCHA
* Plugin URI: https://git.cleverogre.com/cleverogre/ogre-captcha/ * Plugin URI: https://git.cleverogre.com/cleverogre/ogre-captcha/
* Description: Protect your site with CAPTCHA * Description: Protect your site with CAPTCHA
* Version: 1.2.4 * Version: 1.2.8
* Requires at least: 6.0 * Requires at least: 6.0
* Requires PHP: 8.2 * Requires PHP: 8.2
* Author: CleverOgre * Author: CleverOgre
@@ -27,7 +27,7 @@
* Icon2x: https://plugins.cleverogre.com/wp-content/uploads/ogre-captcha-icon-256x256.png * Icon2x: https://plugins.cleverogre.com/wp-content/uploads/ogre-captcha-icon-256x256.png
* BannerLow: https://plugins.cleverogre.com/wp-content/uploads/ogre-captcha-banner-772x250.png * BannerLow: https://plugins.cleverogre.com/wp-content/uploads/ogre-captcha-banner-772x250.png
* BannerHigh: https://plugins.cleverogre.com/wp-content/uploads/ogre-captcha-banner-1544x500.png * BannerHigh: https://plugins.cleverogre.com/wp-content/uploads/ogre-captcha-banner-1544x500.png
* Requires License: yes * Require License: yes
*/ */
namespace Ogre; namespace Ogre;
+69 -69
View File
@@ -1,12 +1,12 @@
{ {
"name": "cleverogre/ogre-captcha", "name": "cleverogre/ogre-captcha",
"version": "1.2.3", "version": "1.2.7",
"lockfileVersion": 3, "lockfileVersion": 3,
"requires": true, "requires": true,
"packages": { "packages": {
"": { "": {
"name": "cleverogre/ogre-captcha", "name": "cleverogre/ogre-captcha",
"version": "1.2.3", "version": "1.2.7",
"license": "GPL-3.0+", "license": "GPL-3.0+",
"devDependencies": { "devDependencies": {
"gulp": "^5.0.0", "gulp": "^5.0.0",
@@ -58,13 +58,13 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/@types/node": { "node_modules/@types/node": {
"version": "25.9.1", "version": "26.1.1",
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz", "resolved": "https://registry.npmjs.org/@types/node/-/node-26.1.1.tgz",
"integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==", "integrity": "sha512-nxAkRSVkN1Y0JC1W8ky/fTfkGsMmcrRsbx+3XoZE+rMOX71kLYTV7fLXpqud1GpbpP5TuffXFqfX7fH2GgZREw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"undici-types": ">=7.24.0 <7.24.7" "undici-types": "~8.3.0"
} }
}, },
"node_modules/@types/vinyl": { "node_modules/@types/vinyl": {
@@ -370,11 +370,14 @@
} }
}, },
"node_modules/balanced-match": { "node_modules/balanced-match": {
"version": "1.0.2", "version": "4.0.4",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT",
"engines": {
"node": "18 || 20 || >=22"
}
}, },
"node_modules/bare-events": { "node_modules/bare-events": {
"version": "2.9.1", "version": "2.9.1",
@@ -485,14 +488,16 @@
} }
}, },
"node_modules/brace-expansion": { "node_modules/brace-expansion": {
"version": "1.1.15", "version": "5.0.7",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.7.tgz",
"integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==", "integrity": "sha512-7oFy703dxfY3/NLxC1fh2SUCQ0H9rmAY+5EpDVfXjUTTs+HEwR2nYaqLv+GWcTsumwxPfiz6CzCNkwXwBUwqCA==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
"balanced-match": "^1.0.0", "balanced-match": "^4.0.2"
"concat-map": "0.0.1" },
"engines": {
"node": "18 || 20 || >=22"
} }
}, },
"node_modules/braces": { "node_modules/braces": {
@@ -1756,6 +1761,37 @@
"node": ">= 10.13.0" "node": ">= 10.13.0"
} }
}, },
"node_modules/glob/node_modules/balanced-match": {
"version": "1.0.2",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz",
"integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==",
"dev": true,
"license": "MIT"
},
"node_modules/glob/node_modules/brace-expansion": {
"version": "1.1.16",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.16.tgz",
"integrity": "sha512-IDw48K2/2kRkg9LdJxurvq3lV3aBgq0REY89duEqFRthjlPdXHKMj7EnQOXVckxzgisinf3nHfrcE2FufFLXMw==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^1.0.0",
"concat-map": "0.0.1"
}
},
"node_modules/glob/node_modules/minimatch": {
"version": "3.1.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
"dev": true,
"license": "ISC",
"dependencies": {
"brace-expansion": "^1.1.7"
},
"engines": {
"node": "*"
}
},
"node_modules/global-modules": { "node_modules/global-modules": {
"version": "1.0.0", "version": "1.0.0",
"resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz", "resolved": "https://registry.npmjs.org/global-modules/-/global-modules-1.0.0.tgz",
@@ -2351,9 +2387,9 @@
} }
}, },
"node_modules/gulp/node_modules/yargs": { "node_modules/gulp/node_modules/yargs": {
"version": "16.2.0", "version": "16.2.2",
"resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.2.tgz",
"integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", "integrity": "sha512-Nt9ZJjXTv5R8MHbqby/wXQ6Gi0Bb3TcYZkR1bzuL4yB2OxWPkXknz513gEF0GoA6tn00UpbPvERW8rzCuWCA6w==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@@ -3196,16 +3232,19 @@
} }
}, },
"node_modules/minimatch": { "node_modules/minimatch": {
"version": "3.1.5", "version": "10.2.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==", "integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
"dev": true, "dev": true,
"license": "ISC", "license": "BlueOak-1.0.0",
"dependencies": { "dependencies": {
"brace-expansion": "^1.1.7" "brace-expansion": "^5.0.5"
}, },
"engines": { "engines": {
"node": "*" "node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
} }
}, },
"node_modules/mixin-deep": { "node_modules/mixin-deep": {
@@ -3247,45 +3286,6 @@
"url": "https://github.com/sponsors/sindresorhus" "url": "https://github.com/sponsors/sindresorhus"
} }
}, },
"node_modules/multimatch/node_modules/balanced-match": {
"version": "4.0.4",
"resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz",
"integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==",
"dev": true,
"license": "MIT",
"engines": {
"node": "18 || 20 || >=22"
}
},
"node_modules/multimatch/node_modules/brace-expansion": {
"version": "5.0.6",
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.6.tgz",
"integrity": "sha512-kLpxurY4Z4r9sgMsyG0Z9uzsBlgiU/EFKhj/h91/8yHu0edo7XuixOIH3VcJ8kkxs6/jPzoI6U9Vj3WqbMQ94g==",
"dev": true,
"license": "MIT",
"dependencies": {
"balanced-match": "^4.0.2"
},
"engines": {
"node": "18 || 20 || >=22"
}
},
"node_modules/multimatch/node_modules/minimatch": {
"version": "10.2.5",
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.5.tgz",
"integrity": "sha512-MULkVLfKGYDFYejP07QOurDLLQpcjk7Fw+7jXS2R2czRQzR56yHRveU5NDJEOviH+hETZKSkIk5c+T23GjFUMg==",
"dev": true,
"license": "BlueOak-1.0.0",
"dependencies": {
"brace-expansion": "^5.0.5"
},
"engines": {
"node": "18 || 20 || >=22"
},
"funding": {
"url": "https://github.com/sponsors/isaacs"
}
},
"node_modules/mute-stdout": { "node_modules/mute-stdout": {
"version": "1.0.1", "version": "1.0.1",
"resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz", "resolved": "https://registry.npmjs.org/mute-stdout/-/mute-stdout-1.0.1.tgz",
@@ -4477,9 +4477,9 @@
"license": "MIT" "license": "MIT"
}, },
"node_modules/streamx": { "node_modules/streamx": {
"version": "2.26.0", "version": "2.28.0",
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.26.0.tgz", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.0.tgz",
"integrity": "sha512-VvNG1K72Po/xwJzxZFnZ++Tbrv4lwSptsbkFuzXCJAYZvCK5nnxsvXU6ajqkv7chyiI1Y0YXq2Jh8Iy8Y7NF/A==", "integrity": "sha512-1Yowhzjf0ivGMrTIkY9hav5TxobO9qIVqUE41fiCGMGgc3CLlf4MY+9AHmZqBWgDTue0fY9zWjYFVyf6Diuobw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"dependencies": { "dependencies": {
@@ -4781,9 +4781,9 @@
} }
}, },
"node_modules/undici-types": { "node_modules/undici-types": {
"version": "7.24.6", "version": "8.3.0",
"resolved": "https://registry.npmjs.org/undici-types/-/undici-types-7.24.6.tgz", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-8.3.0.tgz",
"integrity": "sha512-WRNW+sJgj5OBN4/0JpHFqtqzhpbnV0GuB+OozA9gCL7a993SmU+1JBZCzLNxYsbMfIeDL+lTsphD5jN5N+n0zg==", "integrity": "sha512-j375ScV60dom+YkPFIfTLcOiPxkN/buHz5GobjLhixFuANaNs3C9l4GmrWqejgXWJ7BbJcFYpTEUkS1Ge8bpZQ==",
"dev": true, "dev": true,
"license": "MIT" "license": "MIT"
}, },
+1 -1
View File
@@ -1,7 +1,7 @@
{ {
"$schema": "https://www.schemastore.org/package.json", "$schema": "https://www.schemastore.org/package.json",
"name": "cleverogre/ogre-captcha", "name": "cleverogre/ogre-captcha",
"version": "1.2.4", "version": "1.2.8",
"title": "Ogre CAPTCHA", "title": "Ogre CAPTCHA",
"description": "Protect your site with CAPTCHA", "description": "Protect your site with CAPTCHA",
"author": "CleverOgre", "author": "CleverOgre",
+14 -1
View File
@@ -3,7 +3,7 @@ Contributors: ogrecooper, cleverogre
Tested up to: 7.0 Tested up to: 7.0
Requires at least: 6.0 Requires at least: 6.0
Requires PHP: 8.2 Requires PHP: 8.2
Version: 1.2.4 Version: 1.2.8
License: GPLv3 or later License: GPLv3 or later
License URI: https://www.gnu.org/licenses/gpl-3.0.html License URI: https://www.gnu.org/licenses/gpl-3.0.html
Copyright: CleverOgre Copyright: CleverOgre
@@ -28,6 +28,19 @@ If you don't know what plugin you have downloaded, please contact [CleverOgre](t
== Changelog == == Changelog ==
= 1.2.8 - 2026-08-19 =
* Fix compatibility issue with Gravity Perks Nested Forms
= 1.2.7 - 2026-08-14 =
* Remove duplicate settings link
* Add Gravity Forms section to settings page
= 1.2.6 - 2026-07-15 =
* Fix bug with lost password reset when using AIOWPS
= 1.2.5 - 2026-07-01 =
* Improve API key input attributes
= 1.2.4 - 2026-06-18 = = 1.2.4 - 2026-06-18 =
* Minor bug fixes * Minor bug fixes