ADVAIPBL_PLUGIN_PATH . 'includes/lib/RobThree/Auth/',
'BaconQrCode\\' => ADVAIPBL_PLUGIN_PATH . 'includes/lib/BaconQrCode/',
'DASPRiD\\Enum\\' => ADVAIPBL_PLUGIN_PATH . 'includes/lib/DASPRiD/Enum/',
'GeoIp2\\' => ADVAIPBL_PLUGIN_PATH . 'includes/lib/GeoIp2/',
'MaxMind\\Db\\' => ADVAIPBL_PLUGIN_PATH . 'includes/lib/MaxMind/Db/',
];
foreach ($prefix_map as $prefix => $base_dir) {
$len = strlen($prefix);
if (strncmp($prefix, $class, $len) !== 0) {
continue;
}
$relative_class = substr($class, $len);
$file = rtrim($base_dir, '/') . '/' . str_replace('\\', '/', $relative_class) . '.php';
if (file_exists($file)) {
require $file;
return;
}
}
});
$advaipbl_core_files = [
'includes/class-advaipbl-geolocation-manager.php',
'includes/class-advaipbl-session-manager.php',
'includes/class-advaipbl-main.php'
];
$advaipbl_missing_core_files = [];
foreach ($advaipbl_core_files as $advaipbl_file) {
if (file_exists(ADVAIPBL_PLUGIN_PATH . $advaipbl_file)) {
require_once ADVAIPBL_PLUGIN_PATH . $advaipbl_file;
} else {
$advaipbl_missing_core_files[] = $advaipbl_file;
}
}
if (!empty($advaipbl_missing_core_files)) {
if (function_exists('add_action')) {
add_action('admin_notices', function() use ($advaipbl_missing_core_files) {
echo '
Advanced IP Blocker: Plugin initialization failed. Core files are missing: ' . esc_html(implode(', ', $advaipbl_missing_core_files)) . '. Please reinstall the plugin.
';
});
}
}
function advaipbl_initialize() {
if (class_exists('ADVAIPBL_Main')) {
ADVAIPBL_Main::get_instance();
}
}
add_action( 'after_setup_theme', 'advaipbl_initialize' );
function advaipbl_add_settings_link( $links ) {
$settings_link = sprintf(
'%s',
esc_url( admin_url( 'admin.php?page=advaipbl_settings_page' ) ),
esc_html__( 'Settings', 'advanced-ip-blocker' )
);
array_unshift( $links, $settings_link );
return $links;
}
add_filter( 'plugin_action_links_' . plugin_basename( __FILE__ ), 'advaipbl_add_settings_link' );
function advaipbl_register_cli_commands() {
if ( defined( 'WP_CLI' ) && WP_CLI ) {
if ( version_compare( PHP_VERSION, '8.1', '>=' ) ) {
require_once ADVAIPBL_PLUGIN_PATH . 'includes/lib/RobThree/Auth/TwoFactorAuth.php';
require_once ADVAIPBL_PLUGIN_PATH . 'includes/class-advaipbl-2fa-manager.php';
}
require_once ADVAIPBL_PLUGIN_PATH . 'includes/class-advaipbl-cli.php';
WP_CLI::add_command( 'advaipbl', 'ADVAIPBL_CLI' );
}
}
add_action( 'plugins_loaded', 'advaipbl_register_cli_commands', 20 );
function advaipbl_activate_plugin() {
ADVAIPBL_Main::activate_plugin();
if ( false === get_option( 'advaipbl_version_installed' ) ) {
add_option( 'advaipbl_run_setup_wizard', true );
}
update_option( 'advaipbl_version_installed', ADVAIPBL_VERSION );
$instance = ADVAIPBL_Main::get_instance();
if ( isset( $instance->cron_manager ) ) {
$instance->cron_manager->schedule_jobs();
}
}
register_activation_hook( __FILE__, 'advaipbl_activate_plugin' );
function advaipbl_deactivate_plugin() {
// Limpiar todos los crons programados
$cron_hooks = [
'advaipbl_purge_old_logs_event',
'advaipbl_send_summary_email',
'advaipbl_send_signature_summary_email',
'advaipbl_update_spamhaus_list_event',
'advaipbl_send_telemetry_data_event',
'advaipbl_threat_score_decay_event',
'advaipbl_update_geoip_db_event',
'advaipbl_cleanup_expired_cache_event',
'advaipbl_scheduled_scan_event',
'advaipbl_daily_fim_scan',
'advaipbl_cloudflare_cleanup_event',
'advaipbl_update_community_list_event',
'advaipbl_community_report_event_v2',
'advaipbl_signature_analysis_event',
'advaipbl_cloudflare_sync_event',
'advaipbl_update_bot_lists_event',
'advaipbl_update_ai_bot_lists_event',
'advaipbl_clear_expired_blocks_event',
'advaipbl_aggregate_rules_metrics',
'advaipbl_aggregate_challenge_metrics',
'advaipbl_zeroday_sync_event',
'advaipbl_zeroday_version_check_event',
'advaipbl_advanced_zeroday_sync_event',
'advaipbl_advanced_zeroday_version_check_event',
'advaipbl_fim_signatures_sync_event',
'advaipbl_fim_signatures_version_check_event'
];
foreach ($cron_hooks as $hook) {
wp_clear_scheduled_hook($hook);
}
}
register_deactivation_hook( __FILE__, 'advaipbl_deactivate_plugin' );