Tribe__Tickets__REST__V1__Endpoints__Attendee_Archive::get( WP_REST_Request $request )
Handles GET requests on the endpoint.
Contents
Parameters
- $request
-
(WP_REST_Request) (Required)
Return
(WP_Error|WP_REST_Response) An array containing the data on success or a WP_Error instance on failure.
Source
File: src/Tribe/REST/V1/Endpoints/Attendee_Archive.php
public function get( WP_REST_Request $request ) {
$query_args = $request->get_query_params();
$page = $request['page'];
$per_page = $request['per_page'];
$fetch_args = array();
$supported_args = array(
'provider' => 'provider',
'search' => 's',
'post_id' => 'event',
'ticket_id' => 'ticket',
'include_post' => 'event',
'include_ticket' => 'ticket',
'exclude_post' => 'event__not_in',
'exclude_ticket' => 'ticket__not_in',
'after' => 'after_date',
'before' => 'before_date',
'include' => 'post__in',
'exclude' => 'post__not_in',
'order' => 'order',
'post_status' => 'event_status',
'status' => 'post_status',
'order_status' => 'order_status',
'checkedin' => 'checkedin',
'rsvp_going_status' => 'rsvp_status__or_none',
'price_min' => 'price_min',
'price_max' => 'price_max',
'attendee_information_available' => 'has_attendee_meta',
);
foreach ( $supported_args as $request_arg => $query_arg ) {
if ( isset( $request[ $request_arg ] ) ) {
$fetch_args[ $query_arg ] = $request[ $request_arg ];
}
}
if ( current_user_can( 'read_private_posts' ) ) {
$permission = Tribe__Tickets__REST__V1__Attendee_Repository::PERMISSION_EDITABLE;
$fetch_args['post_status'] = Tribe__Utils__Array::get( $fetch_args, 'post_status', 'any' );
$fetch_args['event_status'] = Tribe__Utils__Array::get( $fetch_args, 'event_status', 'any' );
$fetch_args['order_status'] = Tribe__Utils__Array::get( $fetch_args, 'order_status', 'any' );
} else {
$permission = Tribe__Tickets__REST__V1__Attendee_Repository::PERMISSION_READABLE;
$fetch_args['post_status'] = Tribe__Utils__Array::get( $fetch_args, 'post_status', 'publish' );
$fetch_args['event_status'] = Tribe__Utils__Array::get( $fetch_args, 'event_status', 'publish' );
$fetch_args['order_status'] = Tribe__Utils__Array::get( $fetch_args, 'order_status', 'public' );
}
$query = tribe_attendees( 'restv1' )
->by_args( $fetch_args )
->permission( $permission );
if ( $request['order'] ) {
$query->order( $request['order'] );
}
if ( $request['orderby'] ) {
$query->order_by( $request['orderby'] );
}
if ( $request['offset'] ) {
$query->offset( $request['offset'] );
}
$query_args = array_intersect_key( $query_args, $this->READ_args() );
$found = $query->found();
if ( 0 === $found && 1 === $page ) {
$attendees = array();
} elseif ( 1 !== $page && $page * $per_page > $found ) {
return new WP_Error( 'invalid-page-number', $this->messages->get_message( 'invalid-page-number' ), array( 'status' => 400 ) );
} else {
$attendees = $query
->per_page( $per_page )
->page( $page )
->all();
}
/** @var Tribe__Tickets__REST__V1__Main $main */
$main = tribe( 'tickets.rest-v1.main' );
// make sure all arrays are formatted to by CSV lists
foreach ( $query_args as $key => &$value ) {
if ( is_array( $value ) ) {
$value = Tribe__Utils__Array::to_list( $value );
}
}
$data['rest_url'] = add_query_arg( $query_args, $main->get_url( '/attendees/' ) );
$data['total'] = $found;
$data['total_pages'] = (int) ceil( $found / $per_page );
$data['attendees'] = $attendees;
$headers = array(
'X-ET-TOTAL' => $data['total'],
'X-ET-TOTAL-PAGES' => $data['total_pages'],
);
return new WP_REST_Response( $data, 200, $headers );
}
Changelog
| Version | Description |
|---|---|
| 4.12.0 | Introduced. |