'; // Get current user ID $current_user_id = get_current_user_id(); // Initialize variables with defaults $certificates = array(); $certificate_stats = array('total' => 0, 'active' => 0, 'revoked' => 0, 'emailed' => 0); $events = array(); $filter_event = isset($_GET['filter_event']) ? absint($_GET['filter_event']) : 0; $filter_status = isset($_GET['filter_status']) ? sanitize_text_field($_GET['filter_status']) : 'active'; // Removed problematic output buffering that interferes with WordPress header rendering // Get user's events directly from database to bypass TEC issues global $wpdb; $events_query = $wpdb->prepare(" SELECT DISTINCT p.ID, p.post_title FROM {$wpdb->posts} p LEFT JOIN {$wpdb->postmeta} pm ON p.ID = pm.post_id WHERE p.post_type = 'tribe_events' AND p.post_status = 'publish' AND p.post_author = %d ORDER BY p.post_date DESC ", $current_user_id); $events_results = $wpdb->get_results($events_query); if ($events_results) { foreach ($events_results as $event) { $events[$event->ID] = $event->post_title; } } // Get certificate stats $stats_query = $wpdb->prepare(" SELECT COUNT(DISTINCT c.id) as total, COUNT(DISTINCT CASE WHEN c.status = 'active' THEN c.id END) as active, COUNT(DISTINCT CASE WHEN c.status = 'revoked' THEN c.id END) as revoked, COUNT(DISTINCT e.certificate_id) as emailed FROM {$wpdb->prefix}hvac_certificates c LEFT JOIN {$wpdb->prefix}hvac_certificate_emails e ON c.id = e.certificate_id WHERE c.trainer_id = %d ", $current_user_id); $stats = $wpdb->get_row($stats_query); if ($stats) { $certificate_stats = array( 'total' => (int)$stats->total, 'active' => (int)$stats->active, 'revoked' => (int)$stats->revoked, 'emailed' => (int)$stats->emailed ); } // Build certificate query $cert_query = " SELECT DISTINCT c.*, a.name as attendee_name, a.email as attendee_email, e.post_title as event_name, pm.meta_value as event_date FROM {$wpdb->prefix}hvac_certificates c LEFT JOIN {$wpdb->prefix}hvac_attendees a ON c.attendee_id = a.id LEFT JOIN {$wpdb->posts} e ON c.event_id = e.ID LEFT JOIN {$wpdb->postmeta} pm ON e.ID = pm.post_id AND pm.meta_key = '_EventStartDate' WHERE c.trainer_id = %d "; $query_params = array($current_user_id); // Apply filters if ($filter_event > 0) { $cert_query .= " AND c.event_id = %d"; $query_params[] = $filter_event; } if ($filter_status && $filter_status !== 'all') { $cert_query .= " AND c.status = %s"; $query_params[] = $filter_status; } $cert_query .= " ORDER BY c.date_generated DESC LIMIT 100"; $certificates = $wpdb->get_results($wpdb->prepare($cert_query, $query_params)); ?>