Tribe__Tickets__Data_API::get_event_ids( $post_id )
Return Array of Event IDs when passed an Order, Ticket, or Attendee ID
Contents
Parameters
- $post_id
-
(Required)
Return
(array)
Source
File: src/Tribe/Data_API.php
public function get_event_ids( $post_id ) {
$services = $this->detect_by_id( $post_id );
if ( ! is_array( $services ) ) {
$services = array();
}
// if this id is not an order id or a ticket id return
$is_ticket_related = array_intersect( array( 'order', 'ticket', 'attendee', 'product' ), $services );
if ( ! $is_ticket_related ) {
return array();
}
// if no post type or module class return
if ( empty( $services['post_type'] ) || empty( $services['class'] ) ) {
return array();
}
$module_class = $services['class'];
/**
* if we have a rsvp order with a unique rsvp order key
* change $post_id to the first rsvp post's id
*/
if ( ! is_numeric( $post_id ) && 'Tribe__Tickets__RSVP' === $module_class ) {
$post_id = $this->get_rsvp_post_id_from_order_key( $post_id );
}
$event_id_key = $this->ticket_class[ $module_class ]['event_id_key'];
$event_ids = array();
$is_product = array_intersect( array( 'product' ), $services );
if ( $is_product ) {
$tribe_for_event = $this->ticket_class[ $module_class ]['tribe_for_event'];
$event_ids[] = (int) get_post_meta( $post_id, $tribe_for_event, true );
return $event_ids;
}
// if rsvp or a ticket id get the connected id field
$is_ticket_attendee = array_intersect( array( 'ticket', 'attendee' ), $services );
if ( 'Tribe__Tickets__RSVP' === $module_class || $is_ticket_attendee ) {
$event_ids[] = (int) get_post_meta( $post_id, $event_id_key, true );
return $event_ids;
}
$ticket_cpt = $this->ticket_class[ $module_class ]['ticket'];
$order_id_key = $this->ticket_class[ $module_class ]['order_id_key'];
if ( ! $order_id_key ) {
return array();
}
$order_tickets = get_posts( array(
'post_type' => $ticket_cpt,
'meta_key' => $order_id_key,
'meta_value' => $post_id,
'posts_per_page' => -1,
) );
foreach ( $order_tickets as $ticket ) {
$event_id = get_post_meta( $ticket->ID, $event_id_key, true );
if ( ! in_array( $event_id, $event_ids ) ) {
$event_ids[] = (int) $event_id;
}
}
return $event_ids;
}