/**
 * 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;
}
Example #2
0
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 
}