*	or build our default selection arrays etc.
 *
 *	@since 6.0.0
 *	Author: Yikes Inc. | https://www.yikesinc.com
 */
$api_key = yikes_get_mc_api_key();
$dash_position = strpos($api_key, '-');
if ($dash_position !== false) {
    $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/merge-vars.json';
}
$available_merge_variables = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'id' => array($form_data_array['list_id'])), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
$body = json_decode(wp_remote_retrieve_body($available_merge_variables), true);
if (isset($body['error'])) {
    if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
        require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
        $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
        $error_logging->yikes_easy_mailchimp_write_to_error_log($body['error'], __("Get Merge Variables", 'yikes-inc-easy-mailchimp-extender'), "process_ajax.php");
    }
}
// find and return the location of this merge field in the array
$index = $this->findMCListIndex($form_data_array['merge_tag'], $body['data'][0]['merge_vars'], 'tag');
// store it and use it to pre-populate field data (only on initial add to form)
$merge_field_data = $body['data'][0]['merge_vars'][$index];
?>
<section class="draggable" id="<?php 
echo $form_data_array['field_name'];
?>
">
	<!-- top -->
	<a href="#" class="expansion-section-title settings-sidebar">
		<span class="dashicons dashicons-plus"></span><?php 
 /**
  * Create the function to output our account activity dashboard widget
  */
 function account_activity_dashboard_widget()
 {
     // Get our list data!
     // Check for a transient, if not - set one up for one hour
     if (false === ($account_activity = get_transient('yikes-easy-mailchimp-account-activity'))) {
         $api_key = trim(get_option('yikes-mc-api-key', ''));
         $dash_position = strpos($api_key, '-');
         if ($dash_position !== false) {
             $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/helper/chimp-chatter.json';
         }
         $account_activity = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
         $account_activity = json_decode(wp_remote_retrieve_body($account_activity), true);
         if (isset($account_activity['error'])) {
             if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
                 require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
                 $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
                 $error_logging->yikes_easy_mailchimp_write_to_error_log($account_activity['error'], __("Get Account Activity", 'yikes-inc-easy-mailchimp-extender'), "Dashboard Activity Widget");
             }
         } else {
             // set our transient for one hour
             set_transient('yikes-easy-mailchimp-account-activity', $account_activity, 1 * HOUR_IN_SECONDS);
         }
     }
     if (!empty($account_activity)) {
         include_once YIKES_MC_PATH . 'admin/partials/dashboard-widgets/templates/account-activity-template.php';
     }
 }
        $opposite_sort_dir = 'DESC';
        $icon = '<span class="dashicons dashicons-arrow-up"></span>';
    }
    if (!isset($_REQUEST['sort'])) {
        $icon = '';
    }
    // get all subscribed members
    if ($dash_position !== false) {
        $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/members.json';
    }
    $subscribers_list = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'id' => $list_id, 'opts' => array('start' => $paged, 'limit' => $limit, 'sort_field' => $column, 'sort_dir' => $sort_dir)), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
    $subscribers_list = json_decode(wp_remote_retrieve_body($subscribers_list), true);
    if (isset($subscribers_list['error'])) {
        if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
            require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
            $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
            $error_logging->yikes_easy_mailchimp_write_to_error_log($subscribers_list['error'], __("Get Subscriber Count", 'yikes-inc-easy-mailchimp-extender'), "View Lists Page");
        }
    }
    $total_pages = ceil($subscribers_list['total'] / $limit);
    if ($total_pages == 0) {
        $total_pages = '1';
    }
}
?>
<div class="wrap">
	<!-- Freddie Logo -->
	<img src="<?php 
