Tribe__Tickets__Tickets_Handler::get_object_connections( int|WP_Post $object )

The simplest way to grab all the relationships from Any Ticket related objects

On RSVPs Attendees and Orders are the same Post

See also


Top ↑

Parameters

$object

(int|WP_Post) (Required) Which object you are trying to figure out.


Top ↑

Return

(object)


Top ↑

Source

File: src/Tribe/Tickets_Handler.php

	public function get_object_connections( $object ) {
		$connections = $this->get_connections_template();

		if ( ! $object instanceof WP_Post ) {
			$object = get_post( $object );
		}

		if ( ! $object instanceof WP_Post ) {
			return $connections;
		}

		$provider_index = array(
			'rsvp' => 'Tribe__Tickets__RSVP',
			'tpp'  => 'Tribe__Tickets__Commerce__PayPal__Main',
			'woo'  => 'Tribe__Tickets_Plus__Commerce__WooCommerce__Main',
			'edd'  => 'Tribe__Tickets_Plus__Commerce__EDD__Main',
		);

		$relationships = array(
			'event' => array(
				// RSVP
				'_tribe_rsvp_event' => 'rsvp',
				'_tribe_rsvp_for_event' => 'rsvp',

				// PayPal tickets
				'_tribe_tpp_event' => 'tpp',
				'_tribe_tpp_for_event' => 'tpp',

				// EDD
				'_tribe_eddticket_event' => 'edd',
				'_tribe_eddticket_for_event' => 'edd',

				// Woo
				'_tribe_wooticket_event' => 'woo',
				'_tribe_wooticket_for_event' => 'woo',
			),
			'product' => array(
				// RSVP
				'_tribe_rsvp_product' => 'rsvp',

				// PayPal tickets
				'_tribe_tpp_product' => 'tpp',

				// EDD
				'_tribe_eddticket_product' => 'edd',

				// Woo
				'_tribe_wooticket_product' => 'woo',
			),
			'order' => array(
				// RSVP
				'_tribe_rsvp_order' => 'rsvp',

				// PayPal tickets
				'_tribe_tpp_order' => 'tpp',

				// EDD
				'_tribe_eddticket_order' => 'edd',

				// Woo
				'_tribe_wooticket_order' => 'woo',

			),
			'order_item' => array(
				// PayPal tickets
				'_tribe_tpp_order' => 'tpp',

				// Woo
				'_tribe_wooticket_order_item' => 'woo',
			),
		);

		foreach ( $relationships as $what => $keys ) {
			foreach ( $keys as $key => $provider ) {
				// Skip any key that doens't exist
				if ( ! metadata_exists( 'post', $object->ID, $key ) ) {
					continue;
				}

				// When we don't have a provider yet we test and fetch it
				if ( ! $connections->provider && isset( $provider_index[ $provider ] ) ) {
					$connections->provider = $provider_index[ $provider ];
				}

				// Fetch it
				$meta = get_post_meta( $object->ID, $key, true );

				// Makes sure we have clean data
				if ( empty( $meta ) ) {
					$meta = null;
				} elseif ( is_numeric( $meta ) ) {
					$meta = (int) $meta;
				}

				// The meta value as a connection
				$connections->{$what} = $meta;
			}
		}

		// If we have a valid provider get it
		if ( $connections->provider && class_exists( $connections->provider ) ) {
			$connections->provider = call_user_func( array( $connections->provider, 'get_instance' ) );
		}

		return $connections;
	}

Top ↑

Changelog

Changelog
Version Description
4.6.2
4.12.3 Introduced.