Tribe__Tickets__Attendee_Repository::create_order_for_attendee( array $attendee_data, null|int|Tribe__Tickets__Ticket_Object $ticket = null )

Create an order for an attendee.


Parameters

$attendee_data

(array) (Required) List of attendee data to reference.

$ticket

(null|int|Tribe__Tickets__Ticket_Object) (Optional) The ticket object, ticket ID, or null if not relying on it.

Default value: null


Top ↑

Return

(int|string|false) The order ID or false if not created.


Top ↑

Source

File: src/Tribe/Attendee_Repository.php

	public function create_order_for_attendee( $attendee_data, $ticket = null ) {
		// Bail if we already have an attendee or order.
		if ( ! empty( $attendee_data['attendee_id'] ) || ! empty( $attendee_data['order_id'] ) ) {
			return false;
		}

		// Attempt to generate a new order.
		$orders = tribe_tickets_orders( $this->key_name );

		// Bail if provider-specific order repository not found.
		if ( empty( $orders->key_name ) ) {
			return false;
		}

		$tickets = Arr::get( $attendee_data, 'tickets', [] );

		if ( empty( $tickets ) ) {
			$ticket_id = $ticket;

			if ( is_object( $ticket ) ) {
				// Detect ticket ID from the object.
				$ticket_id = $ticket->ID;
			} elseif ( empty( $ticket ) && isset( $attendee_data['ticket_id'] ) ) {
				// Detect the ticket ID from the attendee data.
				$ticket_id = $attendee_data['ticket_id'];
			}

			// Bail if no valid ticket ID.
			if ( $ticket_id < 1 ) {
				return false;
			}

			$tickets = [
				[
					'id'       => $ticket_id,
					'quantity' => 1,
				],
			];
		}

		$order_args = [
			'full_name'    => Arr::get( $attendee_data, 'full_name' ),
			'email'        => Arr::get( $attendee_data, 'email' ),
			'user_id'      => Arr::get( $attendee_data, 'user_id' ),
			'order_status' => Arr::get( $attendee_data, 'attendee_status' ),
			'tickets'      => $tickets,
		];

		/**
		 * Allow filtering the order data being used to create an order for the attendee.
		 *
		 * @since 5.1.0
		 *
		 * @param array                         $order_args    List of order data to be saved.
		 * @param array                         $attendee_data List of additional attendee data.
		 * @param Tribe__Tickets__Ticket_Object $ticket        The ticket object or null if not relying on it.
		 */
		$order_args = apply_filters( 'tribe_tickets_attendee_repository_create_order_for_attendee_order_args', $order_args, $attendee_data, $ticket );

		// Check if order creation is disabled.
		if ( empty( $order_args ) ) {
			return false;
		}

		try {
			$order = $orders->create_order_for_ticket( $order_args );
		} catch ( Tribe__Repository__Usage_Error $exception ) {
			return false;
		}

		return $order;
	}

Top ↑

Changelog

Changelog
Version Description
5.1.0 Introduced.