echo YIKES_MC_URL . 'includes/images/MailChimp_Assets/Freddie_60px.png';
?>
" alt="<?php 
function yikes_mailchimp_subscriber_count_shortcode($attributes)
{
    // Attributes
    extract(shortcode_atts(array('form' => '', 'list' => ''), $attributes, 'yikes-mailchimp-subscriber-count'));
    /* If the user hasn't authenticated yet - bail */
    if (get_option('yikes-mc-api-validation', 'invalid_api_key') != 'valid_api_key') {
        if (WP_DEBUG) {
            return '<strong>' . __("You don't appear to be connected to MailChimp.", "yikes-inc-easy-mailchimp-extender") . '</strong>';
        }
        return;
    }
    $form = !empty($attributes['form']) ? str_replace('&quot;', '', $attributes['form']) : false;
    // replace the sanitize quotes to perform a proper query
    $list_id = !empty($attributes['list']) ? $attributes['list'] : false;
    /* If no list ID was passed into the shortcode - bail */
    if (!$list_id && !$form) {
        if (WP_DEBUG) {
            return '<strong>' . __('You forgot to include the list or form ID.', 'yikes-inc-easy-mailchimp-extender') . '</strong>';
        }
        return;
    }
    /* if a form ID and a list ID were passed in, use the form ID */
    if ($form || $form && $list_id) {
        global $wpdb;
        // return it as an array, so we can work with it to build our form below
        $form_results = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'yikes_easy_mc_forms WHERE id = ' . $form . '', ARRAY_A);
        // confirm we have some results, or return an error
        if (!$form_results) {
            if (WP_DEBUG) {
                return __("Oh no...This form doesn't exist. Head back to the manage forms page and select a different form.", 'yikes-inc-easy-mailchimp-extender');
            }
            return;
        }
        $form_data = $form_results[0];
        $list_id = sanitize_key($form_data['list_id']);
        // associated list id (users who fill out the form will be subscribed to this list)
    }
    // object buffer
    ob_start();
    // submit the request the get the subscriber count
    try {
        // get the api key
        $api_key = trim(get_option('yikes-mc-api-key', ''));
        $dash_position = strpos($api_key, '-');
        if ($dash_position !== false) {
            $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/list.json';
        }
        // run the request
        $subscriber_count_response = wp_remote_post($api_endpoint, array('body' => apply_filters('yikes-mailchimp-user-subscriber-count-api-request', array('apikey' => $api_key, 'filters' => array('list_id' => $list_id)), $list_id), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
        $subscriber_count_response = json_decode(wp_remote_retrieve_body($subscriber_count_response), true);
        if (isset($subscriber_count_response['error'])) {
            if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
                require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
                $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
                $error_logging->yikes_easy_mailchimp_write_to_error_log($subscriber_count_response['error'], __("Get Account Lists", 'yikes-inc-easy-mailchimp-extender'), "yikes-mailchimp-subscriber-count.php");
            }
        }
        // if more than one list is returned, something went wrong - bail
        if ($subscriber_count_response['total'] != 1) {
            if (WP_DEBUG) {
                return '<strong>' . sprintf(__("It looks like this list wasn't found. Double check the list with with ID '%s' exists.", "yikes-inc-easy-mailchimp-extender"), $list_id) . '</strong>';
            }
            return;
        }
        /* type cast the returned value as an integer */
        echo (int) apply_filters('yikes-mailchimp-subscriber-count-value', $subscriber_count_response['data'][0]['stats']['member_count']);
    } catch (Exception $error) {
        echo $error->getMessage();
    }
    return ob_get_clean();
}
 /**
  *	Hook to submit the data to MailChimp when
  *	a new integration type is submitted
  *
  *	@since 6.0.0
  **/
 public function subscribe_user_integration($email, $type, $merge_vars)
 {
     // get checkbox data
     $checkbox_options = get_option('optin-checkbox-init', '');
     if ($type != 'registration_form') {
         $update = '1';
     } else {
         $update = '0';
     }
     // set ip address
     if (!isset($merge_vars['OPTIN_IP']) && isset($_SERVER['REMOTE_ADDR'])) {
         $merge_vars['OPTIN_IP'] = sanitize_text_field($_SERVER['REMOTE_ADDR']);
     }
     // set the optin time
     $merge_vars['OPTIN_TIME'] = current_time('Y-m-d H:i:s', 1);
     // check for interest groups
     $interest_groups = isset($checkbox_options[$type]['interest-groups']) ? $checkbox_options[$type]['interest-groups'] : false;
     // if interest groups were found, push them to the merge variable array
     if ($interest_groups) {
         $merge_vars['groupings'] = array();
         foreach ($interest_groups as $interest_group_id => $interest_group_selections) {
             // merge variable interest groups array
             $merge_vars['groupings'][] = array('id' => $interest_group_id, 'groups' => $interest_group_selections);
         }
         // replace the interest groups - to avoid any errors thrown if the admin switches lists, or interest groups
         $merge_vars['replace_interests'] = 1;
     }
     // initialize MailChimp API
     $api_key = yikes_get_mc_api_key();
     $dash_position = strpos($api_key, '-');
     if ($dash_position !== false) {
         $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/subscribe.json';
     }
     $subscribe_response = wp_remote_post($api_endpoint, array('body' => apply_filters('yikes-mailchimp-checkbox-integration-subscribe-api-request', array('apikey' => yikes_get_mc_api_key(), 'id' => $checkbox_options[$type]['associated-list'], 'email' => array('email' => sanitize_email($email)), 'merge_vars' => apply_filters('yikes-mailchimp-checkbox-integration-merge-variables', $merge_vars, $type), 'double_optin' => 1, 'update_existing' => $update, 'send_welcome' => 1), $type), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
     if (!Is_wp_error($subscribe_response)) {
         $response_body = json_decode(wp_remote_retrieve_body($subscribe_response), true);
         if (WP_DEBUG || isset($response_body['error'])) {
             if (get_option('yikes-mailchimp-debug-status', '') == '1') {
                 require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
                 $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
                 $error_logging->yikes_easy_mailchimp_write_to_error_log($response_body['error'], __("Checkbox Integration Subscribe User", 'yikes-inc-easy-mailchimp-extender'), "Checkbox Integrations");
             }
         }
     }
     return;
 }
 public static function check_list_for_interest_groups($list_id = '', $integration_type = '', $load = false)
 {
     if (!$list_id) {
         $list_id = $_POST['list_id'];
     }
     if (!$integration_type) {
         $integration_type = $_POST['integration'];
     }
     $api_key = yikes_get_mc_api_key();
     // setup/check our transients
     if (WP_DEBUG || false === ($interest_groupings = get_transient($list_id . '_interest_group'))) {
         // It wasn't there, so regenerate the data and save the transient
         $dash_position = strpos($api_key, '-');
         if ($dash_position !== false) {
             $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/interest-groupings.json';
         }
         $interest_groupings = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'id' => $list_id, 'counts' => false), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
         $interest_groupings = json_decode(wp_remote_retrieve_body($interest_groupings), true);
         if (isset($interest_groupings['error'])) {
             if (get_option('yikes-mailchimp-debug-status', '') == '1') {
                 require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
                 $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
                 $error_logging->yikes_easy_mailchimp_write_to_error_log($interest_groupings['error'], __("Get Interest Groups", 'yikes-inc-easy-mailchimp-extender'), "class.ajax.php");
             }
         } else {
             // set the transient for 2 hours
             set_transient($list_id . '_interest_group', $interest_groupings, 2 * HOUR_IN_SECONDS);
         }
     }
     if (isset($interest_groupings) && !empty($interest_groupings)) {
         require YIKES_MC_PATH . 'admin/partials/menu/options-sections/templates/integration-interest-groups.php';
     }
     // do not kill off execution on load, only on an ajax request
     if (!$load) {
         exit;
     }
 }
if (isset($available_merge_variables['error'])) {
    if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
        $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
        $error_logging->yikes_easy_mailchimp_write_to_error_log($available_merge_variables['error'], __("Get Merge Variables", 'yikes-inc-easy-mailchimp-extender'), "Edit Form Page");
    }
}
// get the interest group data
if ($dash_position !== false) {
    $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/interest-groupings.json';
}
$interest_groupings = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'id' => $form['list_id']), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
$interest_groupings = json_decode(wp_remote_retrieve_body($interest_groupings), true);
$no_interest_groupings = '<p class="description error-descripion">' . __('No Interest Groups Found', 'yikes-inc-easy-mailchimp-extender') . '.</p>';
if (isset($interest_groupings['error'])) {
    if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
        $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
        $error_logging->yikes_easy_mailchimp_write_to_error_log($interest_groupings['error'], __("Get Interest Groups", 'yikes-inc-easy-mailchimp-extender'), "Edit Form Page");
    }
}
/* Build Our Update Form URL */
// create a custom URL to allow for creating fields
$url = esc_url_raw(add_query_arg(array('action' => 'yikes-easy-mc-update-form', 'nonce' => wp_create_nonce('update-mailchimp-form' . -$form['id']))));
/* Display Our Form */
?>
	<!-- Freddie Logo -->
	<img src="<?php 
