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.
Contents
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
Return
(int|string|false) The order ID or false if not created.
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;
}
Changelog
| Version | Description |
|---|---|
| 5.1.0 | Introduced. |