/** * Creates the Tickets FrontEnd facing View class * * This will happen on `plugins_loaded` by default * * @return Tribe__Tickets__Tickets_View */ public function tickets_view() { return Tribe__Tickets__Tickets_View::hook(); }
<?php /** * List of RSVP Orders * * Override this template in your own theme by creating a file at [your-theme]/tribe-events/tickets/orders-rsvp.php * * @package TribeEventsCalendar * @version 4.3 * */ if (!defined('ABSPATH')) { die('-1'); } $view = Tribe__Tickets__Tickets_View::instance(); $post_id = get_the_ID(); $post = get_post($post_id); $post_type = get_post_type_object($post->post_type); $user_id = get_current_user_id(); $user_info = get_userdata($user_id); if (!$view->has_rsvp_attendees($post_id, $user_id)) { return; } $attendee_groups = $view->get_event_rsvp_attendees_by_purchaser($post_id, $user_id); ?> <div class="tribe-rsvp"> <h2><?php printf(esc_html__('My RSVPs for This %s', 'event-tickets'), $post_type->labels->singular_name); ?> </h2> <?php
/** * Get all the attendees for an event. It returns an array with the * following fields: * * order_id * order_status * purchaser_name * purchaser_email * optout * ticket * attendee_id * security * product_id * check_in * provider * * @param $event_id * * @return array */ protected function get_attendees($event_id) { $attendees_query = new WP_Query(array('posts_per_page' => -1, 'post_type' => self::ATTENDEE_OBJECT, 'meta_key' => self::ATTENDEE_EVENT_KEY, 'meta_value' => $event_id, 'orderby' => 'ID', 'order' => 'DESC')); if (!$attendees_query->have_posts()) { return array(); } $attendees = array(); foreach ($attendees_query->posts as $attendee) { $checkin = get_post_meta($attendee->ID, $this->checkin_key, true); $security = get_post_meta($attendee->ID, $this->security_code, true); $product_id = get_post_meta($attendee->ID, self::ATTENDEE_PRODUCT_KEY, true); $optout = (bool) get_post_meta($attendee->ID, self::ATTENDEE_OPTOUT_KEY, true); $status = get_post_meta($attendee->ID, self::ATTENDEE_RSVP_KEY, true); $status_label = Tribe__Tickets__Tickets_View::instance()->get_rsvp_options($status); $user_id = get_post_meta($attendee->ID, self::ATTENDEE_USER_ID, true); $ticket_sent = (bool) get_post_meta($attendee->ID, self::ATTENDEE_TICKET_SENT, true); if (empty($product_id)) { continue; } $product = get_post($product_id); $product_title = !empty($product) ? $product->post_title : get_post_meta($attendee->ID, $this->deleted_product, true) . ' ' . __('(deleted)', 'event-tickets'); $attendee_data = array_merge($this->get_order_data($attendee->ID), array('optout' => $optout, 'ticket' => $product_title, 'attendee_id' => $attendee->ID, 'security' => $security, 'product_id' => $product_id, 'check_in' => $checkin, 'order_status' => $status, 'order_status_label' => $status_label, 'user_id' => $user_id, 'ticket_sent' => $ticket_sent)); /** * Allow users to filter the Attendee Data * * @var array An associative array with the Information of the Attendee * @var string What Provider is been used * @var WP_Post Attendee Object * @var int Event ID * */ $attendee_data = apply_filters('tribe_tickets_attendee_data', $attendee_data, 'rsvp', $attendee, $event_id); $attendees[] = $attendee_data; } return $attendees; }
/** * Updates the product sales if old and new order stati differ in stock size. * * @param int $order_id * @param string $attendee_order_status * @param int $ticket_id */ public function update_sales_by_order_status($order_id, $attendee_order_status, $ticket_id) { $rsvp_options = $this->tickets_view->get_rsvp_options(null, false); $previous_order_status = get_post_meta($order_id, self::ATTENDEE_RSVP_KEY, true); if (!(isset($rsvp_options[$previous_order_status]) && isset($rsvp_options[$attendee_order_status]))) { return; } $previous_order_status_stock_size = $rsvp_options[$previous_order_status]['decrease_stock_by']; $attendee_order_status_stock_size = $rsvp_options[$attendee_order_status]['decrease_stock_by']; if ($previous_order_status_stock_size == $attendee_order_status_stock_size) { return; } $sales = (int) get_post_meta($ticket_id, 'total_sales', true); $diff = $attendee_order_status_stock_size - $previous_order_status_stock_size; update_post_meta($ticket_id, 'total_sales', $sales + $diff); }
</td> <td colspan="3"> <input type="email" name="attendee[email]" id="tribe-tickets-email"> </td> </tr> <tr class="tribe-tickets-order_status-row"> <td> <label for="tribe-tickets-order_status"><?php echo esc_html_x('RSVP', 'order status label', 'event-tickets'); ?> :</label> </td> <td colspan="3"> <?php Tribe__Tickets__Tickets_View::instance()->render_rsvp_selector('attendee[order_status]', ''); ?> </td> </tr> <?php if (class_exists('Tribe__Tickets_Plus__Attendees_List') && !Tribe__Tickets_Plus__Attendees_List::is_hidden_on(get_the_ID())) { ?> <tr class="tribe-tickets-attendees-list-optout"> <td colspan="4"> <input type="checkbox" name="attendee[optout]" id="tribe-tickets-attendees-list-optout"> <label for="tribe-tickets-attendees-list-optout"><?php esc_html_e('Don\'t list me on the public attendee list', 'event-tickets'); ?> </label> </td>