echo YIKES_MC_URL . 'includes/images/MailChimp_Assets/Freddie_60px.png';
?>
" alt="<?php 
__('Freddie - MailChimp Mascot', 'yikes-inc-easy-mailchimp-extender');
?>
                 $additional_lists[$list_data['data'][0]['id']] = $list_data['data'][0]['name'];
             }
         }
     }
 }
 /* Build the array of merge variables => value */
 if (isset($merge_data_array) && count($merge_data_array) >= 1) {
     if ($dash_position !== false) {
         $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/merge-vars.json';
     }
     $merge_variables = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'id' => array($list_id)), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
     $merge_variables = json_decode(wp_remote_retrieve_body($merge_variables), true);
     if (isset($merge_variables['error'])) {
         if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
             require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
             $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
             $error_logging->yikes_easy_mailchimp_write_to_error_log($merge_variables['error'], __("Get Merge Variables", 'yikes-inc-easy-mailchimp-extender'), "View User Page");
         }
     }
     // loop and display
     if ($merge_variables) {
         foreach ($merge_variables['data'][0]['merge_vars'] as $merge_variable) {
             if ($merge_variable['tag'] != 'EMAIL') {
                 $merge_variable_fields[$merge_variable['name']] = isset($merge_data_array[$merge_variable['tag']]) ? $merge_data_array[$merge_variable['tag']] : '';
             }
         }
     }
 }
 // store usable data
 $user_email = sanitize_email($user_data['email']);
 // prepend our email address to the beginning
