/** * 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; }