Tribe__Tickets_Plus__Commerce__WooCommerce__Main::get_ticket( $post_id, $ticket_id )
Gets an individual ticket
Contents
Parameters
- $post_id
-
(Required)
- $ticket_id
-
(Required)
Return
Source
File: src/Tribe/Commerce/WooCommerce/Main.php
public function get_ticket( $post_id, $ticket_id ) {
if ( empty( $ticket_id ) ) {
return;
}
$product = wc_get_product( $ticket_id );
if ( ! $product ) {
return null;
}
$return = new Tribe__Tickets__Ticket_Object();
$product_post = get_post( $this->get_product_id( $product ) );
$qty_sold = get_post_meta( $ticket_id, 'total_sales', true );
$return->description = $product_post->post_excerpt;
$return->frontend_link = get_permalink( $ticket_id );
$return->ID = $ticket_id;
$return->name = $product->get_title();
$return->price = $this->get_price_value_for( $product, $return );
$return->regular_price = $product->get_regular_price();
$return->on_sale = (bool) $product->is_on_sale();
if ( $return->on_sale ) {
$return->price = $product->get_sale_price();
}
$return->capacity = tribe_tickets_get_capacity( $ticket_id );
$return->provider_class = get_class( $this );
$return->admin_link = admin_url( sprintf( get_post_type_object( $product_post->post_type )->_edit_link . '&action=edit', $ticket_id ) );
$return->report_link = $this->get_ticket_reports_link( null, $ticket_id );
$return->sku = $product->get_sku();
$return->show_description = $return->show_description();
$start_date = get_post_meta( $ticket_id, '_ticket_start_date', true );
$end_date = get_post_meta( $ticket_id, '_ticket_end_date', true );
if ( ! empty( $start_date ) ) {
$start_date_unix = strtotime( $start_date );
$return->start_date = Tribe__Date_Utils::date_only( $start_date_unix, true );
$return->start_time = Tribe__Date_Utils::time_only( $start_date_unix );
}
if ( ! empty( $end_date ) ) {
$end_date_unix = strtotime( $end_date );
$return->end_date = Tribe__Date_Utils::date_only( $end_date_unix, true );
$return->end_time = Tribe__Date_Utils::time_only( $end_date_unix );
}
// If the quantity sold wasn't set, default to zero
$qty_sold = $qty_sold ? $qty_sold : 0;
// Ticket stock is a simple reflection of remaining inventory for this item...
$stock = $product->get_stock_quantity();
// If we don't have a stock value, then stock should be considered 'unlimited'
if ( null === $stock ) {
$stock = -1;
}
$return->manage_stock( $product->managing_stock() );
$return->stock( $stock );
$return->global_stock_mode( get_post_meta( $ticket_id, Tribe__Tickets__Global_Stock::TICKET_STOCK_MODE, true ) );
$capped = get_post_meta( $ticket_id, Tribe__Tickets__Global_Stock::TICKET_STOCK_CAP, true );
if ( '' !== $capped ) {
$return->global_stock_cap( $capped );
}
$return->qty_sold( $qty_sold );
$return->qty_cancelled( $this->get_cancelled( $ticket_id ) );
$return->qty_refunded( $this->get_refunded( $ticket_id ) );
// From Event Tickets 4.4.9 onwards we can supply a callback to calculate the number of
// pending items per ticket on demand (since determining this is expensive and the data isn't
// always required, it makes sense not to do it unless required)
if ( version_compare( Tribe__Tickets__Main::VERSION, '4.4.9', '>=' ) ) {
$return->qty_pending( array( $this, 'get_qty_pending' ) );
$qty_pending = $return->qty_pending();
// Removes pending sales from total sold
$return->qty_sold( $qty_sold - $qty_pending );
} else {
// If an earlier version of Event Tickets is activated we'll need to calculate this up front
$pending_totals = $this->count_order_items_by_status( $ticket_id, 'incomplete' );
$return->qty_pending( $pending_totals['total'] ? $pending_totals['total'] : 0 );
}
/**
* Use this Filter to change any information you want about this ticket
*
* @param object $ticket
* @param int $post_id
* @param int $ticket_id
*/
$ticket = apply_filters( 'tribe_tickets_plus_woo_get_ticket', $return, $post_id, $ticket_id );
return $ticket;
}
Changelog
| Version | Description |
|---|---|
| 5.7.4 | Introduced. |