$form_results = $wpdb->get_results('SELECT * FROM ' . $wpdb->prefix . 'yikes_easy_mc_forms', ARRAY_A);
/* Store Data if User is Authorized */
if ($this->is_user_mc_api_valid_form(false) == 'valid') {
    /// Check for a transient, if not - set one up for one hour
    if (false === ($list_data = get_transient('yikes-easy-mailchimp-list-data'))) {
        $api_key = trim(get_option('yikes-mc-api-key', ''));
        $dash_position = strpos($api_key, '-');
        if ($dash_position !== false) {
            $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/list.json';
        }
        $list_data = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'limit' => 100), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
        $list_data = json_decode(wp_remote_retrieve_body($list_data), true);
        if (isset($list_data['error'])) {
            if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
                require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
                $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
                $error_logging->yikes_easy_mailchimp_write_to_error_log($list_data['error'], __("Get Account Lists", 'yikes-inc-easy-mailchimp-extender'), "Manage Forms Page");
            }
        } else {
            // set our transient
            set_transient('yikes-easy-mailchimp-list-data', $list_data, 1 * HOUR_IN_SECONDS);
        }
    }
} else {
    $list_data = null;
}
?>
<div class="wrap">
	<!-- Freddie Logo -->
	<img src="<?php 
echo YIKES_MC_URL . 'includes/images/MailChimp_Assets/Freddie_60px.png';
     break;
     // missing a required field
 // missing a required field
 case '250':
     // get all merge variables in array, loop and str_replace error code with field name
     $api_key = yikes_get_mc_api_key();
     $dash_position = strpos($api_key, '-');
     if ($dash_position !== false) {
         $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/merge-vars.json';
     }
     $merge_variables = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'id' => array($list_id)), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
     $merge_variables = json_decode(wp_remote_retrieve_body($merge_variables), true);
     if (is_wp_error($merge_variables) || isset($merge_variables['error'])) {
         if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
             require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
             $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
             $error_logging->yikes_easy_mailchimp_write_to_error_log($merge_variables['error'], __("Get Merge Variables", 'yikes-inc-easy-mailchimp-extender'), "process_form_submission_ajax.php");
         }
     }
     // re-store our data
     $merge_variables = $merge_variables['data'][0]['merge_vars'];
     $merge_variable_name_array = array();
     foreach ($merge_variables as $merge_var) {
         $merge_variables_name_array[$merge_var['tag']] = $merge_var['name'];
     }
     $error_message = $subscribe_response['error'];
     // replace tag with name in the error message.
     foreach ($merge_variables_name_array as $tag => $name) {
         $error_message = str_replace($tag, $name, $error_message);
     }
     $error_response = $error_message;
