function epl_get_waitlist_approved_url($force = false, $mode = 'wl')
{
    if (!$force && (epl_get_element('epl_rid', $_GET) || !EPL_IS_ADMIN)) {
        return;
    }
    global $event_details, $regis_details;
    $regis_id = $regis_details['ID'];
    $event_id = $event_details['ID'];
    $url_vars = array('page_id' => $page_id, 'epl_action' => epl_regis_flow() <= 2 ? 'process_cart_action' : 'regis_form', 'cart_action' => 'add', 'event_id' => $event_id ? $event_id : $event_details['ID'], 'epl_event' => false, 'epl_rid' => $regis_id, 'epl_r_m' => $mode, 'epl_wlh' => MD5($regis_details['post_date']));
    $base_url = get_the_register_button($event_id, true);
    $regis_url = add_query_arg($url_vars, $base_url);
    return $regis_url;
    //wp_redirect( $regis_url );
    //die();
}
 function set_next_step_vars($current_step = null)
 {
     //$bt = debug_backtrace();
     //echo "<pre class='prettyprint'>" . __LINE__ . "> " . print_r($bt[0]['line'], true). "</pre>";
     //echo "<pre class='prettyprint'>" . __LINE__ . "> " . print_r($bt[0]['function'], true). "</pre>";
     /*
      * - if on regis form and offline or free, thank you
      * - if regis form and cc or pp, overview
      * - if overview and cc, show card form, complete
      * - if overview and pp, continue
      * - if overview and offline, complete
      *
      * - if epl_regis_flow() and regis form -> payment -> complete
      * - if epl_regis_flow() and regis form and free of offline -> complete
      */
     global $epl_current_step;
     $regis_flow_steps = array(1 => 'show_cart', 5 => 'regis_form', 10 => 'show_cart_overview', 30 => 'redirect', 100 => 'thank_you_page');
     $this->steps = array('show_cart' => array(1 => array('next' => 'regis_form', 'next_label' => epl__('Attendee Information')), 2 => array('next' => 'regis_form', 'next_label' => epl__('Attendee Information'))), 'regis_form' => array(1 => array('prev' => 'show_cart', 'next' => 'show_cart_overview', 'next_label' => epl__('Overview')), 2 => array('prev' => 'show_cart', 'next' => 'thank_you_page', 'next_label' => epl__('Confirm and Complete')), 10 => array('next' => 'thank_you_page', 'next_label' => epl__('Confirm and Complete'))), 'show_cart_overview' => array(1 => array('prev' => 'regis_form', 'next' => 'thank_you_page', 'next_label' => epl__('Confirm and Complete')), 2 => array('prev' => 'regis_form', 'next' => 'show_cart_overview', 'next_label' => epl__('Confirm and Complete')), 10 => array('prev' => 'show_cart', 'next' => 'thank_you_page')), 'payment_page' => array(1 => array('prev' => 'regis_form', 'next' => 'payment_page', 'next_label' => epl__('Overview')), 2 => array('prev' => 'regis_form', 'next' => 'payment_page', 'next_label' => epl__('Confirm and Complete')), 10 => array('next' => 'thank_you_page', 'next_label' => epl__('Confirm and Complete'))));
     $flow = epl_regis_flow();
     $this->step_data = array();
     $gateway_info = $this->erm->get_gateway_info();
     $url_vars_next = $url_vars_prev = array('epl_action' => $this->steps[$current_step][$flow]['next'], 'cart_action' => false, '_date_id' => false);
     $url_vars_prev['epl_action'] = epl_get_element('prev', $this->steps[$current_step][$flow]);
     $this->step_data['form_action'] = add_query_arg($url_vars_next, $this->url);
     $gw_check = false;
     if ($flow == 1 && $epl_current_step == 'show_cart_overview') {
         $gw_check = true;
     } elseif (($flow == 2 || $flow == 10) && $epl_current_step == 'regis_form') {
         $gw_check = true;
     }
     if ($epl_current_step != 'process_cart_action' && $epl_current_step != 'show_cart') {
         $this->step_data['prev_step_url'] = add_query_arg($url_vars_prev, $this->url);
     }
     $this->step_data['next_step'] = $this->steps[$current_step][$flow]['next'];
     $this->step_data['next_step_label'] = $this->steps[$current_step][$flow]['next_label'];
     if (epl_is_free_event() || epl_regis_flow() < 10 && epl_is_zero_total() || $this->erm->has_selected_offline_payment() || epl_is_waitlist_flow() && !epl_is_waitlist_approved()) {
         $this->step_data['next_step_label'] = apply_filters('epl_show_cart_overview_free_next_step_label', $this->steps[$current_step][$flow]['next_label']);
     } elseif (epl_get_element('_epl_pay_type', $gateway_info) == '_pp_exp' && $gw_check) {
         $url_vars_next = array('epl_action' => 'payment_page', 'cart_action' => false, '_date_id' => false);
         $url_vars_prev['epl_action'] = $this->steps[$current_step][$flow]['prev'];
         $this->step_data['form_action'] = add_query_arg($url_vars_next, $this->url);
         $this->step_data['next_step_label'] = apply_filters('epl_show_cart_overview_pp_exp_next_step_label', epl__('Confirm and Continue to PayPal'));
     } elseif (epl_get_element('_epl_pay_type', $gateway_info) == '_payson' && $gw_check) {
         $url_vars_next = array('epl_action' => 'payment_page', 'cart_action' => false, '_date_id' => false);
         $url_vars_prev['epl_action'] = $this->steps[$current_step][$flow]['prev'];
         $this->step_data['form_action'] = add_query_arg($url_vars_next, $this->url);
         $this->step_data['next_step_label'] = apply_filters('epl_show_cart_overview_pp_exp_next_step_label', epl__('Continue to Pay'));
     } elseif (epl_get_element('_epl_pay_type', $gateway_info) == '_moneris' && $gw_check) {
         $this->step_data['next_step_label'] = apply_filters('epl_show_cart_overview_pp_exp_next_step_label', epl__('Continue to Pay'));
         $us_version = epl_get_element('_epl_moneris_country', $gateway_info, 'ca') == 'usa';
         $this->step_data['form_action'] = 'https://www3.moneris.com/HPPDP/index.php';
         if ($gateway_info['_epl_sandbox'] == 10) {
             $this->step_data['form_action'] = 'https://esqa.moneris.com/HPPDP/index.php';
         }
         if ($us_version) {
             $this->step_data['form_action'] = 'https://esplus.moneris.com/DPHPP/index.php';
             if ($gateway_info['_epl_sandbox'] == 10) {
                 $this->step_data['form_action'] = 'https://esplusqa.moneris.com/DPHPP/index.php';
             }
             $this->egm->setup_moneris_form_USA();
         } else {
             $this->egm->setup_moneris_form();
         }
     } elseif (epl_get_element('_epl_pay_type', $gateway_info) == '_auth_net_sim' && $gw_check) {
         $this->step_data['next_step_label'] = apply_filters('epl_show_cart_overview_pp_exp_next_step_label', epl__('Continue to Pay'));
         $this->step_data['form_action'] = 'https://secure.authorize.net/gateway/transact.dll';
         if ($gateway_info['_epl_sandbox'] == 10) {
             $this->step_data['form_action'] = 'https://test.authorize.net/gateway/transact.dll';
         }
         $this->egm->setup_authnet_sim_form();
     } elseif ($this->erm->has_selected_cc_payment() && ($gw_check || $this->error)) {
         $url_vars_next = array('epl_action' => 'payment_page', 'cart_action' => false, '_date_id' => false);
         $this->step_data['form_action'] = add_query_arg($url_vars_next, $this->url);
         $this->step_data['next_step_label'] = apply_filters('epl_show_cart_overview_cc_next_step_label', $this->steps[$current_step][$flow]['next_label']);
     }
     $this->step_data = apply_filters('epl_front__set_next_step_vars__final', $this->step_data, $flow);
     return $this->step_data;
 }
 function ok_to_proceed($force_check = false, $event_id = null)
 {
     global $event_details, $current_att_count, $event_snapshot, $epl_error;
     setup_event_details($event_id);
     $_response = '';
     $_errors = array();
     $event_cart_details = $this->get_events_in_cart($event_id);
     foreach ($event_cart_details as $event_id => $_totals) {
         if ($_totals == 0) {
             continue;
         }
         $total_att = epl_get_element_m($event_id, 'total', epl_get_element('_att_quantity', $_totals, array()));
         if ($total_att == 0 && (epl_regis_flow() <= 2 || $force_check)) {
             $_errors[] = array('', epl__('Please select a quantity.'));
         }
         $cart_dates = $this->get_the_cart_dates();
         if (epl_is_empty_array(epl_get_element($event_id, $cart_dates, array())) && epl_get_element('cart_action', $_REQUEST) != 'add') {
             $_errors[] = array('', epl__('Please select at least one date.'));
         }
         $_snapshot = $this->event_snapshot($event_id);
         if (isset($_snapshot[$event_id]['error'])) {
             $_errors = array_merge($_errors, $_snapshot[$event_id]['error']);
         }
         $_errors = apply_filters('epl_erm__ok_to_proceed__var_errors', $_errors);
         if (!epl_is_empty_array($_errors)) {
             $tmpl = array('table_open' => '<table border="1" cellpadding="2" cellspacing="1" class="epl_error">');
             $this->epl_table->set_template($tmpl);
             $this->epl_table->set_heading('', '');
             $_response = $this->epl_table->generate($_errors);
             $this->epl_table->clear();
             $this->epl->epl_util->set_response_param('is_ok_for_waitlist', true);
             //epl_is_waitlist_flow());
         }
     }
     $this->ok_to_proceed = $_response;
     if ($_response !== '') {
         $this->epl->epl_util->set_response_param('cart_errors_present', 1);
     }
     return $_response;
 }
 function get_the_register_button($event_id = null, $url_only = false, $args = array())
 {
     global $post, $event_details;
     $args = apply_filters('epl__get_the_register_button_args', $args);
     if (is_null($event_id) && !epl_is_ok_to_show_regis_button() && !$url_only) {
         return null;
     }
     $button_text = isset($args['button_text']) ? $args['button_text'] : epl_nz(epl_get_setting('epl_event_options', 'epl_register_button_text'), epl__('Register'));
     $url_vars = array();
     $class = epl_get_element('class', $args, 'epl_button ');
     $locked = false;
     //The shortcode page id.  Everythng goes through the shortcode
     static $page_id = null;
     // get_option( 'epl_shortcode_page_id' );
     $page_id = epl_get_shortcode_page_id();
     if (is_null($page_id)) {
         //'post_status' => 'publish'
         $pages = get_pages();
         foreach ($pages as $page) {
             if (!$page_id && stripos($page->post_content, '[events_planner') !== false) {
                 $page_id = $page->ID;
             }
         }
     }
     $url_vars = array('page_id' => $page_id, 'epl_action' => epl_regis_flow() <= 2 ? 'process_cart_action' : 'regis_form', 'cart_action' => 'add', 'event_id' => $event_id ? $event_id : $event_details['ID'], 'epl_event' => false, '_rand' => uniqid(), '_date_id' => epl_get_element('_date_id', $args), '_time_id' => epl_get_element('_time_id', $args));
     $url_vars = apply_filters('epl_get_the_register_button_url_vars', $url_vars);
     $regis_url = add_query_arg($url_vars, epl_get_sortcode_url());
     //epl_get_url() );
     if (epl_get_element('_epl_alt_regis_url', $event_details, '') != '') {
         $regis_url = epl_get_element('_epl_alt_regis_url', $event_details);
     }
     $member_only = epl_get_element('_epl_regis_privilege', $event_details, false);
     $url = $regis_url;
     if ($member_only == 1 && !is_user_logged_in() || epl_get_element('member_only', $args, 0) == 1) {
         $class = trim($class);
         // . ' lightbox_login';
         $url = wp_login_url($regis_url);
         $locked = true;
         $button_text = $button_text != '' ? $button_text : epl__('Login to Register');
     }
     if (!$locked && epl_sc_is_enabled() && empty($args['no_modal'])) {
         $class .= ' epl_register_button';
         $events_in_cart = $this->erm->get_events_in_cart();
         if (epl_sc_is_enabled() == 15) {
             $class .= ' button_cart';
         }
         if (isset($events_in_cart[$event_id])) {
             //TODO - come up with non global solution
             global $epl_wp_localize_script_args;
             $button_text = $epl_wp_localize_script_args['cart_added_btn_txt'];
             $class .= ' in_cart';
         }
     }
     if (!empty($args['no_modal'])) {
         $class .= ' epl-no-modal';
     }
     $url = apply_filters('epl_get_the_register_button_final_url', $url, $regis_url);
     $class = apply_filters('epl_get_the_register_button_final_class', $class);
     if ($url_only) {
         return $url;
     }
     return "<a id='{$event_details['ID']}' class='{$class}' href='" . esc_url_raw($url) . "' data-redirect_to='{$regis_url}'>{$button_text}</a>";
 }