* 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('"', '', $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">✕ ' . $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> </p>'; $email_content .= '<p>This email was sent from : ' . $full_site_url . '</p>'; $email_content .= '<p> </p>'; $email_content .= '<p> </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'), '✔') . '</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'), '✕') . '</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§ion=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';