function infusionsoft_add_subscriber() { $post = $_POST; $data = array(); $email = isset($post['email']) ? $post['email'] : ''; $name = isset($post['name']) ? $post['name'] : ''; $email = sanitize_email($email); $name = sanitize_text_field($name); $only_conversion = isset($post['only_conversion']) ? true : false; $infusionsoft_api = get_option($this->slug . '_api_key'); $infusionsoft_app = get_option($this->slug . '_app'); $infusionsoft_list_id = sanitize_text_field($post['list_id']); $style_id = sanitize_text_field($_POST['style_id']); $option = sanitize_text_field($_POST['option']); $on_success = isset($post['message']) ? 'message' : 'redirect'; $msg_wrong_email = isset($post['msg_wrong_email']) && $post['msg_wrong_email'] !== '' ? $post['msg_wrong_email'] : __('Please enter correct email address.', 'smile'); $msg_wrong_email = sanitize_text_field($msg_wrong_email); $msg = isset($_POST['message']) ? $_POST['message'] : __('Thank You! Your submission was successful.', 'smile'); $msg = sanitize_text_field($msg); if ($on_success == 'message') { $action = 'message'; $url = 'none'; } else { $action = 'redirect'; $url = esc_url($post['redirect']); } $contact = array(); $contact['name'] = $name; $contact['email'] = $email; $contact['date'] = date("j-n-Y"); // Check Email in MX records $myApp = new iSDK(); $myApp->cfgCon($infusionsoft_app, $infusionsoft_api, "on"); if (!$only_conversion) { $email_status = apply_filters('cp_valid_mx_email', $email); } else { $email_status = false; } if ($email_status) { $status = 'success'; $web_form_html = $myApp->getWebFormHtml($infusionsoft_list_id); $dom = new DOMDocument(); $dom->loadHTML($web_form_html); $xpath = new DOMXPath($dom); $tags = $xpath->query('//input[@type="hidden"]'); foreach ($tags as $tag) { if (trim($tag->getAttribute('name')) == "inf_form_xid") { $inf_form_xid = trim($tag->getAttribute('value')); } if (trim($tag->getAttribute('name')) == "inf_form_name") { $inf_form_name = trim($tag->getAttribute('value')); } if (trim($tag->getAttribute('name')) == "infusionsoft_version") { $infusionsoft_version = trim($tag->getAttribute('value')); } } $posturl = "https://" . $infusionsoft_app . ".infusionsoft.com/app/form/process/{$inf_form_xid}"; $fields = array('inf_field_FirstName' => urlencode($name), 'inf_field_Email' => urlencode($email), 'infusionsoft_version' => urlencode($infusionsoft_version), 'inf_form_xid' => "{$inf_form_xid}", 'inf_form_name' => "{$inf_form_name}"); $fields_string = ''; foreach ($fields as $key => $value) { $fields_string .= $key . '=' . $value . '&'; } trim($fields_string, '&'); $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, $posturl); curl_setopt($ch, CURLOPT_POST, count($fields)); curl_setopt($ch, CURLOPT_POSTFIELDS, $fields_string); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1); $curlResponse = curl_exec($ch); curl_close($ch); if ($curlResponse === FALSE) { // form was NOT successfully submitted print_r(json_encode(array('action' => $action, 'email_status' => $email_status, 'status' => 'error', 'message' => __("Something went wrong. Please try again.", "smile"), 'url' => ''))); exit; } else { // add the contact to central contacts database $style_id = $_POST['style_id']; $option = $_POST['option']; if (function_exists("cp_add_subscriber_contact")) { $isuserupdated = cp_add_subscriber_contact($option, $contact); } if (!$isuserupdated) { // if user is updated don't count as a conversion // update conversions smile_update_conversions($style_id); } } } else { if ($only_conversion) { // update conversions $status = 'success'; smile_update_conversions($style_id); } else { $msg = $msg_wrong_email; $status = 'error'; } } print_r(json_encode(array('action' => $action, 'email_status' => $email_status, 'status' => $status, 'message' => $msg, 'url' => $url))); exit; }