Compare commits
21 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| cb0f8ec691 | |||
| 04665817df | |||
| d1a2758514 | |||
| 1539a6fc06 | |||
| 958376cafd | |||
| f06d449065 | |||
| 514b5ca03b | |||
| 714af0515a | |||
| b3bc2f2772 | |||
| e3b14cd625 | |||
| 4b07e946f3 | |||
| fd06317b1d | |||
| 406eb625a9 | |||
| 05f6bc1b4b | |||
| e5da11e5f2 | |||
| 2b10a82fdd | |||
| 4b53e00498 | |||
| d04eb1a5ba | |||
| 3af451a8ff | |||
| f310c6c2c2 | |||
| 099382680f |
+1
-1
@@ -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.9",
|
||||||
"title": "Ogre CAPTCHA",
|
"title": "Ogre CAPTCHA",
|
||||||
"description": "Protect your site with CAPTCHA",
|
"description": "Protect your site with CAPTCHA",
|
||||||
"author": "CleverOgre",
|
"author": "CleverOgre",
|
||||||
|
|||||||
Generated
+5
-4
@@ -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": "be46026a283f180e03369ac71487bc45",
|
||||||
"packages": [
|
"packages": [
|
||||||
{
|
{
|
||||||
"name": "cleverogre/plugin-framework",
|
"name": "cleverogre/plugin-framework",
|
||||||
@@ -12,7 +12,7 @@
|
|||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "git@git.cleverogre.com:cleverogre/plugin-framework.git",
|
"url": "git@git.cleverogre.com:cleverogre/plugin-framework.git",
|
||||||
"reference": "74700a249ae3b5e559c071e2467764da4645a26f"
|
"reference": "cbea8dd02640b88b86091801adbb3da86a8bb55c"
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
"cleverogre/plugin-update-checker": "dev-main",
|
"cleverogre/plugin-update-checker": "dev-main",
|
||||||
@@ -38,7 +38,8 @@
|
|||||||
"inc/package-updater.php",
|
"inc/package-updater.php",
|
||||||
"inc/acf.php",
|
"inc/acf.php",
|
||||||
"inc/trait-singleton.php",
|
"inc/trait-singleton.php",
|
||||||
"inc/abstract-plugin.php"
|
"inc/abstract-plugin.php",
|
||||||
|
"inc/abstract-settings.php"
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"license": [
|
"license": [
|
||||||
@@ -51,7 +52,7 @@
|
|||||||
"Plugin",
|
"Plugin",
|
||||||
"WordPress"
|
"WordPress"
|
||||||
],
|
],
|
||||||
"time": "2026-06-05T20:21:23+00:00"
|
"time": "2026-08-26T16:47:47+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "cleverogre/plugin-update-checker",
|
"name": "cleverogre/plugin-update-checker",
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+2
-2
@@ -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.0.0
|
* @version 1.2.9
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -63,7 +63,7 @@ final class API {
|
|||||||
|
|
||||||
if (empty($token)) {
|
if (empty($token)) {
|
||||||
$errors->add(self::ERROR_EMPTY_TOKEN, Plugin::__('Please complete CAPTCHA verification.'));
|
$errors->add(self::ERROR_EMPTY_TOKEN, Plugin::__('Please complete CAPTCHA verification.'));
|
||||||
} else if (!API::verify($token)) {
|
} else if (!self::verify($token)) {
|
||||||
$errors->add(self::ERROR_INVALID_CAPTCHA, Plugin::__('Your answer was incorrect - please try again.'));
|
$errors->add(self::ERROR_INVALID_CAPTCHA, Plugin::__('Your answer was incorrect - please try again.'));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+23
-2
@@ -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())
|
||||||
|
),
|
||||||
|
]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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'],
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|||||||
@@ -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
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -19,6 +19,7 @@ use GFForms;
|
|||||||
use GFAddOn;
|
use GFAddOn;
|
||||||
use GFFormDisplay;
|
use GFFormDisplay;
|
||||||
use GFCommon;
|
use GFCommon;
|
||||||
|
use GP_Nested_Forms;
|
||||||
|
|
||||||
defined('ABSPATH') || exit;
|
defined('ABSPATH') || exit;
|
||||||
|
|
||||||
@@ -116,9 +117,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;
|
||||||
@@ -134,11 +145,25 @@ final class Addon extends GFAddOn {
|
|||||||
public function submit_button(string $button_input, array $form): string {
|
public function submit_button(string $button_input, array $form): string {
|
||||||
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 +171,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 +187,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')
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -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;
|
||||||
|
|||||||
@@ -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.9
|
||||||
* @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,12 @@ 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);
|
if (!isset($_POST['woocommerce-lost-password-nonce'])) {
|
||||||
|
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);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -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.0
|
* @version 1.2.9
|
||||||
* @since 1.0.0
|
* @since 1.0.0
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -37,7 +37,7 @@ final class LostPassword extends Location {
|
|||||||
add_action('woocommerce_lostpassword_form', [$this, 'render']);
|
add_action('woocommerce_lostpassword_form', [$this, 'render']);
|
||||||
add_action('woocommerce_after_lost_password_form', [$this, 'footer']);
|
add_action('woocommerce_after_lost_password_form', [$this, 'footer']);
|
||||||
if (isset($_POST['woocommerce-lost-password-nonce'])) {
|
if (isset($_POST['woocommerce-lost-password-nonce'])) {
|
||||||
add_action('lostpassword_post', [$this, 'process_form']);
|
add_action('lostpassword_post', [$this, 'process_form'], 10, 2);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
+3
-3
@@ -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.9
|
||||||
* 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;
|
||||||
|
|||||||
Generated
+75
-75
@@ -1,12 +1,12 @@
|
|||||||
{
|
{
|
||||||
"name": "cleverogre/ogre-captcha",
|
"name": "cleverogre/ogre-captcha",
|
||||||
"version": "1.2.3",
|
"version": "1.2.9",
|
||||||
"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.9",
|
||||||
"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.3.0",
|
||||||
"resolved": "https://registry.npmjs.org/@types/node/-/node-25.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/@types/node/-/node-26.3.0.tgz",
|
||||||
"integrity": "sha512-xfrlY7UD5rMJk3ZVJP8BNzS28J36YJg+xp+LPXV1TdWxr8uMH5A860QNxYDGQe/ylDSgjxE52Q9VnO7p75tJxg==",
|
"integrity": "sha512-L3fgrnchriRC2ExBflb8j4uZZURHZfQsmQeyVzhjcHW4kkwVyo8/0h1B2MVzMTrYUJYu6G7EWs14hW/L9putqw==",
|
||||||
"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,16 +370,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"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.2",
|
||||||
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.1.tgz",
|
"resolved": "https://registry.npmjs.org/bare-events/-/bare-events-2.9.2.tgz",
|
||||||
"integrity": "sha512-Z0oHEHAFDZkffN8Qc39zNZjQlMDkPJRyyyZieU1VH7u8c5S+qHZ2S8ixdKIAxEjfHO7FJxXmJWgteOghVanIsg==",
|
"integrity": "sha512-AIPKioV7/Y/8KfZ3AAhjPJxLLbY49S64Ym5DakZlUg75qQiTgUq9hEJoEwa4eUezPUlXRy/i5NpsKvo9jgKmoA==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "Apache-2.0",
|
"license": "Apache-2.0",
|
||||||
"peerDependencies": {
|
"peerDependencies": {
|
||||||
@@ -485,14 +488,16 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/brace-expansion": {
|
"node_modules/brace-expansion": {
|
||||||
"version": "1.1.15",
|
"version": "5.0.9",
|
||||||
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.15.tgz",
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.9.tgz",
|
||||||
"integrity": "sha512-EwOCDEex4quD37XhqM3omwtMoJjr//isUZz1JopUNWms+4Z2ViyM/k1YIRePpoVNnQhENnxtFjLaxNHrT7xIUg==",
|
"integrity": "sha512-ScQ4IuvIEF1TMlP7Zt+vjJ//9zlPb2SDcxWxM3bk8s6t6GGdJ7KO1dCcTidOPJKePW30LE/2cT7wCyPho9/Wxg==",
|
||||||
"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": "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.18",
|
||||||
|
"resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.18.tgz",
|
||||||
|
"integrity": "sha512-Edep/X9fGqVNmzKBVsDYIOtD+z1tuezV70LBjdCst9Tqu76lsnvRiZ6oTic1n+/BIwX6QDGAO94PN4N2SADvtw==",
|
||||||
|
"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": {
|
||||||
@@ -2779,9 +2815,9 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/is-plain-object": {
|
"node_modules/is-plain-object": {
|
||||||
"version": "5.0.0",
|
"version": "5.1.0",
|
||||||
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz",
|
"resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.1.0.tgz",
|
||||||
"integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==",
|
"integrity": "sha512-bUi/yjmtKYcRVUtWRGr0UA6xEFh2I6zWUwMrUXB3s7bmYCaZ8a+0ZsTRkrawh/mzlSD1Y0Ph8bp/U+TvBpWDNw==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "MIT",
|
"license": "MIT",
|
||||||
"engines": {
|
"engines": {
|
||||||
@@ -3196,16 +3232,19 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"node_modules/minimatch": {
|
"node_modules/minimatch": {
|
||||||
"version": "3.1.5",
|
"version": "10.2.6",
|
||||||
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.5.tgz",
|
"resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.6.tgz",
|
||||||
"integrity": "sha512-VgjWUsnnT6n+NUk6eZq77zeFdpW2LWDzP6zFGrCbHXiYNul5Dzqk2HHQ5uFH2DNW5Xbp8+jVzaeNt94ssEEl4w==",
|
"integrity": "sha512-vpLQEs+VLCr1nU0BXS07maYoFwlDAH0gngQuuttxIwutDFEMHq2blX+8vpgxDdK3J1PwjCJiep77OitTZ4Ll1A==",
|
||||||
"dev": true,
|
"dev": true,
|
||||||
"license": "ISC",
|
"license": "BlueOak-1.0.0",
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"brace-expansion": "^1.1.7"
|
"brace-expansion": "^5.0.8"
|
||||||
},
|
},
|
||||||
"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.1",
|
||||||
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.26.0.tgz",
|
"resolved": "https://registry.npmjs.org/streamx/-/streamx-2.28.1.tgz",
|
||||||
"integrity": "sha512-VvNG1K72Po/xwJzxZFnZ++Tbrv4lwSptsbkFuzXCJAYZvCK5nnxsvXU6ajqkv7chyiI1Y0YXq2Jh8Iy8Y7NF/A==",
|
"integrity": "sha512-zEzXb0s5Cds7tqMH6rhZ05lcJydCWiQPEwiNngVqzsxCc962vLY4Uw+mW7od8kDH258k2Uz/JrOkdIAAhSh9VA==",
|
||||||
"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
@@ -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.9",
|
||||||
"title": "Ogre CAPTCHA",
|
"title": "Ogre CAPTCHA",
|
||||||
"description": "Protect your site with CAPTCHA",
|
"description": "Protect your site with CAPTCHA",
|
||||||
"author": "CleverOgre",
|
"author": "CleverOgre",
|
||||||
|
|||||||
+17
-1
@@ -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.9
|
||||||
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,22 @@ If you don't know what plugin you have downloaded, please contact [CleverOgre](t
|
|||||||
|
|
||||||
== Changelog ==
|
== Changelog ==
|
||||||
|
|
||||||
|
= 1.2.9 - 2026-08-26 =
|
||||||
|
* Fix WooCommerce lost password form
|
||||||
|
|
||||||
|
= 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
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user