/** * Process the uploaded CSV. Under admin_init with capability + nonce (2026-09-16; it used to run inside the page render). */ function lum_handle_csv_process() { if (!isset($_POST['process_csv'])) return; if (!current_user_can('manage_options')) wp_die('Unauthorized'); check_admin_referer('lum_csv_process', 'lum_csv_process_nonce'); $csv_file_path = get_option('lum_uploaded_csv'); error_log("DEBUG: Retrieved CSV file path for processing: " . json_encode($csv_file_path)); if (!empty($csv_file_path) && file_exists($csv_file_path)) { lum_process_csv(); delete_option('lum_uploaded_csv'); if (file_exists($csv_file_path)) { unlink($csv_file_path); } delete_option('lum_csv_validation'); update_option('lum_csv_processing_feedback', 'CSV processed successfully!'); wp_safe_redirect(admin_url('admin.php?page=ld-user-manager&csv_done=1')); exit; } error_log("CSV Processing Error: File not found."); } add_action('admin_init', 'lum_handle_csv_process');