function epl_excel_attendee_list() { $event_id = $_REQUEST['event_id']; $_totals = $this->get_event_regis_snapshot($_REQUEST['event_id']); //echo "<pre class='prettyprint'>" . print_r( $_totals, true ) . "</pre>"; $this->set_event_regis_post_ids($_REQUEST['event_id']); global $event_details; //epl_log( "debug", "<pre>" . __LINE__ . '> ' . print_r($event_details, true ) . "</pre>" ); $event_title = $event_details['post_title']; $filename = str_replace(" ", "-", $event_title) . "_" . date_i18n("m-d-Y"); /* header( "Content-type: application/x-msdownload; charset=UTF-8", true, 200 ); header( "Content-Disposition: attachment; filename={$filename}.csv" ); header( "Pragma: no-cache" ); header( "Expires: 0" ); */ //$this->setup_event_details( $event_id ); $this->get_values(); //echo "<pre class='prettyprint'>" . print_r($event_details, true). "</pre>"; $event_ticket_buyer_forms = array_flip((array) $event_details['_epl_primary_regis_forms']); $event_addit_forms = isset($event_details['_epl_addit_regis_forms']) && $event_details['_epl_addit_regis_forms'] != '' ? array_flip($event_details['_epl_addit_regis_forms']) : array(); //find the list of all forms $available_forms = $this->get_list_of_available_forms(); $available_fields = $this->get_list_of_available_fields(); //isolate the forms that are selected inside the event $ticket_buyer_forms = array_intersect_key($available_forms, $event_ticket_buyer_forms); $addit_forms = array_intersect_key($available_forms, $event_addit_forms); //This will combine all the fields in all the forms so that we can construct a header row. $tickey_buyer_fields = array(); foreach ($ticket_buyer_forms as $_form_id => $_form_info) { $tickey_buyer_fields += $_form_info['epl_form_fields']; } $event_addit_fields = array(); foreach ($addit_forms as $_form_id => $_form_info) { $event_addit_fields += $_form_info['epl_form_fields']; } $epl_fields_inside_form = array_flip($tickey_buyer_fields); //get the field ids inside the form $epl_addit_fields_inside_form = array_flip($event_addit_fields); //get the field ids inside the form //when creating a form in form manager, the user may rearrange fields. Find their desired order $epl_fields_to_display = $this->epl_util->sort_array_by_array($available_fields, $epl_fields_inside_form); $epl_addit_fields_to_display = $this->epl_util->sort_array_by_array($available_fields, $epl_addit_fields_inside_form); $epl_fields_to_display = $epl_fields_to_display + $epl_addit_fields_to_display; $csv_row = ''; $header_row = array(); $header_pulled = false; $row = array(); $header_row[] = ''; $header_row[] = epl__('Registration ID'); //$header_row[] = epl__( 'Regis Date' ); //$header_row[] = epl__( 'Event Date' ); //$header_row[] = epl__( 'Time' ); $header_row[] = epl__('Ticket'); $header_row[] = epl__('Status'); $header_row[] = epl__('Payment Method'); $header_row[] = epl__('Total'); $header_row[] = epl__('Amount Paid'); $regis_ids = $this->get_event_regis_post_ids(false); //as of 1.1, the dates are stored as timestamps. //This will format the date for display based on the settings admin date format. foreach ($event_details['_epl_start_date'] as $k => &$v) { $v = epl_admin_date_display($v); } $_d = array(); foreach ($regis_ids as $regis_id => $att_count) { //$regis_data = $this->get_post_meta_all( $regis_id ); $regis_data = $this->setup_regis_details($regis_id); // epl_log( "debug", "<pre>" . __LINE__ . '> ' . print_r($regis_data, true ) . "</pre>" ); //Sometime there may be incomplete db records. These will cause issues below. //In those cases, skip and move to the next item if (!isset($regis_data['_epl_dates']['_epl_start_date'][$event_id])) { continue; } $event_times = $regis_data['_epl_dates']['_epl_start_time'][$event_id]; $event_prices = $regis_data['_epl_dates']['_epl_start_time'][$event_id]; $regis_date = implode(' & ', array_intersect_key($event_details['_epl_start_date'], array_flip((array) $regis_data['_epl_dates']['_epl_start_date'][$event_id]))); $regis_time = implode(' & ', array_intersect_key($event_details['_epl_start_time'], array_flip((array) $regis_data['_epl_dates']['_epl_start_time'][$event_id]))); $date_labels = array(); $date_labels[0] = ''; $time_labels = array(); $time_labels[0] = ''; $ticket_labels = array(); $ticket_labels[0] = $att_count; $purchased_tickets = (array) $regis_data['_epl_dates']['_att_quantity'][$event_id]; $start = 1; foreach ($purchased_tickets as $price_id => $qty) { $_qty = is_array($qty) ? array_sum($qty) : $qty; //current( $qty ); if ($_qty > 0) { $date_label[] = current((array) $regis_data['_epl_dates']['_epl_start_date'][$event_id]); if (epl_get_element('_epl_pricing_type', $event_details) == 10) { if (in_array($event_details['_epl_price_parent_time_id'][$price_id], (array) $regis_data['_epl_dates']['_epl_start_time'][$event_id])) { $time_labels = array_pad($time_labels, $start + $_qty, epl_get_element($event_details['_epl_price_parent_time_id'][$price_id], $event_details['_epl_start_time'])); } else { $time_labels = array_pad($time_labels, $start + $_qty, ''); } } $ticket_labels = array_pad($ticket_labels, $start + $_qty, $event_details['_epl_price_name'][$price_id]); $start += $_qty; } } $_r = array(); $regis_status = isset($regis_data['_epl_regis_status']) ? $this->ind_fields['_epl_regis_status']['options'][$regis_data['_epl_regis_status']] : ''; $payment_method = isset($regis_data['_epl_payment_method']) && $regis_data['_epl_payment_method'] != '' ? $this->ind_fields['_epl_payment_method']['options'][$regis_data['_epl_payment_method']] : ''; $grand_total = epl_get_formatted_curr(epl_nz($regis_data['_epl_grand_total'], 0.0)); $amount_paid = epl_get_formatted_curr(epl_nz($regis_data['_epl_payment_amount'], 0.0)); for ($i = 0; $i <= $att_count; $i++) { $registrant = false; $attendee_info = $regis_data['_epl_attendee_info']; if ($i == 0) { $registrant = true; $row[] = epl__('Registrant'); } else { $row[] = epl_get_element('_epl_addit_regis_form_counter_label', $event_details, epl__('Attendee')); //$grand_total = ''; //$amount_paid = ''; //$regis_status = ''; //$payment_method = ''; } $row[] = $regis_data['__epl']['_regis_id']; //$row[] = $regis_data['post_date']; //$row[] = epl_escape_csv_val( $regis_date ); //$row[] = $regis_time; //(epl_is_date_level_time ( ))?$regis_time:$time_labels[$i]; // $row[] = htmlspecialchars_decode($ticket_labels[$i]); //$regis_price; $row[] = $regis_status; $row[] = $payment_method; $row[] = epl_get_currency_symbol($grand_total); $row[] = $amount_paid; foreach ($epl_fields_to_display as $field_id => $field_atts) { if (!$header_pulled) { $header_row[] = epl_escape_csv_val(html_entity_decode(htmlspecialchars_decode($field_atts['label']), ENT_QUOTES)); } $value = ''; $value = isset($attendee_info[$field_id][$event_id][$i]) ? $attendee_info[$field_id][$event_id][$i] : ''; if ($field_atts['input_type'] == 'select' || $field_atts['input_type'] == 'radio') { $value = isset($field_atts['epl_field_choice_text'][$value]) && $field_atts['epl_field_choice_text'][$value] != '' ? $field_atts['epl_field_choice_text'][$value] : $value; } elseif ($field_atts['input_type'] == 'checkbox') { $value = implode(',', array_intersect_key($field_atts['epl_field_choice_text'], array_flip((array) $value))); } else { $value = html_entity_decode(htmlspecialchars_decode(epl_get_element($i, $attendee_info[$field_id][$event_id])), ENT_QUOTES); } $row[] = htmlentity_decode($value, ENT_QUOTES); //decode special chars (Swedish, Nordic) //array_walk( $row, create_function( '&$item', '$item = utf8_decode($item);' ) ); } $header_pulled = true; if (!$registrant) { $_d[] = $row; } //$csv_row .= implode( ",", $row ) . "\r\n"; $row = array(); } } $filename = epl__('Attendee List') . ', ' . $event_title . ", " . date_i18n("F j, Y"); $this->excel_file_generator($header_row, $_d, $filename); //echo implode( ",", $header_row ) . "\r\n"; //echo $csv_row; exit; }
/** * Creates fields for different areas of Events Planner * * @since 1.0.0 * @param int $var * @return string */ function render_fields($args) { global $fields, $event_details; extract($args); $defaults = array('_view' => 0, '_type' => 'ind', '_rows' => 1, '_content' => ''); $meta = wp_parse_args($meta, $defaults); $_table = $section; //$fields[$section]; if (empty($_table) || empty($fields_to_display)) { return null; } //make the values of the arrays into keys $fields_to_display = array_flip($fields_to_display); //return only the array keys that match our $fields_to_display array $fields_to_display = array_intersect_key((array) $_table, $fields_to_display); //if we want to see the form in a table row format if ($meta['_type'] == 'row') { //For fields that are added via a filter for the first time and there is data for an event, there will not be any //data for the new fields. We grab the keys of the master field (usually the first one), so that we can assign //the keys to the new field. Otherwise, if there are already rows of data, only one row will be returned $master_keys = ''; $_master_key = ''; $r = array(); //The number of rows to display. This is determined by how many rows of data there are for ($i = 0; $i < $meta['_rows']; $i++) { $_r = ''; $_row_key = ''; if ($meta['_view'] == 'raw') { $_r = array(); } $tmp_key = $this->make_unique_id(6); //cycle through the fields that need to be displayed (from the config array) foreach ($fields_to_display as $field_name => $field_attr) { $field_attr['input_slug'] = $field_name; //$field_attr['key'] = ''; //if there is a value associated, meaning it is being edited if (isset($meta['value'])) { //prepare the value to be passed to the next function if (isset($field_attr['parent_keys'])) { $master_keys = isset($meta['value'][$field_name]) ? $meta['value'][$field_name] : ''; } $field_attr['value'] = isset($meta['value'][$field_name]) ? $meta['value'][$field_name] : ''; $k = ''; //if the value is an array (from dynamically created fields) if (isset($meta['value'][$field_name]) && is_array($meta['value'][$field_name])) { $k = array_keys($meta['value'][$field_name]); //will be used for checking dinamically added row data $field_attr['value'] = $meta['value'][$field_name]; //$field_attr['key'] = epl_get_element( $i, $k ); //the selected row, for select, radio, checkbox $field_attr['key'] = $_row_key == '' ? epl_get_element($i, $k) : $_row_key; //the selected row, for select, radio, checkbox } elseif ($master_keys != '') { //this will be used for newly added fields that will be stores as rows, like dates, times.... $k = array_keys((array) $master_keys); $field_attr['value'] = $this->remove_array_vals($master_keys); //$field_attr['key'] = $k[$i]; $field_attr['key'] = $_row_key == '' ? epl_get_element($i, $k) : $_row_key; } if ($_row_key == '') { if (isset($k[$i])) { $_row_key = $k[$i]; } elseif (isset($tmp_key)) { $_row_key = $tmp_key; } } } if (isset($field_attr['parent_keys']) && isset($field_attr['key'])) { $_master_key = $field_attr['key']; } $field_attr['tmp_key'] = $tmp_key; /* --------------------------------------- * SPECIAL CIRCUMSTANCE. * @TODO - make a config * ---------------------------------------- */ if ($field_name == '_epl_date_specific_time') { if (isset($meta['value'][$field_name]) && !epl_is_empty_array($meta['value'][$field_name]) && !epl_is_empty_array(epl_get_element($_master_key, $meta['value'][$field_name]))) { $cnt = count($meta['value'][$field_name][$_master_key]); $_r[$field_name]['field'] = ''; foreach ($meta['value'][$field_name][$_master_key] as $__k => $__v) { $epl_fields = array('input_type' => 'text', 'input_name' => "_epl_date_specific_time[{$_master_key}][{$__k}]", 'value' => epl_admin_date_display(epl_get_element($__k, $event_details['_epl_start_date'], $__v))); $epl_fields = wp_parse_args($epl_fields, $field_attr); unset($epl_fields['key']); $__r = $this->create_element($epl_fields, $meta['_view']); $_r[$field_name]['field'] .= $__r['field']; } } } elseif ($field_name == '_epl_date_specific_price') { if (isset($meta['value'][$field_name]) && !epl_is_empty_array($meta['value'][$field_name]) && !epl_is_empty_array(epl_get_element($_master_key, $meta['value'][$field_name]))) { $cnt = count($meta['value'][$field_name][$_master_key]); $_r[$field_name]['field'] = ''; foreach ($meta['value'][$field_name][$_master_key] as $__k => $__v) { $epl_fields = array('input_type' => 'text', 'input_name' => "_epl_date_specific_price[{$_master_key}][{$__k}]", 'value' => epl_admin_date_display(epl_get_element($__k, $event_details['_epl_start_date'], $__v))); $epl_fields = wp_parse_args($epl_fields, $field_attr); unset($epl_fields['key']); $__r = $this->create_element($epl_fields, $meta['_view']); $_r[$field_name]['field'] .= $__r['field']; } //echo "<pre class='prettyprint'>" . __LINE__ . "> " . print_r($__r, true). "</pre>"; } } elseif ($field_name == '_epl_time_specific_price') { if (isset($meta['value'][$field_name]) && !epl_is_empty_array($meta['value'][$field_name]) && !epl_is_empty_array(epl_get_element($_master_key, $meta['value'][$field_name]))) { $cnt = count($meta['value'][$field_name][$_master_key]); $_r[$field_name]['field'] = ''; foreach ($meta['value'][$field_name][$_master_key] as $__k => $__v) { $epl_fields = array('input_type' => 'text', 'input_name' => "_epl_time_specific_price[{$_master_key}][{$__k}]", 'value' => epl_get_element($__k, $event_details['_epl_start_time'], $__v)); $epl_fields = wp_parse_args($epl_fields, $field_attr); unset($epl_fields['key']); $__r = $this->create_element($epl_fields, $meta['_view']); $_r[$field_name]['field'] .= $__r['field']; } //echo "<pre class='prettyprint'>" . __LINE__ . "> " . print_r($__r, true). "</pre>"; } } else { if ($meta['_view'] == 'raw') { $_r[$field_name] = $this->create_element($field_attr, $meta['_view']); } else { $_r .= $this->create_element($field_attr, $meta['_view']); } } } if (isset($field_attr['key']) && $field_attr['key'] == '' && $_row_key == '') { $_row_key = $field_attr['tmp_key']; } //else // $_row_key = isset( $field_attr['key'] ) ? $field_attr['key'] : ''; $r[$_row_key] = $_r; $_row_key = ''; } } else { foreach ($fields_to_display as $key => $field) { $field['input_slug'] = $key; if (isset($meta['value'])) { $field['value'] = isset($meta['value'][$key]) ? $meta['value'][$key] : ''; } if (isset($meta['overview'])) { $field['overview'] = $meta['overview']; } $field['content'] = epl_get_element('_content', $meta, epl_get_element('content', $field)); $_r[$key] = $this->create_element($field, $meta['_view']); } $r = $_r; } return $r; }