/** * 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; }
/** * 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) { do_action('AHEE_log', __FILE__, __FUNCTION__, ''); // d( $event ); if ($event instanceof EE_Event) { self::$_event = $event; } else { if ($event instanceof WP_Post && isset($event->EE_Event) && $event->EE_Event instanceof EE_Event) { self::$_event = $event->EE_Event; } else { if ($event instanceof WP_Post && (!isset($event->EE_Event) || !$event->EE_Event instanceof EE_Event)) { $event->EE_Event = EEM_Event::instance()->instantiate_class_from_post_object($event); self::$_event = $event->EE_Event; } else { $user_msg = __('No Event object or an invalid Event object was supplied.', 'event_espresso'); $dev_msg = $user_msg . __('In order to generate a ticket selector, please ensure you are passing either an EE_Event object or a WP_Post object of the post type "espresso_event" to the EE_Ticket_Selector class constructor.', 'event_espresso'); EE_Error::add_error($user_msg . '||' . $dev_msg, __FILE__, __FUNCTION__, __LINE__); return FALSE; } } } if ((!self::$_event->display_ticket_selector() || $view_details) && !is_admin()) { return !is_single() ? EED_Ticket_Selector::display_view_details_btn(self::$_event) : ''; } $template_args = array(); $template_args['date_format'] = apply_filters('FHEE__EED_Ticket_Selector__display_ticket_selector__date_format', 'l F jS, Y'); $template_args['time_format'] = apply_filters('FHEE__EED_Ticket_Selector__display_ticket_selector__time_format', 'g:i a'); $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 '<p><span class="important-notice">' . __('We\'re sorry, but all tickets sales have ended because the event is expired.', 'event_espresso') . '</span></p>'; } // 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>'; } // get all tickets for this event ordered by the datetime $template_args['tickets'] = EEM_Ticket::instance()->get_all(array(array('Datetime.EVT_ID' => self::$_event->ID()), 'order_by' => array('TKT_required' => 'DESC', 'TKT_order' => 'ASC', 'TKT_start_date' => 'ASC', 'TKT_end_date' => 'ASC', 'Datetime.DTT_EVT_start' => 'DESC'))); $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(self::$_event->ID()) : ''; $ticket_selector .= !is_admin() ? EED_Ticket_Selector::ticket_selector_form_close() : ''; return $ticket_selector; }