/**
  * Process unsubscribe request. Add the submitted email address to the Excluded Emails list
  */
 public static function process_unsubscribe_request()
 {
     global $wpdb;
     if (isset($_POST['fue_action']) && $_POST['fue_action'] == 'fue_unsubscribe') {
         $email = str_replace(' ', '+', $_POST['fue_email']);
         $email_id = $_POST['fue_eid'];
         $error = '';
         if (empty($email) || !is_email($email)) {
             $error = urlencode(__('Please enter a valid email address', 'follow_up_emails'));
         }
         $order_id = !empty($_POST['unsubscribe_order_id']) ? absint($_POST['unsubscribe_order_id']) : 0;
         $unsubscribe = !empty($_POST['unsubscribe_all']) && $_POST['unsubscribe_all'] == 'yes' ? true : false;
         if (fue_is_email_excluded($email, 0, $order_id)) {
             if ($order_id > 0) {
                 $error = sprintf(__('The email (%s) is already unsubscribed from receiving emails regarding Order %d', 'follow_up_emails'), $email, $order_id);
             } else {
                 $error = sprintf(__('The email (%s) is already unsubscribed from receiving emails', 'follow_up_emails'), $email);
             }
         }
         if (!empty($error)) {
             $url = add_query_arg(array('fueid' => $_POST['fue_eid'], 'qid' => !empty($_POST['fue_qid']) ? $_POST['fue_qid'] : '', 'error' => urlencode($error)), fue_get_unsubscribe_url());
             wp_redirect($url);
             exit;
         }
         if ($unsubscribe) {
             fue_exclude_email_address($email, $email_id, 0);
             if (isset($_GET['fue'])) {
                 do_action('fue_user_unsubscribed', $_GET['fue']);
             }
         } elseif ($order_id > 0) {
             fue_exclude_email_address($email, $email_id, $order_id);
             $wpdb->query($wpdb->prepare("DELETE FROM {$wpdb->prefix}followup_email_orders WHERE user_email = %s AND order_id = %d AND is_sent = 0", $email, $order_id));
         }
         wp_redirect(add_query_arg('fue_unsubscribed', 1, Follow_Up_Emails::get_account_url()));
         exit;
     } elseif (isset($_GET['fue_unsubscribed'])) {
         Follow_Up_Emails::show_message(__('Thank you. Your email settings have been saved.', 'follow_up_emails'));
     }
 }
 /**
  * Add/Remove emails from the Excluded List
  */
 static function manage_optout()
 {
     $wpdb = Follow_Up_Emails::instance()->wpdb;
     $post = stripslashes_deep($_POST);
     if (isset($post['button_add']) && $post['button_add'] == 'Add') {
         // add an email address to the excludes list
         $email = $post['email_address'];
         // make sure it is a valid email address
         if (!is_email($email)) {
             wp_redirect('admin.php?page=followup-emails-optouts&error=' . urlencode(__('The email address is invalid', 'follow_up_emails')));
             exit;
         }
         fue_exclude_email_address($email);
         wp_redirect('admin.php?page=followup-emails-optouts&added=' . urlencode($email));
         exit;
     } elseif (isset($post['button_restore']) && $post['button_restore'] == 'Apply') {
         $emails = $post['email'];
         $email_ids = '';
         if (is_array($emails) && !empty($emails)) {
             $email_ids = "'" . implode("','", $emails) . "'";
         }
         if (!empty($email_ids)) {
             $wpdb->query("DELETE FROM {$wpdb->prefix}followup_email_excludes WHERE id IN({$email_ids})");
         }
         wp_redirect('admin.php?page=followup-emails-optouts&restored=' . count($emails));
         exit;
     }
     wp_redirect('admin.php?page=followup-emails-optouts');
     exit;
 }