Tribe__Tickets__RSVP::save_ticket( int $post_id, Tribe__Tickets__Ticket_Object $ticket, array $raw_data = array() )
Saves an RSVP ticket.
Contents
Parameters
- $post_id
-
(int) (Required) Post ID.
- $ticket
-
(Tribe__Tickets__Ticket_Object) (Required) Ticket object.
- $raw_data
-
(array) (Optional) Ticket data.
Default value: array()
Return
(int) The updated/created ticket post ID.
Source
File: src/Tribe/RSVP.php
public function save_ticket( $post_id, $ticket, $raw_data = array() ) {
// assume we are updating until we find out otherwise
$save_type = 'update';
if ( empty( $ticket->ID ) ) {
$save_type = 'create';
/* Create main product post */
$args = array(
'post_status' => 'publish',
'post_type' => $this->ticket_object,
'post_author' => get_current_user_id(),
'post_excerpt' => $ticket->description,
'post_title' => $ticket->name,
'menu_order' => tribe_get_request_var( 'menu_order', -1 ),
);
$ticket->ID = wp_insert_post( $args );
// Relate event <---> ticket
add_post_meta( $ticket->ID, $this->event_key, $post_id );
} else {
$args = array(
'ID' => $ticket->ID,
'post_excerpt' => $ticket->description,
'post_title' => $ticket->name,
);
$ticket->ID = wp_update_post( $args );
}
if ( ! $ticket->ID ) {
return false;
}
// Updates if we should show Description
$ticket->show_description = isset( $ticket->show_description ) && tribe_is_truthy( $ticket->show_description ) ? 'yes' : 'no';
update_post_meta( $ticket->ID, tribe( 'tickets.handler' )->key_show_description, $ticket->show_description );
// Adds RSVP price
update_post_meta( $ticket->ID, '_price', $ticket->price );
$ticket_data = Tribe__Utils__Array::get( $raw_data, 'tribe-ticket', array() );
$this->update_capacity( $ticket, $ticket_data, $save_type );
if ( ! empty( $raw_data['ticket_start_date'] ) ) {
$start_date = Tribe__Date_Utils::maybe_format_from_datepicker( $raw_data['ticket_start_date'] );
if ( ! empty( $raw_data['ticket_start_time'] ) ) {
$start_date .= ' ' . $raw_data['ticket_start_time'];
}
$ticket->start_date = date( Tribe__Date_Utils::DBDATETIMEFORMAT, strtotime( $start_date ) );
$previous_start_date = get_post_meta( $ticket->ID, tribe( 'tickets.handler' )->key_start_date, true );
// Only update when we are modifying
if ( $ticket->start_date !== $previous_start_date ) {
update_post_meta( $ticket->ID, tribe( 'tickets.handler' )->key_start_date, $ticket->start_date );
}
} else {
delete_post_meta( $ticket->ID, '_ticket_start_date' );
}
if ( ! empty( $raw_data['ticket_end_date'] ) ) {
$end_date = Tribe__Date_Utils::maybe_format_from_datepicker( $raw_data['ticket_end_date'] );
if ( ! empty( $raw_data['ticket_end_time'] ) ) {
$end_date .= ' ' . $raw_data['ticket_end_time'];
}
$end_date = strtotime( $end_date );
$ticket->end_date = date( Tribe__Date_Utils::DBDATETIMEFORMAT, $end_date );
$previous_end_date = get_post_meta( $ticket->ID, tribe( 'tickets.handler' )->key_end_date, true );
// Only update when we are modifying
if ( $ticket->end_date !== $previous_end_date ) {
update_post_meta( $ticket->ID, tribe( 'tickets.handler' )->key_end_date, $ticket->end_date );
}
} else {
delete_post_meta( $ticket->ID, '_ticket_end_date' );
}
/**
* Generic action fired after saving a ticket (by type)
*
* @var int Post ID of post the ticket is tied to
* @var Tribe__Tickets__Ticket_Object Ticket that was just saved
* @var array Ticket data
* @var string Commerce engine class
*/
do_action( 'event_tickets_after_' . $save_type . '_ticket', $post_id, $ticket, $raw_data, __CLASS__ );
/**
* Generic action fired after saving a ticket
*
* @var int Post ID of post the ticket is tied to
* @var Tribe__Tickets__Ticket_Object Ticket that was just saved
* @var array Ticket data
* @var string Commerce engine class
*/
do_action( 'event_tickets_after_save_ticket', $post_id, $ticket, $raw_data, __CLASS__ );
tribe( 'tickets.version' )->update( $ticket->ID );
return $ticket->ID;
}