/** * Process the submissions return the results * * @since 0.1.0 */ function bbconnectpanels_submission($embed = false) { // RUN A SECURITY CHECK if (is_user_logged_in()) { if (!check_ajax_referer('bbconnectpanels-ajax-nonce', 'bbconnectpanels_nonce', false)) { wp_clear_auth_cookie(); die(__('very sorry. there seems to be an error. please refresh the page and try again.', 'bbconnect')); } } // UNWRAP THE VALUES if (isset($_POST['data'])) { parse_str($_POST['data'], $_POST); } // SANITIZE ALL INPUT DATA $_POST = bbconnect_scrub('bbconnect_sanitize', $_POST); // DO A SERIALIZED VALUE CHECK $rel = maybe_unserialize(urldecode($_POST['rel'])); if (is_array($rel)) { $rel_array = $rel; $rel = $rel_array['rel']; $_POST = array_merge($_POST, $rel_array); } else { if (false !== strpos($rel, '&')) { $rel_pre = explode('&', $rel); } else { $rel_pre = array($rel); } // REL CAN BE DECLARED BY THE FORMS if (1 == count($rel_pre) && false === strpos($rel, '=')) { $rel_array = array('rel' => $rel); } else { $rel_array = array(); foreach ($rel_pre as $key => $pair) { $pair = explode('=', $pair); $rel_array[$pair[0]] = $pair[1]; } } // ALLOWED $_GETs $okget = bbconnectpanels_get_query_vars(); foreach ($rel_array as $key => $val) { if (in_array($key, $okget)) { $_POST[$key] = $val; } } } // SANITIZE ALL INPUT DATA $_POST = bbconnect_scrub('bbconnect_sanitize', $_POST); // IF WE'VE SET A TEMPORARY RE-DIRECT, UNSET IT HERE bbconnectpanels_done_whereto(); // RUN THE SWITCH switch ($_POST['rel']) { // SENDING A CONTACT REQUEST case 'contact': if (!empty($_POST['email'])) { // CONDITIONS FOR NAME $fname = ''; $lname = ''; if (isset($_POST['bbconnect_user_meta']['first_name'])) { $fname = $_POST['bbconnect_user_meta']['first_name']; } if (isset($_POST['bbconnect_user_meta']['last_name'])) { $lname = $_POST['bbconnect_user_meta']['last_name']; } $name = $fname . ' ' . $lname; // EMAIL $email = $_POST['email']; // USER TARGET if (isset($_POST['uid'])) { $uid = $_POST['uid']; unset($_POST['uid']); } // CODE $log_code = false; $contact_title = ''; $form = false; if (isset($_POST['bbc_form'])) { $log_code = $_POST['bbc_form']; $bbc_titles = get_option('_bbconnect_user_forms'); $contact_title = $bbc_titles[$_POST['bbc_form']] . ': '; $form = get_option('_bbconnect_form_' . $_POST['bbc_form']); $form_notifications = true; if (!empty($form['notify_enable']) && 'false' == $form['notify_enable']) { $form_notifications = false; } } // SUBJECT $subject = $contact_title . __('Submission', 'bbconnect'); if (false != $form && isset($form['subject'])) { $subject = $form['subject']; } if (isset($_POST['_bbc_post']['_bbc_form_subject'])) { $subject = $_POST['_bbc_post']['_bbc_form_subject']; unset($_POST['_bbc_post']['_bbc_form_subject']); } // MESSAGE $message = ''; if (isset($_POST['_bbc_post']['_bbc_form_message'])) { $message = $_POST['_bbc_post']['_bbc_form_message']; unset($_POST['_bbc_post']['_bbc_form_message']); } // APPEND ADDITIONAL FIELDS TO THE MESSAGE if (isset($_POST['bbconnect_user_meta'])) { foreach ($_POST['bbconnect_user_meta'] as $k => $v) { $option = bbconnect_get_option($k); $message .= "\r\n"; $message .= $option['name'] . ": " . stripslashes(maybe_serialize($v)) . "\r\n"; } } // CC $cc_me = 'false'; if (isset($_POST['_bbc_post']['_bbc_form_cc'])) { $cc_me = $_POST['_bbc_post']['_bbc_form_cc']; unset($_POST['_bbc_post']['_bbc_form_cc']); } $sender = get_user_by('email', $email); // IF THEY DON'T EXIST, ADD THEM! // FIRST TIME COMMUNICATIONS ARE GOING TO BE LOGGED NO MATTER WHAT if (!$sender) { // NEED TO DO A SECONDARY CHECK FOR ALTERNATE EMAILS $user_id = bbconnect_insert_user(array('ivals' => $_POST, 'log_type' => 'contact_form', 'log_code' => $log_code, 'title' => $contact_title . $subject, 'content' => $message)); $sender = get_user_by('id', $user_id); // IF THEY DO EXIST, AND ARE CONTACTING AN ADMIN, LOG IT! } else { if (!isset($uid)) { $postdata['post_title'] = $contact_title . $subject; $postdata['post_content'] = $message; $postdata['post_status'] = 'private'; $postdata['post_author'] = $sender->ID; $postdata['post_type'] = 'bbc_log'; $post_id = wp_insert_post($postdata, true); // UPDATE THE META if (intval($post_id)) { update_post_meta($post_id, '_bbc_log_type', 'contact_form'); update_post_meta($post_id, '_bbc_log_code', $log_code); } } } // PREP THE FORM FOR MAIL NOTIFICATIONS // SENDER INFORMATION // EMAIL COMES FROM $_POST['email'] $_POST['name'] = $name; if (false != $form) { if (!empty($form['notify_from'])) { $_POST['email'] = $form['notify_from']; } if (!empty($form['notify_from_name'])) { $_POST['name'] = $form['notify_from_name']; } } // NEED AN OPTION FOR MAIL NOTIFICATIONS // IF THIS IS GOING TO ANOTHER SITE USER... $to_email = array(); if (isset($uid)) { $recipient = get_user_by('id', $uid); $to_email[] = $recipient->user_email; $form_notifications = true; } else { if (false != $form) { $to_email = explode(',', $form['notify']); foreach ($to_email as $tek => $tev) { $to_email[$tek] = trim($tev); } } } $to_email = apply_filters('bbconnectpanels_contact_form_recipients', $to_email, $sender, $log_code); // IF WE'RE EMAILING, DO IT NOW if (!empty($to_email)) { $admin_msg = ''; $admin_msg .= sprintf(__('Origin: %1$s', 'bbconnect'), get_option('blogname')) . "\r\n"; if (!empty($contact_title)) { $admin_msg .= sprintf(__('Form: %1$s', 'bbconnect'), $contact_title) . "\r\n"; } $admin_msg .= sprintf(__('Sender: %1$s <%2$s>', 'bbconnect'), $name, $email) . "\r\n"; $admin_msg .= "\r\n"; $admin_msg .= $message; // IF WE'RE MAILING, ADD THE FILTERS add_filter('wp_mail_from', 'bbconnectpanels_get_from_email', 20); add_filter('wp_mail_from_name', 'bbconnectpanels_get_from_name', 20); // SEND THE MAIL if (false != $form_notifications) { wp_mail($to_email, $subject, $admin_msg); } // COPY THEM BUT NOT ON THE SAME EMAIL if ('true' == $cc_me) { $_POST['email'] = get_option('admin_email'); $_POST['name'] = get_option('blogname'); $user_msg = sprintf(__('You asked to be copied on the message below that you sent via the website: %1$s', 'bbconnect'), get_option('blogname')) . "\r\n"; $user_msg .= "\r\n"; $user_msg .= $message; wp_mail($email, 'Re: ' . $subject, $user_msg); } remove_filter('wp_mail_from', 'bbconnectpanels_get_from_email', 20); remove_filter('wp_mail_from_name', 'bbconnectpanels_get_from_name', 20); } // THANK YOU $thankyou = __('Thank you.', 'bbconnect'); if (isset($_POST['bbc_form'])) { $bbc_form = get_option('_bbconnect_form_' . $_POST['bbc_form']); $thankyou = bbconnect_scrub('bbconnect_esc_html', $bbc_form['confirm']); } $signcount = 2 + round(str_word_count(strip_tags($thankyou)) / 4); // GIVE PREFERENCE TO THE USER'S PRIOR ACTION // LET PLUGINS MODIFY THE SUCCESS ACTION do_action('bbconnect_after_contact', $sender, $log_code); // SET A FILTER FOR REDIRECTION $wloc = apply_filters('bbconnect_contact_redirect', '', $sender, $log_code); // REFRESH THE BROWSER ?> <p id="tschuss"><?php echo wpautop($thankyou); ?> </p> <script type="text/javascript"> setTimeout(function() { jQuery('#tschuss').fadeOut('slow'); jQuery('#bbconnectpanel').removeClass(); <?php if ('true' != get_option('bbconnectpanels_embed')) { ?> jQuery('#bbconnectpanel').slideToggle('fast'); <?php if (!empty($wloc)) { echo "window.location = '" . $wloc . "';"; } } else { if (!empty($wloc)) { echo "window.location.href = '" . $wloc . "';"; } } ?> }, <?php echo $signcount * 1000; ?> ); </script> <?php die; } else { // THE DEFAULT FIELDS $form_fields = bbconnect_form_api_fields(); // USER-DEFINED REPLACEMENT if (isset($_POST['bbc_form'])) { $contact_arr = get_option('_bbconnect_form_' . $_POST['bbc_form']); } // THE DEFAULT CONTACT FORM if (!isset($contact_arr) || empty($contact_arr)) { $contact_arr = get_option('_bbconnect_form_contact_form'); } // THE SAFETY CONTACT FORM if (!isset($contact_arr) || empty($contact_arr)) { $contact_arr = array('column_1' => array('first_name', 'last_name', 'email'), 'column_2' => array('_bbc_form_subject', '_bbc_form_message', '_bbc_form_cc')); } // DOUBLE-CHECK THAT WE HAVE AN EMAIL AND A MESSAGE $c_email = false; $c_msg = false; foreach ($contact_arr as $ckey => $cval) { if (is_array($cval)) { if (in_array('email', $cval)) { $c_email = true; } if (in_array('_bbc_form_message', $cval)) { $c_msg = true; } } } // ALWAYS ENSURE EMAIL IS SET if (false == $c_email) { array_push($contact_arr['column_1'], 'email'); } //if ( false == $c_msg ) //array_push( $contact_arr['column_2'], '_bbc_form_message' ); if (isset($contact_arr['msg']) && !empty($contact_arr['msg'])) { echo '<div id="form-msg">'; echo wpautop(stripslashes($contact_arr['msg'])); echo '</div>'; } // LET'S SEE IF THEY WANT ONE OR TWO COLUMNS if (empty($contact_arr['column_2'])) { $colone = ' class="column-holder full"'; $coltwo = false; } else { $colone = ' id="column_1_holder"'; $coltwo = ' id="column_2_holder"'; } ?> <form class="bbconnectpanels-form" enctype="multipart/form-data" action="" method="POST"> <div<?php echo $colone; ?> > <ul> <?php if (isset($contact_arr['column_1'])) { foreach ($contact_arr['column_1'] as $key => $val) { if (isset($form_fields[$val])) { $meta = $form_fields[$val]; $args['type'] = 'post'; } else { $meta = bbconnect_get_option($val); } $args['meta'] = $meta; $args['action'] = 'register'; if (is_user_logged_in()) { global $current_user; $args['id'] = $current_user->ID; } bbconnect_get_field($args); } } ?> </ul> </div> <?php if (false != $coltwo) { ?> <div<?php echo $coltwo; ?> > <ul> <?php if (isset($contact_arr['column_2'])) { foreach ($contact_arr['column_2'] as $key => $val) { if (isset($form_fields[$val])) { $meta = $form_fields[$val]; $args['type'] = 'post'; } else { $meta = bbconnect_get_option($val); } $args['meta'] = $meta; $args['action'] = 'register'; if (is_user_logged_in()) { global $current_user; $args['id'] = $current_user->ID; } bbconnect_get_field($args); } } ?> </ul> </div> <?php } ?> <div class="continue"> <input type="hidden" name="rel" value="contact" /> <?php if (isset($_POST['uid'])) { echo '<input type="hidden" name="uid" value="' . $_POST['uid'] . '" />'; } if (isset($_POST['bbc_form'])) { echo '<input type="hidden" name="bbc_form" value="' . $_POST['bbc_form'] . '" />'; } ?> <input type="submit" name="_bbconnect[submission]" value="<?php _e('Submit', 'bbconnect'); ?> " class="button" /> <?php echo bbconnectpanels_build_panel_link(array('links' => apply_filters('bbconnect_contact_links', array()))); ?> </div> </form> <?php } break; // EXTEND THE PANEL SYSTEM // EXTEND THE PANEL SYSTEM default: do_action('bbconnectpanels_switch', $rel); break; } if ('true' == get_option('bbconnectpanels_embed')) { echo '<div id="close-bot"></div>'; } else { ?> <div id="close-top"><?php bbconnectpanels_panel_link('action=close'); ?> </div> <div id="close-bot"><?php bbconnectpanels_panel_link('action=close'); ?> </div> <script type="text/javascript"> </script> <?php } if ('true' == get_option('bbconnectpanels_google_analytics')) { ?> <script type="text/javascript"> // "_trackEvent" is the pageview event, _gaq.push(['_trackPageview', '/<?php echo $rel; ?> ']); </script> <?php } // ALL DONE! die; }
function bbconnect_user_data_select_form_api_ops($meta_key, $wpr) { ?> <optgroup label="<?php _e('Standard Fields', 'bbconnect'); ?> "> <?php $bbconnect_api_fields = bbconnect_form_api_fields(); foreach ($bbconnect_api_fields as $key => $val) { echo '<option value="' . $val['meta_key'] . '"' . selected($meta_key, $val['meta_key']) . '>' . $val['name'] . '</option>'; } ?> </optgroup> <?php }