/** * Gets an individual ticket * * @param $event_id * @param $ticket_id * * @return null|Tribe__Tickets__Ticket_Object */ public function get_ticket($event_id, $ticket_id) { if (class_exists('WC_Product_Simple')) { $product = new WC_Product_Simple($ticket_id); } else { $product = new WC_Product($ticket_id); } if (!$product) { return null; } $return = new Tribe__Tickets__Ticket_Object(); $product_data = $product->get_post_data(); $qty = get_post_meta($ticket_id, 'total_sales', true); $return->description = $product_data->post_excerpt; $return->frontend_link = get_permalink($ticket_id); $return->ID = $ticket_id; $return->name = $product->get_title(); $return->price = $product->get_price(); $return->regular_price = $product->get_regular_price(); $return->on_sale = (bool) $product->is_on_sale(); $return->provider_class = get_class($this); $return->admin_link = admin_url(sprintf(get_post_type_object($product_data->post_type)->_edit_link . '&action=edit', $ticket_id)); $return->start_date = get_post_meta($ticket_id, '_ticket_start_date', true); $return->end_date = get_post_meta($ticket_id, '_ticket_end_date', true); $return->purchase_limit = get_post_meta($ticket_id, '_ticket_purchase_limit', true); $complete_totals = $this->count_order_items_by_status($ticket_id, 'complete'); $pending_totals = $this->count_order_items_by_status($ticket_id, 'incomplete'); $qty = $qty ? $qty : 0; $pending = $pending_totals['total'] ? $pending_totals['total'] : 0; // Ticket stock is a simple reflection of remaining inventory for this item... $stock = $product->get_stock_quantity(); // ...With some exceptions for global stock tickets $stock = $this->set_stock_level_for_global_stock_tickets($stock, $event_id, $ticket_id); $return->manage_stock($product->managing_stock()); $return->stock($stock); $return->global_stock_mode(get_post_meta($ticket_id, '_global_stock_mode', true)); $return->global_stock_cap(get_post_meta($ticket_id, '_global_stock_cap', true)); $return->qty_sold($qty); $return->qty_pending($pending); $return->qty_cancelled($this->get_cancelled($ticket_id)); if (empty($return->purchase_limit) && 0 !== (int) $return->purchase_limit) { /** * Filter the default purchase limit for the ticket * * @var int * * @return int */ $return->purchase_limit = apply_filters('tribe_tickets_default_purchase_limit', 0); } return apply_filters('wootickets_get_ticket', $return, $event_id, $ticket_id); }