/** * Generates a list of attendees taking into account the Screen Options. * It's used both for the Email functionality, as for the CSV export. * * @param $event_id * * @return array */ private function generate_filtered_attendees_list($event_id) { /** * Fire immediately prior to the generation of a filtered (exportable) attendee list. * * @param int $event_id */ do_action('tribe_events_tickets_generate_filtered_attendees_list', $event_id); if (empty($this->attendees_page)) { $this->attendees_page = 'tribe_events_page_tickets-attendees'; } $items = Tribe__Tickets__Tickets::get_event_attendees($event_id); $columns = get_column_headers(get_current_screen()); $hidden = get_hidden_columns($this->attendees_page); // We dont want to export html inputs or private data $hidden[] = 'cb'; $hidden[] = 'provider'; $hidden = array_flip($hidden); $export_columns = array_diff_key($columns, $hidden); // Add the Purchaser Information $export_columns['purchaser_name'] = esc_html__('Customer Name', 'event-tickets-plus'); $export_columns['purchaser_email'] = esc_html__('Customer Email Address', 'event-tickets-plus'); /** * Used to modify what columns should be shown on the CSV export * The column name should be the Array Index and the Header is the array Value * * @var array Columns, associative array * @var array Items to be exported * @var int Event ID */ $export_columns = apply_filters('tribe_events_tickets_attendees_csv_export_columns', $export_columns, $items, $event_id); // Add the export column headers as the first row $rows = array(array_values($export_columns)); foreach ($items as $single_item) { // Fresh row! $row = array(); foreach ($export_columns as $column_id => $column_name) { // If additional columns have been added to the attendee list table we can obtain the // values by calling the table object's column_default() method - any other values // should simply be passed back unmodified $row[$column_id] = $this->attendees_table->column_default($single_item, $column_id); // Special handling for the check_in column if ('check_in' === $column_id && 1 == $single_item[$column_id]) { $row[$column_id] = esc_html__('Yes', 'event-tickets'); } } $rows[] = array_values($row); } return array_filter($rows); }
/** * Generates a list of attendees taking into account the Screen Options. * It's used both for the Email functionality, as for the CSV export. * * @param $event_id * * @return array */ private function _generate_filtered_attendees_list($event_id) { if (empty($this->attendees_page)) { $this->attendees_page = 'tribe_events_page_tickets-attendees'; } $columns = $this->attendees_table->get_columns(); $hidden = get_hidden_columns($this->attendees_page); // We dont want to export html inputs or private data $hidden[] = 'cb'; $hidden[] = 'provider'; // Get the data $items = Tribe__Tickets__Tickets::get_event_attendees($event_id); // if there are attendees, hide any column that the attendee array doesn't contain if (count($items)) { $hidden = array_merge($hidden, array_diff(array_keys($columns), array_keys($items[0]))); } // remove the hidden fields from the final list of columns $hidden = array_filter($hidden); $hidden = array_flip($hidden); $export_columns = array_diff_key($columns, $hidden); $columns_names = array_filter(array_values($export_columns)); $export_columns = array_filter(array_keys($export_columns)); $rows = array($columns_names); //And echo the data foreach ($items as $item) { $row = array(); foreach ($item as $key => $data) { if (in_array($key, $export_columns)) { if ($key == 'check_in' && $data == 1) { $data = esc_html__('Yes', 'event-tickets'); } $row[$key] = $data; } } $rows[] = array_values($row); } return array_filter($rows); }
/** * Generates a list of attendees taking into account the Screen Options. * It's used both for the Email functionality, as for the CSV export. * * @param $event_id * * @return array */ private function generate_filtered_attendees_list($event_id) { /** * Fire immediately prior to the generation of a filtered (exportable) attendee list. * * @param int $event_id */ do_action('tribe_events_tickets_generate_filtered_attendees_list', $event_id); if (empty($this->attendees_page)) { $this->attendees_page = 'tribe_events_page_tickets-attendees'; } //Add in Columns or get_column_headers() returns nothing $filter_name = "manage_{$this->attendees_page}_columns"; add_filter($filter_name, array($this->attendees_table, 'get_columns'), 15); $items = Tribe__Tickets__Tickets::get_event_attendees($event_id); //Add Handler for Community Tickets to Prevent Notices in Exports if (!is_admin()) { $columns = apply_filters($filter_name, array()); } else { $columns = array_map('wp_strip_all_tags', get_column_headers(get_current_screen())); } $hidden = get_hidden_columns($this->attendees_page); // We dont want to export html inputs or private data $hidden[] = 'cb'; $hidden[] = 'provider'; $hidden = array_flip($hidden); $export_columns = array_diff_key($columns, $hidden); // Add the Purchaser Information $export_columns['purchaser_name'] = esc_html__('Customer Name', 'event-tickets'); $export_columns['purchaser_email'] = esc_html__('Customer Email Address', 'event-tickets'); /** * Used to modify what columns should be shown on the CSV export * The column name should be the Array Index and the Header is the array Value * * @var array Columns, associative array * @var array Items to be exported * @var int Event ID */ $export_columns = apply_filters('tribe_events_tickets_attendees_csv_export_columns', $export_columns, $items, $event_id); // Add the export column headers as the first row $rows = array(array_values($export_columns)); foreach ($items as $single_item) { // Fresh row! $row = array(); foreach ($export_columns as $column_id => $column_name) { // If additional columns have been added to the attendee list table we can obtain the // values by calling the table object's column_default() method - any other values // should simply be passed back unmodified $row[$column_id] = $this->attendees_table->column_default($single_item, $column_id); // Special handling for the check_in column if ('check_in' === $column_id && 1 == $single_item[$column_id]) { $row[$column_id] = esc_html__('Yes', 'event-tickets'); } // Special handling for new human readable id if ('attendee_id' === $column_id) { if (isset($single_item[$column_id])) { $ticket_unique_id = get_post_meta($single_item[$column_id], '_unique_id', true); $ticket_unique_id = $ticket_unique_id === '' ? $single_item[$column_id] : $ticket_unique_id; $row[$column_id] = esc_html($ticket_unique_id); } } // Handle custom columns that might have names containing HTML tags $row[$column_id] = wp_strip_all_tags($row[$column_id]); } $rows[] = array_values($row); } return array_filter($rows); }