<?php

// lets run an ajax request to get all of our field data, to either prepopulate
// or build our default selection arrays etc.
$api_key = yikes_get_mc_api_key();
$dash_position = strpos($api_key, '-');
if ($dash_position !== false) {
    $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/merge-vars.json';
}
$available_merge_variables = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'id' => array($form_data_array['list_id'])), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
$body = json_decode(wp_remote_retrieve_body($available_merge_variables), true);
if (isset($body['error'])) {
    if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
        require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
        $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
        $error_logging->yikes_easy_mailchimp_write_to_error_log($body['error'], __("Get Merge Variables", 'yikes-inc-easy-mailchimp-extender'), __("Add Field to Form", 'yikes-inc-easy-mailchimp-extender'));
    }
    ?>
			<section class="draggable" id="error-container">
				<p><span class="dashicons dashicons-no-alt"></span> <?php 
    printf(__('Error: %s', 'yikes-inc-easy-mailchimp-extender'), $body['error']);
    ?>
</p>
			</section>
		<?php 
    return;
}
// find and return the location of this merge field in the array
$index = $this->findMCListIndex($form_data_array['merge_tag'], $body['data'][0]['merge_vars'], 'tag');
// store it and use it to pre-populate field data (only on initial add to form)
$merge_field_data = $body['data'][0]['merge_vars'][$index];
 public function sendUpdateProfileEmail()
 {
     $user_email = $_POST['user_email'];
     $list_id = $_POST['list_id'];
     $api_key = yikes_get_mc_api_key();
     $dash_position = strpos($api_key, '-');
     $explode_key = explode('-', $api_key);
     $data_center = $explode_key[1];
     $full_site_url = get_bloginfo('url');
     // list details api call
     if ($dash_position !== false) {
         $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/list.json';
     }
     $list_details = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'filters' => array('list_id' => $list_id)), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
     $list_details = json_decode(wp_remote_retrieve_body($list_details), true);
     if (isset($list_details['error'])) {
         if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
             require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
             $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
             $error_logging->yikes_easy_mailchimp_write_to_error_log($list_details['error'], __("Send Update Profile Email - Get Account Lists", 'yikes-inc-easy-mailchimp-extender'), "class.public_ajax.php");
         }
     }
     // account details api call
     if ($dash_position !== false) {
         $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/helper/account-details.json';
     }
     $account_details = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
     $account_details = json_decode(wp_remote_retrieve_body($account_details), true);
     if (isset($account_details['error'])) {
         if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
             require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
             $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
             $error_logging->yikes_easy_mailchimp_write_to_error_log($account_details['error'], __("Send Update Profile Email - Get Account Details", 'yikes-inc-easy-mailchimp-extender'), "class.public_ajax.php");
         }
     }
     // subscriber details api call
     if ($dash_position !== false) {
         $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/member-info.json';
     }
     $subscriber_account_details = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'id' => $list_id, 'emails' => array(array('email' => $user_email))), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
     $subscriber_account_details = json_decode(wp_remote_retrieve_body($subscriber_account_details), true);
     if (isset($subscriber_account_details['error'])) {
         if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
             require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
             $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
             $error_logging->yikes_easy_mailchimp_write_to_error_log($subscriber_account_details['error'], __("Send Update Profile Email - Get Member Info.", 'yikes-inc-easy-mailchimp-extender'), "class.public_ajax.php");
         }
     }
     // check for errors in any of the calls
     if (isset($list_details['error']) || isset($account_details['error']) || isset($subscriber_account_details['error'])) {
         $error_message = isset($list_details['error']) ? $list_details['error'] : false;
         if (!$error_message) {
             $error_message = isset($account_details['error']) ? $account_details['error'] : false;
             if (!$error_message) {
                 $error_message = isset($subscriber_account_details['error']) ? $subscriber_account_details['error'] : false;
                 if (!$error_message) {
                     $error_message = '';
                 }
             }
         }
         $errorMessage = sprintf(__('Error sending update profile email. <strong>Error: %s</strong>. Please contact the site administrator.', 'yikes-inc-easy-mailchimp-extender'), $error_message);
         wp_send_json_error(array('response_text' => '<div class="yikes-easy-mc-error-message">&#10005; ' . $errorMessage . '</div>'));
         return;
     }
     // send the email!
     $subscriber_id = $subscriber_account_details['data'][0]['id'];
     $explode_url = explode('.', $account_details['contact']['url']);
     $update_link_href = 'http://' . $explode_url[1] . '.' . $data_center . '.list-manage1.com/profile?u=' . $account_details['user_id'] . '&id=' . $list_id . '&e=' . $subscriber_id;
     $subject = 'MailChimp Profile Update';
     $headers = 'From: ' . $list_details['data'][0]['default_from_name'] . ' <' . $list_details['data'][0]['default_from_email'] . '>' . "\r\n";
     $headers .= 'Content-type: text/html';
     $email_content = '<p>Greetings,</p> <p>A request has been made to update your MailChimp account profile information. To do so please use the following link: <a href="' . $update_link_href . '" title="Update MailChimp Profile">Update MailChimp Profile Info.</a>';
     $email_content .= "<p>If you did not request this update, please disregard this email.</p>";
     $email_content .= '<p>&nbsp;</p>';
     $email_content .= '<p>This email was sent from : ' . $full_site_url . '</p>';
     $email_content .= '<p>&nbsp;</p>';
     $email_content .= '<p>&nbsp;</p>';
     $email_content .= '<p style="font-size:13px;margin-top:5em;"><em>This email was generated by the <a href="http://www.wordpress.org/plugins/yikes-inc-easy-mailchimp-extender/" target="_blank">Easy Forms for MailChimp</a> plugin, created by <a href="http://www.yikesinc.com" target="_blank">YIKES Inc.</a></em></p>';
     /* Confirm that the email was sent */
     if (wp_mail($user_email, apply_filters('yikes-mailchimp-update-email-subject', $subject), apply_filters('yikes-mailchimp-update-email-content', $email_content, $update_link_href), $headers)) {
         wp_send_json_success(array('response_text' => '<div class="yikes-easy-mc-success-message">' . sprintf(__('%s Update email successfully sent. Please check your inbox for the message.', 'yikes-inc-easy-mailchimp-extender'), '&#10004;') . '</div>'));
         exit;
     } else {
         wp_send_json_error(array('response_text' => '<div class="yikes-easy-mc-error-message">' . sprintf(__('%s Email failed to send. Please contact the site administrator.', 'yikes-inc-easy-mailchimp-extender'), '&#10005;') . '</div>'));
         exit;
     }
 }
