Tribe__Events__Aggregator__Record__CSV::get_csv_data()
Source
File: src/Tribe/Aggregator/Record/CSV.php
public function get_csv_data() {
if (
empty( $this->meta['file'] )
|| ! $file_path = $this->get_file_path()
) {
return $this->set_status_as_failed( tribe_error( 'core:aggregator:invalid-csv-file' ) );
}
$content_type = str_replace( 'tribe_', '', $this->meta['content_type'] );
$file_reader = new Tribe__Events__Importer__File_Reader( $file_path );
$importer = Tribe__Events__Importer__File_Importer::get_importer( $content_type, $file_reader );
$this->update_meta( 'source_name', basename( $file_path ) );
$rows = $importer->do_import_preview();
/*
* Strip whitespace from the beginning and end of row values
*/
$formatted_rows = array();
foreach ( $rows as $row ) {
$formatted_rows[] = array_map( 'trim', $row );
}
$rows = $formatted_rows;
$headers = array_shift( $rows );
/*
* To avoid empty columns from collapsing onto each other we provide
* each column without an header a generated one.
*/
$empty_counter = 1;
$formatted_headers = array();
foreach ( $headers as $header ) {
if ( empty( $header ) ) {
$header = __( 'Unknown Column ', 'the-events-calendar' ) . $empty_counter ++;
}
$formatted_headers[] = $header;
}
$headers = $formatted_headers;
$data = array();
foreach ( $rows as $row ) {
$item = array();
foreach ( $headers as $key => $header ) {
$item[ $header ] = $row[ $key ];
}
$data[] = $item;
}
return $data;
}