analyzer = $analyzer; $this->optimization_engine = $optimization_engine; // Set up admin menu add_action('admin_menu', [$this, 'add_admin_menu']); // Register assets add_action('admin_enqueue_scripts', [$this, 'register_assets']); // Add AJAX handlers add_action('wp_ajax_fulgid_ai_db_optimizer_analyze', [$this, 'ajax_analyze_database']); add_action('wp_ajax_fulgid_ai_db_optimizer_optimize', [$this, 'ajax_optimize_database']); add_action('wp_ajax_fulgid_ai_db_optimizer_collect_performance', [$this, 'ajax_collect_performance_data']); add_action('wp_ajax_fulgid_ai_db_optimizer_get_performance_data', [$this, 'ajax_get_performance_data']); add_action('admin_enqueue_scripts', [$this, 'enqueue_chart_data']); add_action('wp_ajax_fulgid_ai_db_optimizer_get_composition_data', [$this, 'ajax_get_composition_data']); add_action('wp_ajax_fulgid_ai_db_optimizer_get_backup_history', [$this, 'ajax_get_backup_history']); add_action('wp_ajax_fulgid_ai_db_optimizer_restore_backup', [$this, 'ajax_restore_backup']); } /** * Add admin menu item */ public function add_admin_menu() { add_management_page( __('AI DB Optimizer', 'ai-database-optimizer'), __('AI DB Optimizer', 'ai-database-optimizer'), 'manage_options', 'ai-database-optimizer', [$this, 'render_admin_page'] ); } /** * Register admin assets */ public function register_assets($hook) { if ($hook != 'tools_page_ai-database-optimizer') { return; } // Enqueue Chart.js locally wp_enqueue_script( 'chartjs', FULGID_AI_DATABASE_OPTIMIZER_PLUGIN_URL . 'admin/js/chart.min.js', [], FULGID_AI_DATABASE_OPTIMIZER_VERSION, false // Load in header to ensure it's available before our script ); // Add script attributes for debugging add_filter('script_loader_tag', function($tag, $handle, $src) { if ($handle === 'chartjs') { // Add onload event to confirm Chart.js loads $tag = str_replace('