?>
</a></h2>
		
		<table class="widefat" id="yikes-mailchimp-error-log">
			<!-- table header -->
			<tr>
				<th class="row-title"><strong><?php 
_e('Error Message', 'yikes-inc-easy-mailchimp-extender');
?>
</strong></th>
				<th><strong><?php 
_e('Error Details', 'yikes-inc-easy-mailchimp-extender');
?>
</strong></th>
			</tr>
			
			<?php 
/* Generate oure error logging table */
require_once YIKES_MC_PATH . '/includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
$error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
$error_logging->yikes_easy_mailchimp_generate_error_log_table();
?>
			
			<!-- end table body -->
			
		</table>
		<!-- end debug table -->
		
	</section>
	
</div> <!-- .inside -->
 /**
  *	Return an array of MailChimp lists associated with this account
  *
  *	Used when deleting the sites MailChimp cache stored
  *	@since 6.0.2
  *	@return 	$list_id_array - array of list id's to loop over
  */
 public function get_mailchimp_list_ids_on_account()
 {
     $api_key = trim(get_option('yikes-mc-api-key', ''));
     if (!$api_key) {
         // if no api key is set/site is not connected, return an empty array
         return array();
     }
     $dash_position = strpos($api_key, '-');
     if ($dash_position !== false) {
         $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/list.json';
     }
     $mailchimp_lists = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'limit' => 100), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
     if (!is_wp_error($mailchimp_lists)) {
         $list_data = json_decode(wp_remote_retrieve_body($mailchimp_lists), true);
         if (isset($list_data['error'])) {
             if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
                 require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
                 $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
                 $error_logging->yikes_easy_mailchimp_write_to_error_log($list_data['error'], __("Get List IDs", 'yikes-inc-easy-mailchimp-extender'), __("Clear API Cache", 'yikes-inc-easy-mailchimp-extender'));
             }
         }
         $mail_chimp_list_ids = array();
         if ($mailchimp_lists) {
             foreach ($list_data as $list) {
                 $mail_chimp_list_ids[] = $list['id'];
             }
             return $mail_chimp_list_ids;
         } else {
             return array();
         }
     }
     return;
 }
