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' );