wp_back/wp-content/plugins/advanced-google-recaptcha/advanced-google-recaptcha.php
2024-05-20 15:37:46 +03:00

234 lines
11 KiB
PHP

<?php
/*
Plugin Name: Advanced Google reCAPTCHA
Plugin URI: https://getwpcaptcha.com/
Description: Advanced Google reCAPTCHA will safeguard your WordPress site from spam comments and brute force attacks. With this plugin, you can easily add Google reCAPTCHA to WordPress comment form, login form and other forms.
Version: 1.17
Author: WebFactory Ltd
Author URI: https://www.webfactoryltd.com/
License: GNU General Public License v3.0
Text Domain: advanced-google-recaptcha
Requires at least: 4.0
Tested up to: 6.4
Requires PHP: 5.2
Copyright 2023 - 2024 WebFactory Ltd (email: support@webfactoryltd.com)
Copyright 2021 - 2023 WP Concern
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License, version 2, as
published by the Free Software Foundation.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
*/
// include only file
if (!defined('ABSPATH')) {
wp_die(__('Do not open this file directly.', 'advanced-google-recaptcha'));
}
define('WPCAPTCHA_PLUGIN_FILE', __FILE__);
define('WPCAPTCHA_PLUGIN_DIR', plugin_dir_path(__FILE__));
define('WPCAPTCHA_PLUGIN_URL', plugin_dir_url(__FILE__));
define('WPCAPTCHA_OPTIONS_KEY', 'wpcaptcha_options');
define('WPCAPTCHA_META_KEY', 'wpcaptcha_meta');
define('WPCAPTCHA_POINTERS_KEY', 'wpcaptcha_pointers');
define('WPCAPTCHA_NOTICES_KEY', 'wpcaptcha_notices');
require_once WPCAPTCHA_PLUGIN_DIR . 'libs/admin.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'libs/setup.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'libs/utility.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'libs/functions.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'libs/stats.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'libs/ajax.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'interface/tab_login_form.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'interface/tab_activity.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'interface/tab_temp_access.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'interface/tab_firewall.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'interface/tab_captcha.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'interface/tab_geoip.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'interface/tab_design.php';
require_once WPCAPTCHA_PLUGIN_DIR . 'wf-flyout/wf-flyout.php';
// main plugin class
class WPCaptcha
{
static $version = 0;
static $type;
/**
* Setup Hooks
*
* @since 5.0
*
* @return null
*/
static function init()
{
// check if minimal required WP version is present
if (false === WPCaptcha_Setup::check_wp_version(4.6) || false === WPCaptcha_Setup::check_php_version('5.6.20')) {
return false;
}
WPCaptcha_Setup::maybe_upgrade();
WPCaptcha_Functions::handle_unblock();
$options = WPCaptcha_Setup::get_options();
if (is_admin()) {
new wf_flyout(__FILE__);
// add WP Captcha menu to admin tools menu group
add_action('admin_menu', array('WPCaptcha_Admin', 'admin_menu'));
// aditional links in plugin description and footer
add_filter('plugin_action_links_' . plugin_basename(__FILE__), array('WPCaptcha_Admin', 'plugin_action_links'));
add_filter('plugin_row_meta', array('WPCaptcha_Admin', 'plugin_meta_links'), 10, 2);
add_filter('admin_footer_text', array('WPCaptcha_Admin', 'admin_footer_text'));
// settings registration
add_action('admin_init', array('WPCaptcha_Setup', 'register_settings'));
add_action('admin_notices', array('WPCaptcha_Admin', 'admin_notices'));
// enqueue admin scripts
add_action('admin_enqueue_scripts', array('WPCaptcha_Admin', 'admin_enqueue_scripts'));
// admin actions
add_action('admin_action_wpcaptcha_install_template', array('WPCaptcha_Functions', 'install_template'));
add_action('admin_action_wpcaptcha_install_wp301', array('WPCaptcha_Functions', 'install_wp301'));
// AJAX endpoints
add_action('wp_ajax_wpcaptcha_run_tool', array('WPCaptcha_AJAX', 'ajax_run_tool'));
} else {
// Handle login captcha
if($options['captcha_show_login']){
add_filter( 'login_form', array('WPCaptcha_Functions', 'captcha_fields'));
add_action( 'woocommerce_login_form', array('WPCaptcha_Functions', 'captcha_fields'));
add_action( 'woocommerce_login_form', array('WPCaptcha_Functions', 'login_form_fields'));
add_action( 'woocommerce_login_form', array('WPCaptcha_Functions', 'login_print_scripts'));
add_filter( 'edd_login_fields_after', array('WPCaptcha_Functions', 'captcha_fields'));
add_filter( 'edd_login_fields_after', array('WPCaptcha_Functions', 'login_print_scripts'));
}
// Handle registration captcha
if($options['captcha_show_wp_registration']){
add_filter( 'registration_errors', array('WPCaptcha_Functions', 'handle_captcha_wp_registration'), 10, 3 );
add_filter( 'register_form', array('WPCaptcha_Functions', 'captcha_fields'));
}
// Handle lost password captcha
if($options['captcha_show_wp_lost_password']){
add_filter( 'lostpassword_form', array('WPCaptcha_Functions', 'captcha_fields'));
add_filter( 'resetpass_form', array('WPCaptcha_Functions', 'captcha_fields'));
add_action( 'woocommerce_lostpassword_form', array('WPCaptcha_Functions', 'captcha_fields'));
add_action( 'woocommerce_resetpassword_form', array('WPCaptcha_Functions', 'captcha_fields'));
add_action( 'woocommerce_lostpassword_form', array('WPCaptcha_Functions', 'login_print_scripts'));
add_action( 'woocommerce_resetpassword_form', array('WPCaptcha_Functions', 'login_print_scripts'));
add_action( 'lostpassword_post', array('WPCaptcha_Functions', 'process_lost_password_form'), 10, 1 );
add_action( 'validate_password_reset', array('WPCaptcha_Functions', 'process_lost_password_form'), 10, 2 );
}
// Handle comment form captcha
if($options['captcha_show_wp_comment']){
add_filter( 'comment_form_after_fields', array('WPCaptcha_Functions', 'captcha_fields'));
add_filter( 'comment_form_after_fields', array('WPCaptcha_Functions', 'login_print_scripts'));
add_filter( 'preprocess_comment', array('WPCaptcha_Functions', 'process_comment_form'), 10, 1 );
}
// Handle woocommerce registration
if($options['captcha_show_woo_registration']){
add_filter( 'woocommerce_register_form', array('WPCaptcha_Functions', 'captcha_fields'));
add_filter( 'woocommerce_register_form', array('WPCaptcha_Functions', 'login_print_scripts'));
add_filter( 'woocommerce_process_registration_errors', array('WPCaptcha_Functions', 'check_woo_register_form_validation' ) );
}
// Handle woocommerce checkout
if($options['captcha_show_woo_checkout']){
add_action( 'woocommerce_review_order_before_submit', array('WPCaptcha_Functions', 'captcha_fields'));
add_action( 'woocommerce_review_order_before_submit', array('WPCaptcha_Functions', 'login_print_scripts'));
add_action( 'woocommerce_checkout_process', array('WPCaptcha_Functions', 'check_woo_checkout_form'));
}
// Handle Easy Digital Downloads registration
if($options['captcha_show_edd_registration']){
add_filter( 'edd_register_form_fields_before_submit', array('WPCaptcha_Functions', 'captcha_fields'));
add_filter( 'edd_register_form_fields_before_submit', array('WPCaptcha_Functions', 'login_print_scripts'));
add_action( 'edd_process_register_form', array('WPCaptcha_Functions', 'check_edd_register_form'));
}
// Handle BuddyPress registration
if($options['captcha_show_bp_registration']){
add_filter( 'bp_after_signup_profile_fields', array('WPCaptcha_Functions', 'captcha_fields'));
add_filter( 'bp_after_signup_profile_fields', array('WPCaptcha_Functions', 'login_print_scripts'));
add_action( 'bp_signup_validate', array('WPCaptcha_Functions', 'process_buddypress_signup_form'));
}
add_action('login_enqueue_scripts', array('WPCaptcha_Functions', 'login_enqueue_scripts' ));
add_action('login_head', array('WPCaptcha_Functions', 'login_head' ), 9999);
remove_filter('authenticate', 'wp_authenticate_username_password', 9999, 3);
add_filter('authenticate', array('WPCaptcha_Functions', 'wp_authenticate_username_password'), 9999, 3);
if($options['login_protection']){
add_action('login_form', array('WPCaptcha_Functions', 'login_form_fields'));
add_action('wp_login_failed', array('WPCaptcha_Functions', 'loginFailed' ), 10, 2);
add_filter('login_errors', array('WPCaptcha_Functions', 'login_error_message' ));
}
} // if not admin
} // init
/**
* Get plugin version
*
* @since 5.0
*
* @return int plugin version
*
*/
static function get_plugin_version()
{
$plugin_data = get_file_data(__FILE__, array('version' => 'Version'), 'plugin');
self::$version = $plugin_data['version'];
return $plugin_data['version'];
} // get_plugin_version
/**
* Set plugin version and texdomain
*
* @since 5.0
*
* @return null
*/
static function plugins_loaded()
{
self::get_plugin_version();
load_plugin_textdomain('advanced-google-recaptcha');
} // plugins_loaded
static function run()
{
self::plugins_loaded();
WPCaptcha_Setup::load_actions();
}
} // class WPCaptcha
/**
* Setup Hooks
*/
register_activation_hook(__FILE__, array('WPCaptcha_Setup', 'activate'));
register_deactivation_hook(__FILE__, array('WPCaptcha_Setup', 'deactivate'));
register_uninstall_hook(__FILE__, array('WPCaptcha_Setup', 'uninstall'));
add_action('plugins_loaded', array('wpcaptcha', 'run'), -9999);
add_action('init', array('wpcaptcha', 'init'), -1);