ecm = $this->epl->load_model( 'epl-common-model' ); $this->mode == 'overview'; $this->set_mode(); // $this->_start_cart_session(); } function _start_cart_session( $start_new = false ) { if ( $start_new ) { unset( $this->regis_meta['__epl'] ); $this->regis_meta['__epl'] = array( ); } if ( isset( $this->regis_meta['__epl']['_regis_id'] ) ) { $this->regis_id = $this->regis_meta['__epl']['_regis_id']; } else { $this->regis_id = strtoupper( $this->epl_util->make_unique_id( 26 ) ); $this->regis_meta['__epl']['regis_id'] = $this->regis_id; $this->regis_meta['__epl']['cart_time'] = time(); } } function get_regis_id() { return $this->regis_id; } /* * process addition and deletion of cart items */ function __in( $data ) { $this->event_meta = $data; $this->regis_meta['__epl'] = $data['__epl']; $this->regis_id = $data['__epl']['_regis_id']; $this->post_ID = $data['__epl']['post_id']; //echo "
" . print_r($data, true). "
"; return $this; } function __update_from_post( $index = '_dates' ) { switch ( $index ) { case '_dates': $this->regis_meta['__epl'][$this->regis_id]['_dates']['_epl_start_date'] = $_POST['epl_start_date']; $this->regis_meta['__epl'][$this->regis_id]['_dates']['_epl_start_time'] = $_POST['epl_start_time']; $this->regis_meta['__epl'][$this->regis_id]['_dates']['_att_quantity'] = $_POST['_att_quantity']; break; case 'regis-info': $epl_fields = $this->ecm->get_list_of_available_fields(); $regis_info = array_intersect_key( $_POST, $epl_fields ); $this->regis_meta['__epl'][$this->regis_id]['_attendee_info'] = $regis_info; break; case 'initial-save': $this->regis_meta['__epl'][$this->regis_id]['_events'] = array( ); break; case '_events': $this->regis_meta['__epl'][$this->regis_id]['_events'][$_POST['event_id']] = $this->event_meta['post_title']; break; case '_payment_info': $this->regis_meta['__epl'][$this->regis_id]['_events'][$_POST['event_id']] = $this->event_meta['post_title']; break; } return $this; } function __out() { update_post_meta( $this->post_ID, '__epl', $this->regis_meta['__epl'] ); update_post_meta( $this->post_ID, '_events', $this->regis_meta['__epl'][$this->regis_id]['_events'] ); update_post_meta( $this->post_ID, '_dates', $this->regis_meta['__epl'][$this->regis_id]['_dates'] ); update_post_meta( $this->post_ID, '_attendee_info', $this->regis_meta['__epl'][$this->regis_id]['_attendee_info'] ); } function add_event( $event_id = null ) { if ( is_null( $event_id ) ) return false; if ( !epl_is_addon_active( 'epl_multi_registration' ) ) unset( $this->regis_meta['__epl'][$this->regis_id]['_events'] ); $this->regis_meta['__epl'][$this->regis_id]['_events'][$event_id] = array( ); return $this; } function _process_cart( $data = array( ) ) { $defaults = array( 'cart_action' => 'add_event', 'event_id' => null, 'date_id' => null, 'time_id' => null, 'price_id' => null ); $args = $this->epl_util->clean_input( $args ); if ( $args['cart_action'] == 'calc_totals' ) { }else $this->_event_in_session( $args ); return $this; } /** * Adds or removes event in the session. * * @since 1.0.0 * @param int $var * @return string */ function _event_in_session( $args ) { $action = $args['cart_action']; $event_id = $args['event_id']; //if not multi regis, remove and re-add if ( !epl_is_addon_active( '_epl_multi_registration' ) ) unset( $this->regis_meta['__epl'][$this->regis_id]['_events'] ); if ( !is_null( $event_id ) ) { if ( ($action == 'add_event' && !isset( $this->regis_meta['__epl'][$this->regis_id]['_events'][$event_id] ) ) ) $this->regis_meta['__epl'][$this->regis_id]['_events'][$event_id] = array( ); elseif ( $action == 'delete' ) unset( $this->regis_meta['events_planner']['cart_items'][$event_id] ); elseif ( $action == 'get' ) return $this->regis_meta['events_planner']['cart_items'][$event_id]; } } function set_mode( $mode = 'edit' ) { //$this->mode = $mode; $this->mode = 'overview'; if ( $this->mode == 'overview' ) { $this->overview_trigger = array( ); $this->overview_trigger['overview'] = 1; } } /** * Display the cart for the user or the admin to select the dates, times and prices * * @since 1.0.0 * @param int $var * @return string */ function show_cart() { if ( is_null( $values ) ) $events_in_cart = $this->get_cart_values( '_events' ); else $events_in_cart = $values ['_events']; if ( empty( $events_in_cart ) ) return false; $events_in_cart = $this->epl_util->clean_output( $events_in_cart ); global $multi_time; $r = array( ); foreach ( $events_in_cart as $event_id => $event_date ) { if ( $event_id != '' ) { $this->event_meta = $this->ecm->setup_event_details( $event_id ); $multi_time = (isset( $this->event_meta['_epl_multi_time_select'] ) && $this->event_meta['_epl_multi_time_select'] == 10); $r['cart_items'][$event_id]['title'] = $this->event_meta['post_title']; $r['cart_items'][$event_id]['event_dates'] = $this->get_the_dates(); //= $this->epl_util->create_element( $epl_fields ); $r['cart_items'][$event_id]['event_time_and_prices'] = $this->get_time_and_prices_for_cart(); } } return $r; } function calculate_totals() { /* * price from db * qty in cart * epl_price_per * member discount and type * early bird discount and price * epl_price_per * - if 20, multiply total with number of days in the cart * */ //prices for this event $prices = $this->get_event_property( '_epl_price' ); //price covers event or per date $price_per = epl_nz( $this->get_event_property( '_epl_price_per' ), 10 ); //for each event in the cart $events = $this->get_events_values(); if ( empty( $events ) ) return false; foreach ( $events as $event_id => $val ) { //number of dates in the cart for this event. $dates = $this->regis_meta['__epl'][$this->regis_id]['_dates']['_epl_start_date'][$event_id]; $num_days_in_cart = count( $dates ); if ( !is_null( $this->get_att_quantity_values() ) ) { //attendee quantities in the cart for this event $att_qty = $this->regis_meta['__epl'][$this->regis_id]['_dates']['_att_quantity'][$event_id]; //total attendees for the event $day_total = array_sum( ( array ) $att_qty ); $data['total_price'] = 0; $price = 0; foreach ( $att_qty as $price_id => $price_qty ) { if ( is_array( $price_qty ) ) $_price = array_sum( $price_qty ); else $_price = $price_qty; $price = $_price * $prices[$price_id]; $data['total_price'] += $price; } } } return $this->epl->load_view( 'admin/registrations/cart-totals', $data, true ); } function get_the_stats() { $r = array( ); $r['epl_event_capacity'] = $this->event_meta['_epl_event_capacity']; $r['epl_event_capacity_per'] = $this->event_meta['_epl_event_capacity_per']; return "
" . print_r( $r, true ) . "
"; /* * -find the capacity * -find the section that the capacity belongs to * -find # registered * -calc available spaces. * */ } function get_the_dates_simple() { $epl_fields = array( 'input_type' => 'checkbox', 'input_name' => "epl_start_date[{$event_id}][]", 'options' => $this->event_meta['_epl_start_date'], 'default_checked' => 1 ); //has to register for all dates. if ( $this->event_meta['_epl_event_type'] != 6 ) { $epl_fields['readonly'] = 1; } $this->epl_util->create_element( $epl_fields ); } function get_event_property( $prop = '', $key = '' ) { if ( $prop == '' ) return null; if ( $key !== '' ) { if ( array_key_exists( $key, $this->event_meta[$prop] ) ) return $this->event_meta[$prop][$key]; } elseif ( isset( $this->event_meta[$prop] ) ) return $this->event_meta[$prop]; } /* * Before anything, we need to find out how many spots are available * for the event(s) that is inside the cart. */ function get_event_capacity() { /* * -need to find out * -capacity * -capacity per * -current number of attendees. */ global $capacity_components; if ( array_key_exists( 'capacity_components', $this->event_meta ) ) { $capacity_components = wp_parse_args( $this->event_meta, $capacity_components ); } $capacity_per = $this->event_meta['_epl_event_capacity_per']; //10 event, 20 date, 30 time, 40 price $capacity = $this->event_meta['_epl_event_capacity']; $num_attendees = $this->event_meta['_epl_num_current_attendees']; echo "
Capacity " . $this->event_meta['_epl_event_capacity']; echo "
Capacity Per " . $this->event_meta['_epl_event_capacity_per']; echo "
# Attendees " . $this->event_meta['_epl_num_current_attendees']; $av = array( ); if ( $capacity == '' ) { $available_spaces = 10000; } else { $available_spaces = $capacity - $num_attendees; } echo "
Available " . $available_spaces; } function update_this_cart_quantities() { /* * each event * each event date * - record qty * each event time * - record qty * each event price * - record qty */ global $capacity_components; $cap_per = $this->event_meta['_epl_event_capacity_per']; $cartregis_meta = $this->get_cart_values( '_dates' ); //event total $attendee_qty = array_sum( ( array ) $cartregis_meta['_att_quantity'][$this->event_meta['ID']] ); $capacity_components['event_qty'][$this->event_meta['ID']] = $attendee_qty; $multi_time = ($this->get_event_property( '_epl_multi_time_select' ) == 10); //for each day foreach ( ( array ) $cartregis_meta['_epl_start_date'] as $event_id => $event_dates ) { foreach ( $event_dates as $key => $event_date_id ) { $capacity_components['date_qty'][$event_date_id] = $attendee_qty; if ( $multi_time ) { $this->update_time_capacity( $event_date_id, $attendee_qty ); } } } //for each time, only if not a date specific time. if ( !$multi_time ) { $this->update_time_capacity( null, $attendee_qty ); } foreach ( ( array ) $cartregis_meta['_att_quantity'] as $event_id => $event_prices ) { foreach ( $event_prices as $event_price_id => $qty ) { $capacity_components['price_qty'][$event_price_id] = $qty; } } $this->regis_meta['__epl'][$this->regis_id]['cart_quantities'] = $capacity_components; } function update_time_capacity( $event_date_id = null, $attendee_qty = 0 ) { global $capacity_components; $cartregis_meta = $this->get_cart_values( '_dates' ); foreach ( ( array ) $cartregis_meta['_epl_start_time'] as $event_id => $event_times ) { foreach ( $event_times as $key => $event_time_id ) { if ( !is_null( $event_date_id ) ) { if ( $key == $event_date_id ) $capacity_components['time_qty'][$event_date_id][$event_time_id] = $attendee_qty; }else $capacity_components['time_qty'][$event_time_id] = $attendee_qty; } } } function update_event_capacity1() { /* * need the total qty here * need the type of capacity * - need the number of days in the cart * - need the number of times in the cart * - need the number of prices in the cart */ //get //if cap per = event $cap_per = $this->event_meta['_epl_event_capacity_per']; if ( $cap_per == 10 ) { //for entire event //for each one of the dates in the cart, apply the total of the att_quantity $v = $this->get_cart_values( '_dates' ); $attendee_qty = array_sum( ( array ) $v['_att_quantity'][$this->event_meta['ID']] ); $capacity_components['event_qty'][$this->event_meta['ID']] = $attendee_qty; } elseif ( $cap_per == 20 ) { //for each day $v = $this->get_cart_values( '_dates' ); foreach ( ( array ) $v['_epl_start_date'] as $event_id => $event_dates ) { $attendee_qty = array_sum( ( array ) $v['_att_quantity'][$event_id] ); foreach ( $event_dates as $k => $v ) $event_dates[$k] = $attendee_qty; $capacity_components['date_qty'] += ( array ) $event_dates; } } elseif ( $cap_per == 30 ) { //for each time $v = $this->get_cart_values( '_dates' ); foreach ( ( array ) $v['_epl_start_time'] as $event_id => $event_dates ) { $attendee_qty = array_sum( ( array ) $v['_att_quantity'][$event_id] ); foreach ( $event_dates as $k => $v ) $event_dates[$k] = $attendee_qty; $capacity_components['date_qty'] += ( array ) $event_dates; } } } function get_allowed_quantity( $event_info ) { $min = epl_nz( $event_info['_epl_min_attendee_per_regis'], 1 ); $max = epl_nz( $event_info['_epl_max_attendee_per_regis'], 1 ); $r = array( 0 => 0 ); //empty row. for ( $i = $min; $i <= $max; $i++ ) $r[$i] = $i; return $r; } function get_dates_values() { if ( isset( $this->regis_meta['__epl'][$this->regis_id]['_dates'] ) ) return $this->regis_meta['__epl'][$this->regis_id]['_dates']; return null; } function get_events_values() { if ( isset( $this->regis_meta['__epl'][$this->regis_id]['_events'] ) ) return $this->regis_meta['__epl'][$this->regis_id]['_events']; return null; } function get_cart_quantities() { if ( isset( $this->regis_meta['__epl'][$this->regis_id]['cart_quantities'] ) ) return $this->regis_meta['__epl'][$this->regis_id]['cart_quantities']; return null; } function get_att_quantity_values() { if ( !empty( $this->regis_meta['__epl'][$this->regis_id]['_dates']['_att_quantity'] ) ) return $this->regis_meta['__epl'][$this->regis_id]['_dates']['_att_quantity']; return null; } function get_current_value( $part = '_dates', $field = null, $key_1 = null, $key_2 = null ) { global $_on_admin; $sess_base = $this->regis_meta['__epl'][$this->regis_id]; if ( empty( $sess_base[$part] ) || empty( $sess_base[$part][$field] ) ) return null; if ( !is_null( $key_2 ) ) if ( array_key_exists( $key_2, ( array ) $sess_base[$part][$field][$key_1] ) ) return $sess_base[$part][$field][$key_1][$key_2]; elseif ( array_key_exists( $field, ( array ) $sess_base[$part] ) && array_key_exists( $key_1, ( array ) $sess_base[$part][$field] ) ) return $sess_base[$part][$field][$key_1]; else return null; } function get_the_dates() { global $multi_time; $data['date'] = array( ); $data['time'] = array( ); $datesregis_meta = $this->event_meta['_epl_start_date']; $input_type = (epl_nz( $this->event_meta['_epl_event_type'], 5 ) == 5) ? 'radio' : 'checkbox'; foreach ( $datesregis_meta as $event_date_id => $event_date ) { $value = $this->regis_meta['__epl'][$this->regis_id]['_dates']['_epl_start_date'][$this->event_meta['ID']]; $start_date = $this->event_meta['_epl_start_date'][$event_date_id]; $end_date = $this->event_meta['_epl_start_date'][$event_date_id]; $end_date = ($start_date != $end_date ? ' - ' . $end_date : ''); $epl_fields = array( 'input_type' => $input_type, 'input_name' => "epl_start_date[{$this->event_meta['ID']}][]", 'options' => array( $event_date_id => $start_date . $end_date ), 'default_checked' => 1, 'display_inline' => true, 'value' => $value ); $ok_to_register = epl_is_ok_to_register( $this->event_meta, $event_date_id ); if ( $ok_to_register !== true ) { $epl_fields['readonly'] = 1; $epl_fields['default_checked'] = 0; $epl_fields['options'][$event_date_id] .= $ok_to_register; } $epl_fields += ( array ) $this->overview_trigger; //has to register for all dates. if ( $this->event_meta['_epl_event_type'] != 6 ) { //$epl_fields['readonly'] = 1; } if ( $this->mode == 'overview' && !in_array( $event_date_id, ( array ) $value ) ) { }else $data['date'][] = $this->epl_util->create_element( $epl_fields ); if ( $multi_time ) { $data['time'][] = $this->_get_time_fields( $event_date_id ); } //} } return $this->epl->load_view( 'front/cart/cart-dates', $data, true ); } function get_time_and_prices_for_cart() { global $multi_time; //if each time slot has its own pricing if ( $this->event_meta['_epl_pricing_type'] == 10 ) { $r = ''; foreach ( $this->event_meta['_epl_start_time'] as $time_id => $time ) { $epl_fields = array( 'input_type' => 'text', 'input_name' => "epl_start_time[{$this->event_meta['ID']}][{$time_id}]", 'label' => $time . ' - ' . $this->event_meta['_epl_end_time'][$time_id], 'value' => $time //$v['epl_start_time'][$this->event_meta['ID']][$date_id] ); $epl_fields += ( array ) $this->overview_trigger; $data['event_time'] = $this->epl_util->create_element( $epl_fields ); $data['event_time'] = $data['event_time']['field'] . $data['event_time']['label']; $r .= $this->epl->load_view( 'front/cart/cart-times', $data, true ); $r .= $this->_get_prices_per_time( $time_id ); } return $r; } else { if ( !$multi_time ) $r .= $this->_get_time_fields(); $r .= $this->_get_prices(); } return $r; } /* applies to times with different prices */ function _get_time_for_price_fields( $date_id = null ) { $input_type = ( $this->event_meta['_epl_pricing_type'] == 10 ) ? 'text' : 'select'; $epl_fields = array( 'input_type' => $input_type, 'input_name' => "epl_start_time[{$this->event_meta['ID']}][{$date_id}]", 'options' => $this->event_meta['_epl_start_time'], 'value' => $this->get_current_value( '_dates', '_epl_start_time', $this->event_meta['ID'], $date_id ) //$v['_epl_start_time'][$this->event_meta['ID']][$date_id] ); $epl_fields += ( array ) $this->overview_trigger; $data['event_time'] = $this->epl_util->create_element( $epl_fields ); $data['event_time'] = $data['event_time']['field']; if ( !is_null( $date_id ) ) return $data['event_time']; return $this->epl->load_view( 'front/cart/cart-times', $data, true ); } function _get_time_fields( $date_id = null ) { //if it is time specific pricing, value hidden $input_type = ( $this->event_meta['_epl_pricing_type'] == 10 ) ? 'text' : 'select'; $times = $this->event_meta['_epl_start_time']; //adding the end time to the displayed value. Notice the reference foreach ( $times as $k => &$v ) { $v .= ' - ' . $this->event_meta['_epl_end_time'][$k]; } $epl_fields = array( 'input_type' => $input_type, 'input_name' => "epl_start_time[{$this->event_meta['ID']}][{$date_id}]", 'options' => $times, 'value' => $this->regis_meta['__epl'][$this->regis_id]['_dates']['_epl_start_time'][$this->event_meta['ID']]//$v['epl_start_time'][$this->event_meta['ID']][$date_id] ); $epl_fields += ( array ) $this->overview_trigger; $data['event_time'] = $this->epl_util->create_element( $epl_fields ); $data['event_time'] = $data['event_time']['field']; if ( !is_null( $date_id ) ) return $data['event_time']; return $this->epl->load_view( 'front/cart/cart-times', $data, true ); } function _get_prices() { global $capacity_components; foreach ( $this->event_meta['_epl_price_name'] as $_k => $_fieldregis_meta ) { $data['price_name'] = $_fieldregis_meta; $data['price'] = epl_get_formatted_curr( $this->event_meta['_epl_price'][$_k] ); $value = $this->get_current_value( '_dates', '_att_quantity', $this->event_meta['ID'], $_k ); $epl_fields = array( 'input_type' => 'select', 'input_name' => "_att_quantity[{$this->event_meta['ID']}][{$_k}]", 'options' => $this->get_allowed_quantity( $this->event_meta ), 'value' => $value ); $epl_fields += ( array ) $this->overview_trigger; $data['price_qty_dd'] = $this->epl_util->create_element( $epl_fields ); if ( $this->mode == 'overview' && ($value == 0 || current((array)$value) == 0)) { }else $r .= $this->epl->load_view( 'front/cart/cart-prices-row', $data, true ); } return $this->epl->load_view( 'front/cart/cart-prices', array( 'prices_table' => $r ), true ); } function _get_prices_per_time( $time_id ) { $r = ''; $pricesregis_meta = ($this->mode == 'overview') ? $this->regis_meta['__epl'][$this->regis_id]['_dates']['_att_quantity'][$this->event_meta['ID']] : $this->event_meta['epl_price_name']; foreach ( $pricesregis_meta as $_price_id => $_v ) { if ( $time_id == $this->event_meta['_epl_price_parent_time_id'][$_price_id] ) { $data['price_name'] = $this->event_meta['_epl_price_name'][$_price_id]; $data['price'] = $this->event_meta['_epl_price'][$_price_id]; $value = $this->get_current_value( '_dates', '_att_quantity', $this->event_meta['ID'], $_price_id ); $epl_fields = array( 'input_type' => 'select', 'input_name' => "att_quantity[{$this->event_meta['ID']}][{$_price_id}]", 'options' => $this->get_allowed_quantity( $this->event_meta ), 'value' => $value ); $epl_fields += ( array ) $this->overview_trigger; $data['price_qty_dd'] = $this->epl_util->create_element( $epl_fields ); $r .= $this->epl->load_view( 'front/cart/cart-prices-row', $data, true ); } } return $this->epl->load_view( 'front/cart/cart-prices', array( 'prices_table' => $r ), true ); } /* * could be the db, session, post */ function get_cart_values( $values = '_dates' ) { if ( isset( $this->regis_meta['__epl'][$this->regis_id][$values] ) ) return $this->regis_meta['__epl'][$this->regis_id][$values]; return null; return $this->data[$this->regis_id][$values]; } /* * could be the db, session, current logged in user infor */ function get_relevant_regis_values() { if ( isset( $this->regis_meta['__epl'][$this->regis_id]['_attendee_info'] ) ) return $this->regis_meta['__epl'][$this->regis_id]['_attendee_info']; return null; } function _set_sess_vals() { } /** * Either way, the data will end up in a session. When editing, data is pulled from the db. This * function sets a data variable for access by other functions * * long description * * @since 1.0.0 * @param int $var * @return string */ function _refreshregis_meta() { global $_on_admin; if ( !is_null( $this->data ) ) return; if ( $_on_admin ) { global $post; $v = $this->ecm->get_post_meta_all( get_the_ID() ); $v = $v['__epl']; $this->regis_meta['__epl'] = $v; }else $v = $this->regis_meta['__epl']; $this->data = stripslashes_deep( $v ); //array( '__epl' => stripslashes_deep( $v ) ); $this->regis_id = $this->data['regis_id']; } /* * Set the values */ function _set_regis_meta( $index, $value ) { global $_on_admin; $this->data[$this->regis_id][$index] = $value; $this->regis_meta['__epl'][$this->regis_id][$index] = $value; $this->_refreshregis_meta(); } function get_sess_var( $part = '', $key = '' ) { if ( $part != '' ) { if ( isset( $this->regis_meta['__epl'][$this->regis_id][$part] ) ) return $this->regis_meta['__epl'][$this->regis_id][$part]; } return $this->regis_meta; } function set_sess_var( $part = '' ) { if ( $part != '' ) { if ( isset( $this->regis_meta['__epl'][$this->regis_id][$part] ) ) return $this->regis_meta['__epl'][$this->regis_id][$part]; } return $this->regis_meta; } function regis_form( $values = null ) { global $capacity_components; if ( $this->mode == 'edit' ) { //$this->_set_regis_meta( '_dates', $_POST ); //from the shopping cart } elseif ( $this->mode == 'overview' ) { //$this->_set_regis_meta( 'att_info', $_POST ); //from the shopping cart //$values = $this->get_cart_values( '_dates' ); //$this->update_this_cart_quantities(); //$this->add_registration_to_db( $this->data ); } $values = $this->get_cart_values( '_dates' ); $r = ''; $events = array_keys( ( array ) $values['_epl_start_date'] ); foreach ( ( array ) $values['_epl_start_date'] as $event_id => $event_dates ) { $data['forms'] .= $this->get_registration_forms( array( 'scope' => 'ticket_buyer', 'event_id' => $event_id, 'forms' => '_epl_primary_regis_forms' ) ); foreach ( $values['_att_quantity'][$event_id] as $price_id => $qty ) { $attendee_qty = array_sum( $qty ); $data['forms'] .= $this->get_registration_forms( array( 'scope' => 'regis_forms', 'event_id' => $event_id, 'forms' => '_epl_addit_regis_forms', 'attendee_qty' => $attendee_qty, 'price_name' => $event_details['_epl_price_name'][$price_id] ) ); } } $r = $this->epl->load_view( 'admin/registrations/regis-page', $data, true ); return $r; //$this->epl_util->send_repsonse( $r ); } function get_registration_forms( $args ) { extract( $args ); $event_id = ( int ) $event_id; if ( is_null( $event_id ) || is_null( $forms ) ) return; global $epl_fields, $event_details; $r = ''; $this->fields = $epl_fields; $event_details = ( array ) $this->ecm->get_post_meta_all( $event_id ); if ( !is_array( $event_details[$forms] ) || empty( $event_details[$forms] ) ) return null; //find the forms selected in the event $regis_forms = array_flip( $event_details[$forms] ); //find the list of all forms $forms_to_display = $this->ecm->get_list_of_available_forms(); //isolate the forms in that are selected inside the event $forms_to_display = array_intersect_key( $forms_to_display, $regis_forms ); //find a list of all fields so that we can construct the form //$available_fields = $this->ecm->get_list_of_available_fields(); /* * sets how many forms will be dispayed based on the forms selected in the event "Forms for all attendees" section */ if ( !isset( $attendee_qty ) ) { $loop_start = 0; $loop_end = 0; } else { $loop_start = 1; $loop_end = $attendee_qty; } $args = array( ); //for each attendee,construct the appropriate forms for ( $i = $loop_start; $i <= $loop_end; $i++ ) $r .= $this->construct_form( $scope, $event_id, $forms_to_display, $i, $price_name ); return $r; } function construct_form( $scope, $event_id, $forms, $attendee_number, $price_name ) { static $ticket_number = 0; $vals = $this->get_relevant_regis_values(); $data['ticket_number'] = $ticket_number; $data['price_name'] = $price_name; if ( $scope == 'ticket_buyer' ) { unset( $data['ticket_number'] ); unset( $data['price_name'] ); } $data['fields'] = ''; $data['forms'] = ''; $available_fields = ( array ) $this->ecm->get_list_of_available_fields(); $this->mode = 'overview'; foreach ( $forms as $form_id => $form_atts ) { $epl_fields_inside_form = array_flip( $form_atts['epl_form_fields'] ); $epl_fields_to_display = $this->epl_util->sort_array_by_array( $available_fields, $epl_fields_inside_form ); foreach ( $epl_fields_to_display as $field_id => $field_atts ) { $options = ''; //if the field choices values are not given for select, radio, or checkbox //we will use field labels as values if ( !array_filter( ( array ) $field_atts['epl_field_choice_value'], 'trim' ) ) { $options = $field_atts['epl_field_choice_text']; } //else we will combine the field values and choices into an array for use in the dropdown, or radio or checkbox else { $options = array_combine( $field_atts['epl_field_choice_value'], $field_atts['epl_field_choice_text'] ); } //this will give the ability to select more than one option $adjuster = ($field_atts['input_type'] == 'checkbox') ? '[]' : ''; $args = array( 'input_type' => $field_atts['input_type'], 'input_name' => $field_atts['input_name'] . "[$event_id][$ticket_number]" . $adjuster, 'label' => $field_atts['label'], 'description' => $field_atts['description'], 'required' => $field_atts['required'], 'validation' => $field_atts['validation'], 'options' => $options, 'value' => $vals != '' ? $vals[$field_atts['input_name']][$event_id][$ticket_number] : null ); if ( $this->mode == 'overview' ) { $args += ( array ) $this->overview_trigger; unset( $args['required'] ); } $data['el'] = $this->epl_util->create_element( $args, 0 ); $data['fields'] .= $this->epl->load_view( 'admin/registrations/regis-field-row', $data, true ); } $data['form_label'] = (in_array( 0, ( array ) $form_atts['epl_form_options'] ) ? $form_atts['epl_form_label'] : ''); $data['form_descr'] = (in_array( 10, ( array ) $form_atts['epl_form_options'] ) ? $form_atts['epl_form_descritption'] : ''); $data['form'] = $this->epl->load_view( 'admin/registrations/regis-form-wrap', $data, true ); } $ticket_number++; return $data['form']; } function add_registration_to_db( $meta ) { /* * if id exists, update meta * */ epl_log( "debug", "
" . print_r( $meta, true ) . "
" ); $_post = array( 'post_type' => 'epl_registration', 'post_title' => $this->regis_id, 'post_content' => '', 'post_status' => 'draft' ); if ( isset( $this->regis_meta['__epl']['post_ID'] ) ) { //If this post is already in the db, the meta will be deleted before $_post['ID'] = ( int ) $this->regis_meta['__epl']['post_ID']; global $wpdb; $wpdb->query( "DELETE FROM $wpdb->postmeta WHERE meta_key like '__epl_original%' AND post_id = '{$_post['ID']}'" ); $wpdb->query( $wpdb->prepare( "UPDATE $wpdb->postmeta SET meta_key = '__epl_original-%d' WHERE meta_key = '__epl' AND post_id = '%d'", time(), $_post['ID'] ) ); } else { //update the post $post_ID = wp_insert_post( $_post ); $this->regis_meta['__epl']['post_ID'] = $post_ID; } /* update_post_meta( $this->regis_meta['__epl']['post_ID'], '__epl', $meta ); $cart_components = $this->get_cart_quantities(); foreach ( $cart_components as $key => $v ) { update_post_meta( $this->regis_meta['__epl']['post_ID'], $key, $v ); } /* foreach ( $cart_components as $key => $v ) { update_post_meta( $this->regis_meta['__epl']['post_ID'], $key, $meta[$this->regis_id][$key] ); } */ } } ?>