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;
	}