Beispiel #1
0
 /**
  * Determines if the event has sold out of tickets.
  *
  * Note that this will also return true if the event has no tickets
  * whatsoever, and so it may be best to test with tribe_events_has_tickets()
  * before using this to avoid ambiguity.
  *
  * @param null $event
  *
  * @return bool
  */
 function tribe_events_has_soldout($event = null)
 {
     $has_tickets = tribe_events_has_tickets($event);
     $no_stock = tribe_events_count_available_tickets($event) < 1;
     $unlimited_inventory_items = tribe_events_has_unlimited_stock_tickets($event);
     return $has_tickets && $no_stock && !$unlimited_inventory_items;
 }
 /**
  * Accepts an array of objects used to generate Google Event Data and adds
  * "offers" data representing tickets where appropriate.
  *
  * @param array $events_data
  *
  * @return array
  */
 public function add_ticket_data(array $events_data)
 {
     foreach ($events_data as $this->event_id => &$this->event) {
         if (!tribe_events_has_tickets($this->event_id)) {
             continue;
         }
         $this->add_ticket_offers();
     }
     return $events_data;
 }
Beispiel #3
0
 /**
  * Adds the tickets data to the event Object
  *
  * @param array   $data
  * @param array   $args
  * @param WP_Post $post
  *
  * @return array
  */
 public function add_ticket_data($data, $args, $post)
 {
     if (!tribe_events_has_tickets($post->ID)) {
         return $data;
     }
     $tickets = Tribe__Tickets__Tickets::get_all_event_tickets($post->ID);
     // Reset it
     $data->offers = array();
     foreach ($tickets as $ticket) {
         $data->offers[] = $this->get_offer($ticket, $post);
     }
     return $data;
 }
Beispiel #4
0
    /**
     * Injects a buy/RSVP button into oembeds for events when necessary
     */
    public function inject_buy_button_into_oembed()
    {
        $event_id = get_the_ID();
        if (!tribe_events_has_tickets($event_id)) {
            return;
        }
        $tickets = Tribe__Tickets__Tickets::get_all_event_tickets($event_id);
        $has_non_rsvp = false;
        $available = false;
        $now = current_time('timestamp');
        foreach ($tickets as $ticket) {
            if ('Tribe__Tickets__RSVP' !== $ticket->provider_class) {
                $has_non_rsvp = true;
            }
            if ($ticket->date_in_range($now) && $ticket->is_in_stock()) {
                $available = true;
            }
        }
        // if there aren't any tickets available, bail
        if (!$available) {
            return;
        }
        $button_text = $has_non_rsvp ? __('Buy', 'event-tickets') : __('RSVP', 'event-tickets');
        /**
         * Filters the text that appears in the buy/rsvp button on event oembeds
         *
         * @var string The button text
         * @var int Event ID
         */
        $button_text = apply_filters('event_tickets_embed_buy_button_text', $button_text, $event_id);
        ob_start();
        ?>
		<a class="tribe-event-buy" href="<?php 
        echo esc_url(tribe_get_event_link());
        ?>
" title="<?php 
        the_title_attribute();
        ?>
" rel="bookmark"><?php 
        echo esc_html($button_text);
        ?>
</a>
		<?php 
        $buy_button = ob_get_clean();
        /**
         * Filters the buy button that appears on event oembeds
         *
         * @var string The button markup
         * @var int Event ID
         */
        echo apply_filters('event_tickets_embed_buy_button', $buy_button, $event_id);
    }