File: /var/www/html/wp-content/plugins/memberpress/app/integrations/google-captcha/Integration.php
<?php
if (!defined('ABSPATH')) {
die('You are not allowed to call this page directly.');
}
class MeprGoogleCaptchaIntegration
{
/**
* Constructor for the MeprGoogleCaptchaIntegration class.
*/
public function __construct()
{
add_action('plugins_loaded', [$this, 'load_hooks']);
}
/**
* Load the necessary hooks for Google Captcha integration.
*
* @return void
*/
public function load_hooks()
{
if (!function_exists('gglcptch_is_recaptcha_required')) {
return;
}
add_filter('mepr_validate_signup', [$this, 'remove_authenticate_action']);
add_filter('mepr_validate_login', [$this, 'remove_authenticate_action']);
add_filter('mepr_validate_forgot_password', [$this, 'remove_allow_password_reset_action']);
add_filter('mepr_validate_reset_password', [$this, 'remove_authenticate_action']);
add_filter('gglcptch_is_recaptcha_required', [$this, 'disable_recaptcha_pro_checks'], 10, 2);
}
/**
* Remove the authenticate action to prevent reCAPTCHA from being checked twice.
*
* @param array $errors The array of errors.
* @return array The modified array of errors.
*/
public function remove_authenticate_action($errors)
{
remove_action('authenticate', 'gglcptch_login_check', 21);
return $errors;
}
/**
* Remove the allow password reset action to prevent reCAPTCHA from being checked twice.
*
* @param array $errors The array of errors.
* @return array The modified array of errors.
*/
public function remove_allow_password_reset_action($errors)
{
// We need to remove this action or the reCAPTCHA is checked twice.
remove_action('allow_password_reset', 'gglcptch_lostpassword_check');
return $errors;
}
/**
* Disable reCAPTCHA checks for specific forms.
*
* @param boolean $result The current result of the reCAPTCHA check.
* @param string $form_slug The slug of the form being checked.
* @return boolean The modified result of the reCAPTCHA check.
*/
public function disable_recaptcha_pro_checks($result, $form_slug)
{
if (in_array($form_slug, ['memberpress_login', 'memberpress_forgot_password', 'memberpress_checkout'], true)) {
$result = false;
}
return $result;
}
}
new MeprGoogleCaptchaIntegration();