public function yikes_easy_mailchimp_update_form() { // grab & store our variables ( associated list & form name ) $nonce = $_REQUEST['nonce']; $form_id = $_REQUEST['id']; // verify our nonce if (!wp_verify_nonce($nonce, 'update-mailchimp-form-' . $form_id)) { wp_die(__("We've run into an error. The security check didn't pass. Please try again.", 'yikes-inc-easy-mailchimp-extender'), __("Failed nonce validation", 'yikes-inc-easy-mailchimp-extender'), array('response' => 500, 'back_link' => true)); } // store our values! $list_id = $_POST['associated-list']; $form_name = stripslashes($_POST['form-name']); $form_description = sanitize_text_field(stripslashes($_POST['form-description'])); $send_welcome_email = $_POST['send-welcome-email']; $redirect_user_on_submit = $_POST['redirect-user-on-submission']; $redirect_page = $_POST['redirect-user-to-selection']; // stripslashes_deep on save, to prevent foreign languages from added excessive backslashes $assigned_fields = isset($_POST['field']) ? stripslashes_deep($_POST['field']) : array(); // setup our submission settings serialized array $submission_settings = array('ajax' => $_POST['form-ajax-submission'], 'redirect_on_submission' => $_POST['redirect-user-on-submission'], 'redirect_page' => $_POST['redirect-user-to-selection'], 'custom_redirect_url' => esc_url($_POST['custom-redirect-url']), 'hide_form_post_signup' => $_POST['hide-form-post-signup'], 'replace_interests' => $_POST['replace-interest-groups']); // setup our opt-in settings serialized array $optin_settings = array('optin' => $_POST['single-double-optin'], 'update_existing_user' => $_POST['update-existing-user'], 'send_update_email' => $_POST['update-existing-email'], 'send_welcome_email' => $_POST['send-welcome-email']); // setup our error settings serialized array $error_settings = array('success' => trim($_POST['yikes-easy-mc-success-message']) ? trim(stripslashes($_POST['yikes-easy-mc-success-message'])) : '', 'general-error' => trim($_POST['yikes-easy-mc-general-error-message']) ? trim(stripslashes($_POST['yikes-easy-mc-general-error-message'])) : '', 'invalid-email' => trim($_POST['yikes-easy-mc-invalid-email-message']) ? trim(stripslashes($_POST['yikes-easy-mc-invalid-email-message'])) : '', 'already-subscribed' => trim($_POST['yikes-easy-mc-user-subscribed-message']) ? trim(stripslashes($_POST['yikes-easy-mc-user-subscribed-message'])) : '', 'update-link' => trim($_POST['yikes-easy-mc-user-update-link']) ? trim(stripslashes($_POST['yikes-easy-mc-user-update-link'])) : ''); // Setup the new form settings array // @since 6.0.3.8 // To Do: Combine date & time so it's a single unix timestamp $form_settings = array('yikes-easy-mc-form-class-names' => trim($_POST['yikes-easy-mc-form-class-names']), 'yikes-easy-mc-inline-form' => $_POST['yikes-easy-mc-inline-form'][0], 'yikes-easy-mc-submit-button-type' => $_POST['yikes-easy-mc-submit-button-type'][0], 'yikes-easy-mc-submit-button-text' => trim($_POST['yikes-easy-mc-submit-button-text']), 'yikes-easy-mc-submit-button-image' => esc_url(trim($_POST['yikes-easy-mc-submit-button-image'])), 'yikes-easy-mc-submit-button-classes' => trim($_POST['yikes-easy-mc-submit-button-classes']), 'yikes-easy-mc-form-schedule' => isset($_POST['yikes-easy-mc-form-schedule']) ? '1' : '0', 'yikes-easy-mc-form-restriction-start' => strtotime($_POST['yikes-easy-mc-form-restriction-start-date'] . ' ' . $_POST['yikes-easy-mc-form-restriction-start-time']), 'yikes-easy-mc-form-restriction-end' => strtotime($_POST['yikes-easy-mc-form-restriction-end-date'] . ' ' . $_POST['yikes-easy-mc-form-restriction-end-time']), 'yikes-easy-mc-form-restriction-pending-message' => trim($_POST['yikes-easy-mc-form-restriction-pending-message']), 'yikes-easy-mc-form-restriction-expired-message' => trim($_POST['yikes-easy-mc-form-restriction-expired-message']), 'yikes-easy-mc-form-login-required' => isset($_POST['yikes-easy-mc-form-login-required']) ? '1' : '0', 'yikes-easy-mc-form-restriction-login-message' => trim($_POST['yikes-easy-mc-form-restriction-login-message'])); // additional custom fields (extensions / user defined fields) $custom_fields = array(); if (isset($_POST['custom-field'])) { foreach ($_POST['custom-field'] as $custom_field => $custom_value) { if (is_array($custom_value)) { $custom_fields[$custom_field] = array_filter(stripslashes_deep($custom_value)); // array_filters to remove empty items (don't save them!) } else { $custom_fields[$custom_field] = stripslashes($custom_value); } } } $form_updates = yikes_deep_parse_args(array('list_id' => $list_id, 'form_name' => $form_name, 'form_description' => $form_description, 'fields' => $assigned_fields, 'custom_template' => 0, 'send_welcome_email' => $send_welcome_email, 'redirect_user_on_submit' => $redirect_user_on_submit, 'redirect_page' => $redirect_page, 'submission_settings' => $submission_settings, 'optin_settings' => $optin_settings, 'error_messages' => $error_settings, 'form_settings' => $form_settings, 'custom_fields' => $custom_fields), $this->form_interface->get_form_defaults()); $this->form_interface->update_form($form_id, $form_updates); /* Custom action hook which allows users to update specific options when a form is updated - used in add ons */ do_action('yikes-mailchimp-save-form', $form_id, $custom_fields); // redirect the user to the manage forms page, display confirmation wp_redirect(esc_url_raw(admin_url('admin.php?page=yikes-mailchimp-edit-form&id=' . $form_id . '&updated-form=true'))); exit; }
public function form($instance) { $all_forms = $this->form_interface->get_all_forms(); if (empty($all_forms)) { ?> <section class="no-forms-widget"> <strong><span class="dashicons dashicons-no-alt no-forms-found-icon"></span><?php echo sprintf(__('No forms found. It looks like you need to <a href="%s" title="%s">%s</a>.', 'yikes-inc-easy-mailchimp-extender'), esc_url_raw(admin_url('admin.php?page=yikes-inc-easy-mailchimp')), __('Create a form', 'yikes-inc-easy-mailchimp-extender'), __('create a form', 'yikes-inc-easy-mailchimp-extender')); ?> </strong> </section> <?php return; } // Title if (isset($instance['title'])) { $title = $instance['title']; } else { $title = __('MailChimp Signup Form', 'yikes-inc-easy-mailchimp-extender'); } // Selected Form if (isset($instance['form_id'])) { $selected_form = $instance['form_id']; } else { $selected_form = ''; } // Submit Button Text if (isset($instance['submit_text'])) { $submit_text = $instance['submit_text']; } else { $submit_text = __('Submit', 'yikes-inc-easy-mailchimp-extender'); } if (get_option('yikes-mc-api-validation', 'invalid_api_key') == 'invalid_api_key') { ?> <p class="enter-valid-api-error-widget"><strong><?php _e('Please enter a valid MailChimp API key to connect your site to MailChimp.', 'yikes-inc-easy-mailchimp-extender'); ?> </strong></p> <?php return; } // Widget admin form ?> <p> <label for="<?php echo $this->get_field_id('title'); ?> "><?php _e('Title:'); ?> </label> <input class="widefat" id="<?php echo $this->get_field_id('title'); ?> " name="<?php echo $this->get_field_name('title'); ?> " type="text" value="<?php echo esc_attr($title); ?> " /> </p> <p> <label for="<?php echo $this->get_field_id('form_id'); ?> "><?php _e('Form:'); ?> </label> <select id="<?php echo $this->get_field_id('form_id'); ?> " name="<?php echo $this->get_field_name('form_id'); ?> " class="widefat"> <?php // build our array foreach ($all_forms as $id => $form) { ?> <option <?php selected($selected_form, $id); ?> name="<?php echo $this->get_field_name('form_id'); ?> " value="<?php echo $id; ?> "><?php echo stripslashes($form['form_name']); ?> </option> <?php } ?> </select> </p> <p> <label for="<?php echo $this->get_field_id('form_description'); ?> "><?php _e('Display Form Description:'); ?> </label> <input class="widefat" id="<?php echo $this->get_field_id('form_description'); ?> " name="<?php echo $this->get_field_name('form_description'); ?> " type="checkbox" value="1" <?php if (isset($instance['form_description'])) { checked($instance['form_description'], 1); } ?> /> </p> <p> <label for="<?php echo $this->get_field_id('submit_button_text'); ?> "><?php _e('Submit Button Text:'); ?> </label> <input class="widefat" id="<?php echo $this->get_field_id('submit_text'); ?> " name="<?php echo $this->get_field_name('submit_text'); ?> " type="text" value="<?php echo esc_attr($submit_text); ?> " /> </p> <?php }