<?php

$api_key = trim(get_option('yikes-mc-api-key', ''));
$dash_position = strpos($api_key, '-');
if ($dash_position !== false) {
    $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/interest-groupings.json';
}
// get the interest group data
$interest_groupings = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'id' => $form_data_array['list_id']), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
$interest_groupings_body = json_decode(wp_remote_retrieve_body($interest_groupings), true);
if (!is_wp_error($interest_groupings_body)) {
    if (isset($interest_groupings_body['error'])) {
        if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
            require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
            $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
            $error_logging->yikes_easy_mailchimp_write_to_error_log($interest_groupings_body['error'], __("Get Interest Groups", 'yikes-inc-easy-mailchimp-extender'), __("Add Interest Group to Form", 'yikes-inc-easy-mailchimp-extender'));
        }
        ?>
			<section class="draggable" id="error-container">
				<p><span class="dashicons dashicons-no-alt"></span> <?php 
        printf(__('Error: %s', 'yikes-inc-easy-mailchimp-extender'), $interest_groupings_body['error']);
        ?>
</p>
			</section>
			<?php 
        return;
    }
    // find and return the location of this merge field in the array
    $index = $this->findMCListIndex($form_data_array['group_id'], $interest_groupings_body, 'id');
    // check for our index...
    if (isset($index)) {
 /**
  *	Return an array of MailChimp lists associated with this account
  *
  *	Used when deleting the sites MailChimp cache stored
  *	@since 6.0.2
  *	@return 	$list_id_array - array of list id's to loop over
  */
 public function get_mailchimp_list_ids_on_account()
 {
     $api_key = trim(get_option('yikes-mc-api-key', ''));
     if (!$api_key) {
         // if no api key is set/site is not connected, return an empty array
         return array();
     }
     try {
         $MailChimp = new MailChimp($api_key);
         // retreive our list data
         $mailchimp_lists = $MailChimp->call('lists/list', array('apikey' => $api_key));
         $mail_chimp_list_ids = array();
         if ($mailchimp_lists) {
             foreach ($mailchimp_lists['data'] as $list) {
                 $mail_chimp_list_ids[] = $list['id'];
             }
             return $mail_chimp_list_ids;
         } else {
             return array();
         }
     } catch (Exception $e) {
         // log to our error log
         require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
         $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
         $error_logging->yikes_easy_mailchimp_write_to_error_log($e->getMessage(), __("Retreiving List Data", 'yikes-inc-easy-mailchimp-extender'), __("Delete MailChimp Site Cache", 'yikes-inc-easy-mailchimp-extender'));
     }
     return;
 }
	<?php 
// lets confirm the user has a valid API key stored
if ($this->is_user_mc_api_valid_form(false) == 'valid') {
    /// Check for a transient, if not - set one up for one hour
    if (false === ($list_data = get_transient('yikes-easy-mailchimp-list-data'))) {
        $api_key = trim(get_option('yikes-mc-api-key', ''));
        $dash_position = strpos($api_key, '-');
        if ($dash_position !== false) {
            $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/lists/list.json';
        }
        $list_data = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key, 'limit' => 100), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
        $list_data = json_decode(wp_remote_retrieve_body($list_data), true);
        if (isset($list_data['error'])) {
            if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
                require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
                $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
                $error_logging->yikes_easy_mailchimp_write_to_error_log($list_data['error'], __("Get Account Lists", 'yikes-inc-easy-mailchimp-extender'), "Integration Settings Page");
            }
        } else {
            // set our transient
            set_transient('yikes-easy-mailchimp-list-data', $list_data, 1 * HOUR_IN_SECONDS);
        }
    }
} else {
    ?>
			<div class="inside">
				<?php 
    echo sprintf(__('Please %s to setup your integrations.', 'yikes-inc-easy-mailchimp-extender'), '<a href="' . esc_url_raw(admin_url('admin.php?page=yikes-inc-easy-mailchimp-settings&section=general-settings')) . '" title="' . __('General Settings', 'yikes-inc-easy-mailchimp-extender') . '">' . __('enter a valid MailChimp API key', 'yikes-inc-easy-mailchimp-extender') . '</a>');
    ?>
			</div>
			<?php 
        } else {
            // set our transient for one hour
            set_transient('yikes-easy-mailchimp-account-data', $account_details, 1 * HOUR_IN_SECONDS);
        }
    }
    if (false === ($account_activity = get_transient('yikes-easy-mailchimp-account-activity'))) {
        // retreive our list data
        if ($dash_position !== false) {
            $api_endpoint = 'https://' . substr($api_key, $dash_position + 1) . '.api.mailchimp.com/2.0/helper/chimp-chatter.json';
        }
        $account_activity = wp_remote_post($api_endpoint, array('body' => array('apikey' => $api_key), 'timeout' => 10, 'sslverify' => apply_filters('yikes-mailchimp-sslverify', true)));
        $account_activity = json_decode(wp_remote_retrieve_body($account_activity), true);
        if (isset($account_activity['error'])) {
            if (WP_DEBUG || get_option('yikes-mailchimp-debug-status', '') == '1') {
                require_once YIKES_MC_PATH . 'includes/error_log/class-yikes-inc-easy-mailchimp-error-logging.php';
                $error_logging = new Yikes_Inc_Easy_Mailchimp_Error_Logging();
                $error_logging->yikes_easy_mailchimp_write_to_error_log($account_activity['error'], __("Get Chimp Chatter", 'yikes-inc-easy-mailchimp-extender'), "Account Details Page");
            }
        } else {
            // set our transient for one hour
            set_transient('yikes-easy-mailchimp-account-activity', $account_activity, 1 * HOUR_IN_SECONDS);
        }
    }
} else {
    wp_die(__('It looks like you need to re-validate your MailChimp API key before you can continue.', 'yikes-inc-easy-mailchimp-extender'), 500);
}
?>
<div class="wrap" id="account-details">
	<!-- Freddie Logo -->
	<img src="<?php 
echo YIKES_MC_URL . 'includes/images/MailChimp_Assets/Freddie_60px.png';