Tribe__Tickets__Tickets::get_event_attendees( int $post_id, array $args = array() )
Returns all the attendees for an event. Queries all registered providers.
Contents
Parameters
- $post_id
-
(int) (Required) ID of parent "event" post.
- $args
-
(array) (Optional) List of arguments to filter by.
Default value: array()
Return
(array) List of attendees.
Source
File: src/Tribe/Tickets.php
public static function get_event_attendees( $post_id, $args = [] ) {
$attendees = [];
/**
* Filter to skip all empty $post_ID otherwise will fallback to the current global post ID
*
* @since 4.9
* @since 4.10.6 Added $args parameter.
*
* @param bool $skip_empty_post If the empty post should be skipped or not
* @param int $post_id ID of the post being affected
* @param array $args List of arguments to filter by.
*/
$skip_empty_post = apply_filters( 'tribe_tickets_event_attendees_skip_empty_post', true, $post_id, $args );
/**
* Process an attendee only if:
*
* - $skip_empty_post is true and $post_id is not empty => ( true && false ) => ! false => true
* - $skip_empty_post is false and $post_id is empty => ( false && true ) => ! false => true
* - $skip_empty_post is false and $post_id is not empty => ( false && false ) => ! false => true
*
* Is not executed if:
*
* - $skip_empty_post is true and $post_id is empty => ( true && true ) => ! true => false
*/
if ( ! ( $skip_empty_post && empty( $post_id ) ) ) {
/**
* Filters the cache expiration when this function is called from an admin screen.
*
* Returning a falsy value here will force a fetch each time.
*
* @since 4.7
* @since 4.10.6 Added $args parameter.
*
* @param int $admin_expire The cache expiration in seconds; defaults to 2 minutes.
* @param int $post_id The ID of the post attendees are being fetched for.
* @param array $args List of arguments to filter by.
*/
$admin_expire = apply_filters( 'tribe_tickets_attendees_admin_expire', 120, $post_id, $args );
/**
* Filters the cache expiration when this function is called from a non admin screen.
*
* Returning a falsy value here will force a refetch each time.
*
* @since 4.7
* @since 4.10.6 Added $args parameter.
*
* @param int $admin_expire The cache expiration in seconds, defaults to an hour.
* @param int $post_id The ID of the post attendees are being fetched for.
* @param array $args List of arguments to filter by.
*/
$expire = apply_filters( 'tribe_tickets_attendees_expire', HOUR_IN_SECONDS, $post_id, $args );
$expire = is_admin() ? (int) $admin_expire : (int) $expire;
$attendees_from_cache = false;
$post_transient = null;
$cache_key = false;
if ( empty( $args ) && 0 < $post_id ) {
$cache_key = (int) $post_id;
}
if ( 0 !== $expire && $cache_key ) {
/** @var Tribe__Post_Transient $post_transient */
$post_transient = tribe( 'post-transient' );
$attendees_from_cache = $post_transient->get( $cache_key, self::ATTENDEES_CACHE );
// if there is a valid transient, we'll use the value from that and note
// that we have fetched from cache
if ( false !== $attendees_from_cache ) {
$attendees = empty( $attendees_from_cache ) ? [] : $attendees_from_cache;
$attendees_from_cache = true;
}
}
// if we haven't grabbed attendees from cache, then attempt to fetch attendees
if ( false === $attendees_from_cache && empty( $attendees ) ) {
$attendee_data = self::get_event_attendees_by_args( $post_id, $args );
if ( ! empty( $attendee_data['attendees'] ) ) {
$attendees = $attendee_data['attendees'];
}
if ( 0 !== $expire && $cache_key ) {
$post_transient->set( $cache_key, self::ATTENDEES_CACHE, $attendees, $expire );
}
}
}
/**
* Filters the return data for event attendees.
*
* @since 4.4
* @since 4.10.6 Added $args parameter.
*
* @param array $attendees Array of event attendees.
* @param int $post_id Event post ID.
* @param array $args List of arguments to filter by.
*/
return apply_filters( 'tribe_tickets_event_attendees', $attendees, $post_id, $args );
}