/**
  *    creates buttons for selecting number of attendees for an event
  *
  * @access 	public
  * @param 	object $event
  * @param 	bool 	$view_details
  * @return 	string
  */
 public static function display_ticket_selector($event = NULL, $view_details = FALSE)
 {
     // reset filter for displaying submit button
     remove_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
     // poke and prod incoming event till it tells us what it is
     if (!EED_Ticket_Selector::set_event($event)) {
         return false;
     }
     $event_post = self::$_event instanceof EE_Event ? self::$_event->ID() : $event;
     // grab event status
     $_event_active_status = self::$_event->get_active_status();
     if (!is_admin() && (!self::$_event->display_ticket_selector() || $view_details || post_password_required($event_post) || $_event_active_status != EE_Datetime::active && $_event_active_status != EE_Datetime::upcoming && $_event_active_status != EE_Datetime::sold_out && !($_event_active_status == EE_Datetime::inactive && is_user_logged_in()))) {
         return !is_single() ? EED_Ticket_Selector::display_view_details_btn() : '';
     }
     $template_args = array();
     $template_args['event_status'] = $_event_active_status;
     $template_args['date_format'] = apply_filters('FHEE__EED_Ticket_Selector__display_ticket_selector__date_format', get_option('date_format'));
     $template_args['time_format'] = apply_filters('FHEE__EED_Ticket_Selector__display_ticket_selector__time_format', get_option('time_format'));
     $template_args['EVT_ID'] = self::$_event->ID();
     $template_args['event'] = self::$_event;
     // is the event expired ?
     $template_args['event_is_expired'] = self::$_event->is_expired();
     if ($template_args['event_is_expired']) {
         return '<div class="ee-event-expired-notice"><span class="important-notice">' . __('We\'re sorry, but all tickets sales have ended because the event is expired.', 'event_espresso') . '</span></div>';
     }
     $ticket_query_args = array(array('Datetime.EVT_ID' => self::$_event->ID()), 'order_by' => array('TKT_order' => 'ASC', 'TKT_required' => 'DESC', 'TKT_start_date' => 'ASC', 'TKT_end_date' => 'ASC', 'Datetime.DTT_EVT_start' => 'DESC'));
     if (!EE_Registry::instance()->CFG->template_settings->EED_Ticket_Selector->show_expired_tickets) {
         //use the correct applicable time query depending on what version of core is being run.
         $current_time = method_exists('EEM_Datetime', 'current_time_for_query') ? time() : current_time('timestamp');
         $ticket_query_args[0]['TKT_end_date'] = array('>', $current_time);
     }
     // get all tickets for this event ordered by the datetime
     $template_args['tickets'] = EEM_Ticket::instance()->get_all($ticket_query_args);
     if (count($template_args['tickets']) < 1) {
         return '<div class="ee-event-expired-notice"><span class="important-notice">' . __('We\'re sorry, but all ticket sales have ended.', 'event_espresso') . '</span></div>';
     }
     // filter the maximum qty that can appear in the Ticket Selector qty dropdowns
     $template_args['max_atndz'] = apply_filters('FHEE__EE_Ticket_Selector__display_ticket_selector__max_tickets', self::$_event->additional_limit());
     if ($template_args['max_atndz'] < 1) {
         $sales_closed_msg = __('We\'re sorry, but ticket sales have been closed at this time. Please check back again later.', 'event_espresso');
         if (current_user_can('edit_post', self::$_event->ID())) {
             $sales_closed_msg .= sprintf(__('%sNote to Event Admin:%sThe "Maximum number of tickets allowed per order for this event" in the Event Registration Options has been set to "0". This effectively turns off ticket sales. %s(click to edit this event)%s', 'event_espresso'), '<div class="ee-attention" style="text-align: left;"><b>', '</b><br />', $link = '<span class="edit-link"><a class="post-edit-link" href="' . get_edit_post_link(self::$_event->ID()) . '">', '</a></span></div>');
         }
         return '<p><span class="important-notice">' . $sales_closed_msg . '</span></p>';
     }
     $templates['ticket_selector'] = TICKET_SELECTOR_TEMPLATES_PATH . 'ticket_selector_chart.template.php';
     $templates['ticket_selector'] = apply_filters('FHEE__EE_Ticket_Selector__display_ticket_selector__template_path', $templates['ticket_selector'], self::$_event);
     // redirecting to another site for registration ??
     $external_url = self::$_event->external_url() !== NULL || self::$_event->external_url() !== '' ? self::$_event->external_url() : FALSE;
     // set up the form (but not for the admin)
     $ticket_selector = !is_admin() ? EED_Ticket_Selector::ticket_selector_form_open(self::$_event->ID(), $external_url) : '';
     // if not redirecting to another site for registration
     if (!$external_url) {
         // then display the ticket selector
         $ticket_selector .= EEH_Template::locate_template($templates['ticket_selector'], $template_args);
     } else {
         // if not we still need to trigger the display of the submit button
         add_filter('FHEE__EE_Ticket_Selector__display_ticket_selector_submit', '__return_true');
         //display notice to admin that registration is external
         $ticket_selector .= !is_admin() ? '' : __('Registration is at an external URL for this event.', 'event_espresso');
     }
     // submit button and form close tag
     $ticket_selector .= !is_admin() ? EED_Ticket_Selector::display_ticket_selector_submit() : '';
     // set no cache headers and constants
     EE_System::do_not_cache();
     return $ticket_selector;
 }
 /**
  *    ticket_selector_form_open
  *
  * @access 		public
  * @param 		int 	$ID
  * @param 		string $external_url
  * @return 		string
  */
 public static function ticket_selector_form_open($ID = 0, $external_url = '')
 {
     // if redirecting, we don't need any anything else
     if ($external_url) {
         EE_Registry::instance()->load_helper('URL');
         $html = '<form method="GET" action="' . EEH_URL::refactor_url($external_url) . '">';
         $query_args = EEH_URL::get_query_string($external_url);
         foreach ($query_args as $query_arg => $value) {
             $html .= '<input type="hidden" name="' . $query_arg . '" value="' . $value . '">';
         }
         return $html;
     }
     EE_Registry::instance()->load_helper('Event_View');
     $checkout_url = EEH_Event_View::event_link_url($ID);
     if (!$checkout_url) {
         $msg = __('The URL for the Event Details page could not be retrieved.', 'event_espresso');
         EE_Error::add_error($msg, __FILE__, __FUNCTION__, __LINE__);
     }
     EED_Ticket_Selector::set_event();
     $extra_params = self::$_in_iframe ? ' target="_blank"' : '';
     $html = '<form method="POST" action="' . $checkout_url . '"' . $extra_params . '>';
     $html .= wp_nonce_field('process_ticket_selections', 'process_ticket_selections_nonce', TRUE, FALSE);
     $html .= '<input type="hidden" name="ee" value="process_ticket_selections">';
     $html = apply_filters('FHEE__EE_Ticket_Selector__ticket_selector_form_open__html', $html, self::$_event);
     return $html;
 }