prefix . 'cookieadmin_do_not_sell'; $email_exist = $wpdb->get_var( $wpdb->prepare("SELECT user_email FROM $table_name WHERE user_email = %s", trim($form_data['email'])) ); // check if the email exists if(!empty($email_exist)){ wp_send_json_error(esc_html(cookieadmin__($cookieadmin['default']['dns_request_in_progress'], 'dns_request_in_progress'))); } $result = $wpdb->insert( $table_name, array( 'user_email' => $form_data['email'], 'first_name' => $form_data['first_name'], 'last_name' => $form_data['last_name'], 'phone' => !empty($form_data['phone']) ? $form_data['phone'] : '', 'zip' => !empty($form_data['zip_code']) ? $form_data['zip_code'] : '', 'status' => 'Recieved', 'created_at' => time(), ), array('%s', '%s', '%s', '%s', '%s', '%s', '%d') ); // check if any error has occured if($result === false){ wp_send_json_error(esc_html(cookieadmin__($cookieadmin['default']['dns_submission_err'], 'dns_submission_err'))); } wp_send_json_success(esc_html(cookieadmin__($cookieadmin['default']['dns_submission_success'], 'dns_submission_success'))); } // Generate Do Not Sell form html static function get_dns_shortcode_html(){ global $cookieadmin; $settings = get_option('cookieadmin_do_not_sell', []); $output = '

'.esc_html(cookieadmin__($cookieadmin['default']['dns_heading'], 'dns_heading')).'

'.(!empty($settings['exp_content']) ? wp_kses_post($settings['exp_content']) : esc_html__('Users have the right to request that their personal information not be sold or shared with third parties for advertising or marketing purposes, and businesses must honor this choice and stop such data use upon request.', 'cookieadmin')).'
'; // Insert input for the ZIP if enabled if(!empty($settings['zip_enabled'])){ $output .= '
'; } // Insert input for the Phone if enabled if(!empty($settings['phone_enabled'])){ $output .= '
'; } // Consent checkbox $output .= '
*'.esc_html(cookieadmin__($cookieadmin['default']['dns_confirm_msg'], 'dns_confirm_msg')).'
'; return $output; } static function form_script(){ $nonce = wp_create_nonce('cookieadmin_pro_js_nonce'); $ajax_url = admin_url('admin-ajax.php'); return " // Submit Do Not Sell request function cookieadmin_pro_submit_dns_form(e){ e.preventDefault(); if(cookieadmin_pro_vars === 'undefined' || !cookieadmin_pro_vars.ajax_url){ return; } var success_elm = document.getElementById('cookieadmin-dns-form-success'), error_elm = document.getElementById('cookieadmin-dns-form-error'), spinner = document.querySelector('.cookieadmin-dns-spinner'), submit_btn = document.querySelector('.cookieadmin_dns_submit'); if(success_elm && error_elm){ success_elm.style.display = 'none'; error_elm.style.display = 'none'; } spinner.style.display = 'inline-block'; submit_btn.disabled = true; // Get the form elements; var form_element = e.target; var form_data = { confirmation : '', first_name : '', last_name : '', email : '', phone : '', zip_code : '' }; for(let key in form_data){ form_data[key] = form_element.elements['cookieadmin_dns_' + key] ? form_element.elements['cookieadmin_dns_' + key].value : ''; } const data = 'action=cookieadmin_pro_ajax_handler&cookieadmin_act=submit_do_not_sell_form' + '&cookieadmin_pro_security={$nonce}&cookieadmin_dns_req=' + encodeURIComponent(JSON.stringify(form_data)); // Make async request — don't block or wait const xhttp = new XMLHttpRequest(); xhttp.open('POST', '{$ajax_url}'); xhttp.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded; charset=UTF-8'); xhttp.onload = function(){ if(this.status === 200){ try { var response = JSON.parse(this.responseText); console.log(response.data); if(response.success){ if(success_elm){ success_elm.innerText = response.data; success_elm.style.display = 'flex'; form_element.reset(); } }else{ if(error_elm){ error_elm.innerText = response.data; error_elm.style.display = 'flex'; } } } catch (e) { console.log(e); } } spinner.style.display = 'none'; submit_btn.disabled = false; } xhttp.onerror = function(){ console.log('Ajax request failed'); submit_btn.disabled = false; } xhttp.send(data); return true; } "; } // Add styling for the Do Not Sell form layout and basic styling static function form_style(){ return '.cookieadmin-do-not-sell-form{padding:10px 20px;max-width:600px;border:.5px solid #cecece;border-radius:5px}#cookieadmin_dns_form{display:flex;flex-direction:column;gap:15px}#cookieadmin_dns_form .cookieadmin-do-not-sell-form-field{display:flex;flex-direction:column;gap:3px}.cookieadmin-do-not-sell-form-field input[type="text"],.cookieadmin-do-not-sell-form-field input[type="email"]{padding:5px;max-width:400px}.cookieadmin-do-not-sell-form-field input[type="submit"]{padding:8px 15px;width:fit-content}#cookieadmin-dns-form-error{padding:10px;color:#fa3d3d;border-left:3.5px solid #fa3d3d;background-color:#fef2f2}#cookieadmin-dns-form-success{padding:10px;text-align:center}.cookieadmin-do-not-sell-req-input{margin:5px;color:red}.cookieadmin-do-not-sell-form-header{text-align:center}.cookieadmin-do-not-sell-text{text-align:justify}.cookieadmin_dns_submit{cursor:pointer;} .cookieadmin-dns-spinner { display:none; width: 1em; height: 1em; border: 2px solid transparent; border-top-color: currentColor; border-radius: 50%; animation: cookieadmin-dns-spin .6s linear infinite; } @keyframes cookieadmin-dns-spin { to { transform: rotate(360deg); } }'; } }