Tribe__Events__Aggregator__API__Import::translate_json_to_event( object $json )

Translates event JSON to the-events-calendar Event array format


Parameters

$json

(object) (Required) Event data in Event Aggregator format


Top ↑

Return

(array)


Top ↑

Source

File: src/Tribe/Aggregator/API/Import.php

	public function translate_json_to_event( $json ) {
		if (
			empty( $json->title )
			|| empty( $json->start_date )
			|| empty( $json->start_hour )
			|| empty( $json->start_minute )
			|| empty( $json->end_date )
			|| empty( $json->end_hour )
			|| empty( $json->end_minute )
		) {
			return tribe_error( 'core:aggregator:invalid-event-json' );
		}

		$event = array();

		$event['post_type'] = Tribe__Events__Main::POSTTYPE;

		$event['post_status'] = tribe( 'events-aggregator.settings' )->default_post_status( $json->origin );

		// translate json key/value pairs to event array key/value pairs
		foreach ( get_object_vars( $json ) as $key => $value ) {
			// venues and organizers are a bit more complex. We'll handle those later
			if ( 'venue' === $key || 'organizer' === $key ) {
				continue;
			}

			if ( isset( $this->event_field_map[ $key ] ) ) {
				$key = $this->event_field_map[ $key ];
			}

			$event[ $key ] = $value;
		}

		if ( ! empty( $json->venue ) ) {
			$event['Venue'] = array();

			if ( ! is_array( $json->venue ) ) {
				$json->venue = array( $json->venue );
			}

			foreach ( $json->venue as $venue ) {
				$venue_data = array();

				if ( empty( $venue->venue ) ) {
					continue;
				}

				foreach ( get_object_vars( $venue ) as $key => $value ) {
					if ( isset( $this->venue_field_map[ $key ] ) ) {
						$key = $this->venue_field_map[ $key ];
					}

					$venue_data[ $key ] = $value;
				}

				$event['Venue'][] = $venue_data;
			}
		}

		if ( ! empty( $json->organizer ) ) {
			$event['Organizer'] = array();

			if ( ! is_array( $json->organizer ) ) {
				$json->organizer = array( $json->organizer );
			}

			foreach ( $json->organizer as $organizer ) {
				$organizer_data = array();

				if ( empty( $organizer->organizer ) ) {
					continue;
				}

				foreach ( get_object_vars( $organizer ) as $key => $value ) {
					if ( isset( $this->organizer_field_map[ $key ] ) ) {
						$key = $this->organizer_field_map[ $key ];
					}

					$organizer_data[ $key ] = $value;
				}

				$event['Organizer'][] = $organizer_data;
			}
		}

		$show_map_setting = tribe( 'events-aggregator.settings' )->default_map( $json->origin );

		$event['EventShowMap']     = $show_map_setting;
		$event['EventShowMapLink'] = $show_map_setting;

		return $event;
	}