function epl_mailchimp_subscribe() { if (!epl_is_addon_active('ASDFAWEEFADSF')) { return; } global $event_details, $customer_email, $customer_name; $default_action = epl_get_setting('epl_api_option_fields', 'epl_mc_action'); $sign_up = epl_get_element('_epl_offer_notification_sign_up', $event_details, ''); if ($sign_up == '') { $sign_up = $default_action == 1 ? epl_get_setting('epl_api_option_fields', '_epl_mc_offer_notification_sign_up') : 0; } if ($sign_up == 0 || $default_action == 0) { return; } $who_to_sign_up = epl_get_setting('epl_registration_options', 'epl_send_customer_confirm_message_to', 1); if ($who_to_sign_up == 2 || !epl_has_primary_forms()) { $who_to_sign_up = 2; } $erm = EPL_registration_model::get_instance(); $list_id = epl_get_element('_epl_notification_list', $event_details, false); if (!$list_id && $default_action == 1) { $list_id = epl_get_setting('epl_api_option_fields', '_epl_mc_default_list'); } $double_optin = (bool) epl_get_setting('epl_api_option_fields', 'epl_mc_double_opt_in'); $send_welcome = (bool) epl_get_setting('epl_api_option_fields', 'epl_mc_send_welcome_email'); $key = trim(epl_get_setting('epl_api_option_fields', 'epl_mc_key')); $api = EPL_base::get_instance()->load_library('mailchimpSF_MCAPI', true, $key); $go = false; $newsletter_signup = epl_get_element_m('newsletter_signup', $erm->regis_id, $erm->current_data, array()); if ($sign_up == 1 && array_sum($newsletter_signup) > 0) { $go = true; } elseif ($sign_up == 3) { $go = true; } if ($list_id && $go && count($customer_email) > 0) { $customer_email = array_unique($customer_email); foreach ($customer_email as $n => $email) { if ($sign_up < 3 && $newsletter_signup[$n] == 0) { continue; } $email = $email; $merge_vars = array('FNAME' => epl_get_element_m('first_name', $n, $customer_name), 'LNAME' => epl_get_element_m('last_name', $n, $customer_name)); $r = $api->listSubscribe($list_id, $email, $merge_vars, $email_type = 'html', $double_optin, false, true, $send_welcome); } } }
function get_the_email_addresses($filter = null, $regis_id = null) { global $wpdb, $event_details; $this->WHERE = ' AND r.status between 2 and 5 '; $arr = array('regis_id' => !is_null($regis_id) ? $regis_id : epl_get_element('post_ID', $_REQUEST, false), 'event_id' => $_REQUEST['event_id'], 'date_id' => epl_get_element('date_id', $_REQUEST, null), 'time_id' => epl_get_element('time_id', $_REQUEST, null), 'names_only' => epl_get_element('names_only', $_REQUEST, 0)); setup_event_details($arr['event_id']); $data['pack_regis'] = epl_get_element('_epl_pack_regis', $event_details, 0) == 10; $_filter = array(); if ($data['pack_regis']) { //find all the registrations for this event //for each one, find out if package //for each one that is pack, find the pack * X days //contstruct array $event_date_keys = array_keys($event_details['_epl_start_date']); $pack_counts = epl_get_element('_epl_price_pack_size', $event_details, array()); $registrations = $wpdb->get_results("SELECT * FROM {$wpdb->epl_regis_data} WHERE event_id = " . intval($event_details['ID'])); if ($registrations) { foreach ($registrations as $regis) { $regis_weekday = date('N', $event_details['_epl_start_date'][$regis->date_id]); if (isset($pack_counts[$regis->price_id])) { $pack_counter = epl_get_element($regis->price_id, $pack_counts, 1); $start = false; foreach ($event_details['_epl_start_date'] as $date_id => $date) { if (!$start && $date_id != $regis->date_id) { continue; } $start = true; $_weekday = date('N', $date); if ($regis_weekday != $_weekday || $pack_counter == 0) { continue; } $pack_counter--; $attendance_dates[$regis->id][$date_id] = $date; $_filter[$regis->id] = $regis->id; } if ($arr['date_id'] && !isset($attendance_dates[$regis->id][$arr['date_id']]) || $arr['time_id'] && $arr['time_id'] != $regis->time_id) { unset($_filter[$regis->id]); unset($attendance_dates[$regis->id]); } //$offset = array_search( $regis->date_id, $event_date_keys ); //$attendance_dates[$regis->id] = array_slice( $event_details['_epl_start_date'], $offset, $pack_counts[$regis->price_id] ); } } } } $_filter = implode(',', $_filter); if ($_filter != '') { $_filter = " AND rd.id IN ({$_filter})"; } if (($regis_id = epl_get_element('post_ID', $_REQUEST, $arr['regis_id'])) !== false) { $this->WHERE = ' AND r.status between 1 and 5 '; $this->WHERE .= ' AND r.regis_id =' . $wpdb->escape($regis_id); } if (($_event_id = epl_get_element('event_id', $_REQUEST, false)) !== false) { $this->WHERE .= ' AND rd.event_id =' . $wpdb->escape($_event_id); } if (!$_filter && ($_date_id = epl_get_element('date_id', $_REQUEST, false)) !== false) { $this->WHERE .= ' AND rd.date_id ="' . $wpdb->escape($_date_id) . '"'; } if (!$_filter && ($_time_id = epl_get_element('time_id', $_REQUEST, false)) !== false) { $this->WHERE .= ' AND rd.time_id ="' . $wpdb->escape($_time_id) . '"'; } $form_to_look_at = 'AND rf.form_no = 0'; $who_to_email = epl_get_setting('epl_registration_options', 'epl_send_customer_confirm_message_to', 1); if ($who_to_email == 2 || !epl_has_primary_forms()) { $form_to_look_at = ''; } $q = $wpdb->get_results("SELECT\r\n r.regis_id, r.status, r.regis_key, rd.event_id, rf.field_id, rf.form_no, rf.input_slug, rf.value\r\n \r\n FROM {$wpdb->epl_regis_data} rd\r\n INNER JOIN {$wpdb->epl_registration} r\r\n ON r.regis_id = rd.regis_id\r\n INNER JOIN {$wpdb->epl_regis_form_data} rf\r\n ON (rd.regis_id = rf.regis_id AND rd.event_id = rf.event_id)\r\n WHERE 1=1 \r\n {$this->WHERE} {$form_to_look_at} {$_filter}\r\n GROUP BY rf.value\r\n ORDER BY r.regis_date, rd.id\r\n "); $email_list = array('raw_list' => array(), 'display_list' => ''); $num_emails = 0; if ($q) { foreach ($q as $row) { setup_event_details($row->event_id); //Redundant. But on line 280, from the registration list individual email, event id is not available. if ($who_to_email == 1 && (epl_has_primary_forms() && $row->form_no > 0)) { continue; } $d = $this->get_form_data_array($row->input_slug, $row->value); if ($d['email'] == '') { continue; } //if ( !is_array( $email_list['display_list'][$row->regis_id] ) ) // $email_list['display_list'][$row->regis_id] = array(); $this->epl_table->add_row('<input type="checkbox" id="" name="to_emails[' . $row->regis_id . '][]" class="regis_status_' . $row->status . '" style="" value="' . $d['email'] . '" checked="checked">', $d['email'], $d['first_name'] . ' ' . $d['last_name'], epl_anchor(admin_url('post.php?post=' . $row->regis_id . '&action=edit'), $row->regis_key), get_the_regis_status($row->status)); $num_emails++; //$email_list['display_list'][$row->regis_id] = $d['email'] . epl_prefix( ', ', $d['first_name'] . ' ' . $d['last_name'] ) . ', ' . epl_anchor( admin_url( 'post.php?post=' . $row->regis_id . '&action=edit' ), $row->regis_key ) . ', ' . get_the_regis_status( $row->status ); $email_list['raw_list'][] = $d['email']; } } $tmpl = array('table_open' => '<table cellpadding="0" cellspacing="0" class="epl_email_to_list" style="">'); $this->epl_table->set_template($tmpl); $email_list['display_list'] = $this->epl_table->generate(); $email_list['display_list'] = $this->epl->load_view('admin/registration/regis-email-form-regis-list', $email_list, true); $email_list['num_emails'] = $num_emails; // echo "<pre class='prettyprint'>" . __LINE__ . "> " . basename(__FILE__) . " > " . print_r($email_list['display_list'], true) . "</pre>"; return $email_list; }
function construct_form($scope, $event_id, $forms, $attendee_number, $price_name = '', $price_id = null, $date_display = null) { static $ticket_number = 0; //keeps track of the attendee count for dispalay static $primary_counter = 1; //keeps track of the attendee count for dispalay static $primary_forms = array(); global $event_details, $customer_email, $customer_name, $regis_details; global $email_regis_form; //TODO temp solution $has_email_field = false; if (!is_array($customer_email)) { $customer_email = array(); $customer_name = array(); } if ($email_regis_form == '') { $ticket_number = 0; } if ($scope != 'waitlist' && ($this->pulling_forms == 'pri' && $this->num_events_in_cart > 1 && $primary_counter < $this->num_events_in_cart)) { $ticket_number = 0; $primary_forms += $forms; $primary_counter++; return ''; } $ur_specific = ''; if ($scope == 'ticket_buyer' && !is_user_logged_in() && epl_um_is_enabled() && $this->add_new_user_enable() != 0 && $this->add_new_user_method() == 1) { $ur_specific = epl__("This email will be used to grant you membership access to our website."); if (!$this->add_new_user_show_pass_fields()) { $ur_specific .= '<br />' . epl__(" You will receive an email with your password after completing this registration."); } if ($this->mode != 'overview') { $ur_specific .= '<br />' . sprintf(epl__("If you are already a member of the website, please %s"), "<a href=" . wp_login_url(epl_get_url()) . " class='' title='Login'>" . epl__('Login Here') . "</a>"); } } if ($ticket_number == 0 && !empty($primary_forms)) { $forms += $primary_forms; } $vals = $this->get_relevant_regis_values(); //if data has already been entered into the session, get that data //$ticket_number = $attendee_number; $data['mode'] = $this->mode; //to compensate for pre 1.2.9 data if (!is_null($price_id) && version_compare(epl_regis_plugin_version(), '1.2.9', '<')) { if ($temp_price_id != $price_id) { $temp_price_id = $price_id; $ticket_number = 1; } } $data['ticket_number'] = $ticket_number; //counter $ticket_number = $attendee_number; //counter $data['ticket_counter_label'] = epl_get_element('_epl_addit_regis_form_counter_label', $event_details, epl__('Attendee')); //counter $data['price_name'] = $date_display != '' ? $date_display . ' - ' . $price_name : $price_name; //ticket name //if it is the ticket buyer form (the main required form) if ($scope == 'ticket_buyer') { unset($data['ticket_number']); unset($data['price_name']); } $data['copy_link'] = false; if ($scope == 'regis_forms') { $data['copy_link'] = epl_get_element('_epl_enable_form_to_form_copy', $event_details, 0) == 10 || epl_get_setting('epl_sc_options', 'epl_sc_form_to_form_copy', 0) == 10; } $data['fields'] = ''; $data['forms'] = ''; $data['form'] = ''; $data['email_fields'] = ''; $data['email_body_form'] = ''; $available_fields = (array) $this->ecm->get_list_of_available_fields(); //get the list of all available fields made with form manager $who_to_email = epl_get_setting('epl_registration_options', 'epl_send_customer_confirm_message_to', 1); if ($who_to_email == 2 || !epl_has_primary_forms()) { $who_to_email = 2; } foreach ($forms as $form_id => $form_atts) { $r = ''; $data['fields'] = ''; $data['email_fields'] = ''; $epl_fields_inside_form = array_flip($form_atts['epl_form_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); //for each field, there are attributes, like name, label, .... foreach ($epl_fields_to_display as $field_id => $field_atts) { if ($field_atts['input_type'] == 'hidden' && !EPL_IS_ADMIN) { continue; } if (epl_get_element('admin_only', $field_atts, 0) == 10 && !epl_user_is_admin() && !EPL_IS_ADMIN) { continue; } //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 { $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, for checkboxes and later, selects $adjuster = $field_atts['input_type'] == 'checkbox' ? '[]' : ''; $_price_id_adjuster = !is_null($price_id) ? "[{$price_id}]" : null; $event_id_adjuster = "[{$event_id}]"; /* $_val = ($vals != '' && epl_get_element( $field_atts['input_name'], $vals ) && epl_get_element( $event_id, $vals[$field_atts['input_name']] ) ) ? epl_get_element( $ticket_number, (is_null( $_price_id_adjuster )? $vals[$field_atts['input_name']][$event_id] : epl_get_element( $price_id, $vals[$field_atts['input_name']][$event_id] ) ) ) : null; */ //echo "<pre class='prettyprint'>" . __LINE__ . "> $price_id " . print_r( $_price_id_adjuster, true ) . "</pre>"; $_val = null; if ($vals != '') { if (epl_get_element($field_atts['input_name'], $vals)) { //not sure why I had || in here if (isset($vals[$field_atts['input_name']][$ticket_number])) { $_val = epl_get_element($ticket_number, $vals[$field_atts['input_name']]); /* if ( !is_null( $price_id ) ){ $_val = epl_get_element_m($ticket_number, $price_id, $_val ); echo "<pre class='prettyprint'>" . __LINE__ . ">$ticket_number " . print_r($_val, true). "</pre>"; } */ } elseif (!empty($_POST['deleted_event'])) { //if this element is posted, that means an event was removed from the cart. //it will contain the event id, price id and the quantities. $vals = $this->get_old_regis_values(); //get the values that were save in the db previously foreach ($_POST['deleted_event'] as $deleted_event_id => $deleted_data) { foreach ($deleted_data as $deleted_price_id => $quantities) { if ($quantities == 0) { continue; } if (is_null($_price_id_adjuster)) { $_val = epl_get_element($ticket_number, $vals[$field_atts['input_name']][$deleted_event_id]); } else { $_val = epl_get_element($ticket_number, epl_get_element($deleted_price_id, $vals[$field_atts['input_name']][$deleted_event_id])); } if ($_val != '') { break 2; } } } } elseif (epl_get_element($event_id, $vals[$field_atts['input_name']])) { if (is_null($_price_id_adjuster)) { $_val = epl_get_element($ticket_number, $vals[$field_atts['input_name']][$event_id]); } else { $_val = epl_get_element($ticket_number, epl_get_element($price_id, $vals[$field_atts['input_name']][$event_id])); } } } } if ($scope == 'ticket_buyer' || $scope == 'waitlist') { $event_id_adjuster = ''; } $args = array('input_type' => $field_atts['input_type'], 'input_name' => $field_atts['input_name'] . $event_id_adjuster . $_price_id_adjuster . "[{$ticket_number}]" . $adjuster, 'label' => $field_atts['label'], 'description' => $field_atts['description'] . ($field_atts['input_name'] == '4e794a6eeeb9a' ? $ur_specific : ''), 'required' => $field_atts['required'], 'validation' => epl_get_element('validation', $field_atts, ''), 'options' => $options, 'value' => $_val, 'class' => 'epl_field epl_field-' . $field_atts['input_type'], 'data_attr' => array('ticket_no' => $ticket_number)); if (empty($_val)) { $last_regis_data = $this->epl_get_last_regis_form_data_values($ticket_number); if (!epl_is_empty_array($last_regis_data)) { $args['default_value'] = epl_get_element($field_atts['input_name'], $last_regis_data); } elseif ($ticket_number == 0) { $def_val = apply_filters('epl_construct_form_default_value', $field_atts); $args['default_value'] = !is_array($def_val) && !is_null($def_val) ? $def_val : $field_atts['default_value']; } else { $args['default_value'] = $field_atts['default_value']; } } if ($who_to_email == 1 && $ticket_number == 0 || $who_to_email == 2) { if (stripos($field_atts['input_slug'], 'email') !== false) { $customer_email[$ticket_number] = $args['value']; $has_email_field = true; } if (stripos($field_atts['input_slug'], 'first_name') !== false || stripos($field_atts['input_slug'], 'last_name') !== false) { $customer_name[$ticket_number][$field_atts['input_slug']] = $args['value']; } } //if overview, we don't want to display the field, just the value 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($this->dest . '/registration/regis-field-row', $data, true); $data['email_fields'] .= $this->epl->load_view($this->dest . '/registration/regis-email-field-row', $data, true); } $data['event_title'] = $event_details['post_title']; $data['form_label'] = isset($form_atts['epl_form_options']) && in_array(0, (array) $form_atts['epl_form_options']) ? $form_atts['epl_form_label'] : ''; $data['form_descr'] = isset($form_atts['epl_form_options']) && in_array(10, (array) $form_atts['epl_form_options']) ? $form_atts['epl_form_descritption'] : ''; $r = $this->epl->load_view($this->dest . '/registration/regis-form-wrap', $data, true); $data['form'] .= $r; $data['email_body_form'] = $this->epl->load_view($this->dest . '/registration/regis-email-form-wrap', $data, true); $email_regis_form .= $data['email_body_form']; } if ($scope == 'ticket_buyer' || !epl_has_primary_forms()) { /* * - if enabled for all events * - and not set to no for this event * - or set to yes for this event */ $global_newsletter_ok = false; if (epl_get_setting('epl_api_option_fields', 'epl_mc_key') != '' && epl_get_setting('epl_api_option_fields', 'epl_mc_action') != 0 && epl_get_element('_epl_offer_notification_sign_up', $event_details) != 0) { $global_newsletter_ok = true; } if ($has_email_field && epl_get_setting('epl_api_option_fields', 'epl_mc_action') != 0 && (epl_get_element('_epl_offer_notification_sign_up', $event_details) == 1 && $global_newsletter_ok)) { $_newsletter_signup = array('input_type' => 'select', 'input_name' => "newsletter_signup[{$ticket_number}]", 'label' => epl_get_setting('epl_api_option_fields', 'epl_mc_permission_label'), 'options' => epl_yes_no(), 'value' => epl_get_element($ticket_number, $this->current_data[$this->regis_id]['newsletter_signup']), 'class' => 'epl_w70'); $data['el'] = $this->epl_util->create_element($_newsletter_signup + (array) $this->overview_trigger, 0); $data['form'] .= '<div class="epl_section epl_regis_field_wrapper regis_form">' . $this->epl->load_view($this->dest . '/registration/regis-field-row', $data, true) . '</div>'; } } //if ( $event_details[''] ) // $copy_from = ''; if ($this->mode != 'overview' && $data['copy_link'] || $this->on_admin) { $copy_from = '<a href="#" style="float:right;" class="epl_copy_from epl_button_small">' . epl__('Copy From') . '</a>'; } $lookup_form = epl_get_element('epl_m', $_POST, 0) == 0 && epl_um_is_enabled() && epl_user_is_admin() && $this->mode == 'edit' ? ' <a href="#" style="float:right;" class="open_lookup_form epl_button_small">' . epl__('Lookup') . '</a>' : ''; if ($ticket_number == 0) { $edit_profile_link = apply_filters('epl_edit_profile_link', null); $ticket_buyer_legend = apply_filters('epl_ticket_buyer_form_legend', epl__('Primary Registrant')); $r = "<div id='epl_form_section--0' class='epl_regis_attendee_wrapper'><fieldset class='epl_fieldset'><legend>" . $ticket_buyer_legend . ' ' . $edit_profile_link . "</legend>" . $lookup_form . $data['form'] . '</fieldset></div>'; } else { $delete_att = ''; if (EPL_IS_ADMIN) { $delete_att = "<a href='#' class='epl_button_small epl_admin_del_attendee' data-event_id='{$event_details['ID']}' data-price_id='{$price_id}' data-ticket_no={$ticket_number}>" . epl__("Delete") . "</a>"; $data['form'] .= "<input type='hidden' class='epl_ticket_no-{$event_id}-{$price_id}' value='{$ticket_number}' />"; } $r = "<div id='epl_form_section--" . (isset($ticket_number) ? $event_id . '-' . $price_id . '-' . $ticket_number : 0) . "' class='epl_regis_attendee_wrapper'><fieldset class='epl_fieldset'><legend>" . $data['ticket_counter_label'] . ' ' . $ticket_number . ': ' . $data['price_name'] . " - {$event_details['post_title']}</legend> {$lookup_form} {$copy_from} {$delete_att}" . $data['form'] . '</fieldset></div>'; } $ticket_number++; return $r; }
$_a['ticket'] = $event_details['_epl_price_name'][$row->price_id]; $_a['price'] = $row->price; $_a['paid'] = ''; $_a['discount_code'] = ''; $_a['discount_amount'] = ''; if (epl_get_regis_setting('epl_enable_donation') == 10) { $_a['donation_amount'] = ''; } $_a['date'] = epl_formatted_date($event_details['_epl_start_date'][$row->date_id]); $_a['time'] = $event_details['_epl_start_time'][$row->time_id]; if ($tmp_regis_id == '' || $tmp_regis_id != $row->regis_id) { $tmp_regis_id = $row->regis_id; $new_record = true; $ticket_buyer_data = array(); $form_counter = 0; if (epl_has_primary_forms()) { $form_data = $erptm->get_form_data($row->regis_id, $row->event_id, 0); if ($form_data) { foreach ($form_data as $r) { if (strpos($r->field_id, EPL_PLUGIN_DB_DELIM)) { $fields = explode(EPL_PLUGIN_DB_DELIM, $r->field_id); $values = explode(EPL_PLUGIN_DB_DELIM, $r->value); } else { $fields = array($r->field_id); $values = array($r->value); } $tb_only_fields = $fields; $full_data = array_combine($fields, $values); $_row = array_merge($default_row, $full_data); $ticket_buyer_data += epl_process_fields_for_display($_row); }