diff --git a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-attendees-data.php b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-attendees-data.php index 306b66f0..8f1e7ffd 100644 --- a/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-attendees-data.php +++ b/wordpress-dev/wordpress/wp-content/plugins/hvac-community-events/includes/community/class-email-attendees-data.php @@ -79,29 +79,109 @@ class HVAC_Email_Attendees_Data { return array(); } - // Use The Events Calendar's function to get attendees - $attendees = tribe_tickets_get_attendees( $this->event_id ); $processed_attendees = array(); - if ( ! empty( $attendees ) ) { - foreach ( $attendees as $attendee ) { - $email = isset( $attendee['holder_email'] ) ? $attendee['holder_email'] : ''; - $name = isset( $attendee['holder_name'] ) ? $attendee['holder_name'] : ''; - $ticket_name = isset( $attendee['ticket_name'] ) ? $attendee['ticket_name'] : ''; + // First try using The Events Calendar's function + if (function_exists('tribe_tickets_get_attendees')) { + $attendees = tribe_tickets_get_attendees( $this->event_id ); + + if ( ! empty( $attendees ) ) { + foreach ( $attendees as $attendee ) { + $email = isset( $attendee['holder_email'] ) ? $attendee['holder_email'] : ''; + if (empty($email) && isset($attendee['purchaser_email'])) { + $email = $attendee['purchaser_email']; + } + + $name = isset( $attendee['holder_name'] ) ? $attendee['holder_name'] : ''; + if (empty($name) && isset($attendee['purchaser_name'])) { + $name = $attendee['purchaser_name']; + } + + $ticket_name = isset( $attendee['ticket_name'] ) ? $attendee['ticket_name'] : ''; + + // Only include attendees with valid emails + if ( ! empty( $email ) && is_email( $email ) ) { + $processed_attendees[] = array( + 'name' => $name, + 'email' => $email, + 'ticket_name' => $ticket_name, + 'attendee_id' => isset( $attendee['attendee_id'] ) ? $attendee['attendee_id'] : 0, + 'order_id' => isset( $attendee['order_id'] ) ? $attendee['order_id'] : 0, + ); + } + } + } + } + + // If no attendees found or function doesn't exist, fall back to direct query + if (empty($processed_attendees)) { + $processed_attendees = $this->get_attendees_fallback(); + } + + return $processed_attendees; + } + + /** + * Fallback method to get attendees directly from the database + * + * @return array Array of attendee data + */ + private function get_attendees_fallback() { + $processed_attendees = array(); + + // Query for attendees directly from the database + $attendees_query = new WP_Query([ + 'post_type' => 'tribe_tpp_attendees', + 'posts_per_page' => -1, + 'meta_query' => [ + [ + 'key' => '_tribe_tpp_event', + 'value' => $this->event_id, + 'compare' => '=', + ], + ], + ]); + + if ($attendees_query->have_posts()) { + while ($attendees_query->have_posts()) { + $attendees_query->the_post(); + $attendee_id = get_the_ID(); + + // Get associated ticket + $ticket_id = get_post_meta($attendee_id, '_tribe_tpp_product', true); + $ticket_name = $ticket_id ? get_the_title($ticket_id) : 'General Admission'; + + // Get purchaser details + $name = get_post_meta($attendee_id, '_tribe_tickets_full_name', true); + if (empty($name)) { + $name = get_post_meta($attendee_id, '_tribe_tpp_full_name', true); + } + if (empty($name)) { + $name = get_the_title($attendee_id); + } + + $email = get_post_meta($attendee_id, '_tribe_tickets_email', true); + if (empty($email)) { + $email = get_post_meta($attendee_id, '_tribe_tpp_email', true); + } + + // Get order info + $order_id = get_post_meta($attendee_id, '_tribe_tpp_order', true); // Only include attendees with valid emails - if ( ! empty( $email ) && is_email( $email ) ) { + if (!empty($email) && is_email($email)) { $processed_attendees[] = array( 'name' => $name, 'email' => $email, 'ticket_name' => $ticket_name, - 'attendee_id' => isset( $attendee['attendee_id'] ) ? $attendee['attendee_id'] : 0, - 'order_id' => isset( $attendee['order_id'] ) ? $attendee['order_id'] : 0, + 'attendee_id' => $attendee_id, + 'order_id' => $order_id, ); } } + wp_reset_postdata(); } - + return $processed_attendees; }