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 
    }