Tribe__Tickets__REST__V1__Endpoints__Attendee_Archive::get( WP_REST_Request $request )

Handles GET requests on the endpoint.


Parameters

$request

(WP_REST_Request) (Required)


Top ↑

Return

(WP_Error|WP_REST_Response) An array containing the data on success or a WP_Error instance on failure.


Top ↑

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 );
	}

Top ↑

Changelog

Changelog
Version Description
4.12.0 Introduced.