/**
  * Prepare fields that are displayed in the form.
  *
  * @since  1.0.1.0
  * @return array
  */
 protected function prepare_fields()
 {
     $api_status = MS_Addon_Mailchimp::get_api_status();
     $settings = $this->data['settings'];
     $action = MS_Controller_Settings::AJAX_ACTION_UPDATE_CUSTOM_SETTING;
     $auto_opt_in = $settings->get_custom_setting('mailchimp', 'auto_opt_in');
     $auto_opt_in = lib2()->is_true($auto_opt_in);
     $fields = array('mailchimp_api_test' => array('id' => 'mailchimp_api_test', 'type' => MS_Helper_Html::TYPE_HTML_TEXT, 'title' => __('MailChimp API test status: ', MS_TEXT_DOMAIN), 'value' => $api_status ? __('Verified', MS_TEXT_DOMAIN) : __('Failed', MS_TEXT_DOMAIN), 'class' => $api_status ? 'ms-ok' : 'ms-nok'), 'mailchimp_api_key' => array('id' => 'mailchimp_api_key', 'name' => 'custom[mailchimp][api_key]', 'type' => MS_Helper_Html::INPUT_TYPE_TEXT, 'title' => __('MailChimp API Key', MS_TEXT_DOMAIN), 'desc' => sprintf('<div>' . __('Visit <a href="%1$s">your API dashboard</a> to create an API Key.', MS_TEXT_DOMAIN) . '</div>', 'http://admin.mailchimp.com/account/api" target="_blank'), 'value' => $settings->get_custom_setting('mailchimp', 'api_key'), 'class' => 'ms-text-medium', 'ajax_data' => array('group' => 'mailchimp', 'field' => 'api_key', 'action' => $action)), 'separator' => array('type' => MS_Helper_Html::TYPE_HTML_SEPARATOR), 'auto_opt_in' => array('id' => 'auto_opt_in', 'name' => 'custom[mailchimp][auto_opt_in]', 'type' => MS_Helper_Html::INPUT_TYPE_RADIO_SLIDER, 'title' => __('Automatically opt-in new users to the mailing list.', MS_TEXT_DOMAIN), 'desc' => __('Users will not receive an email confirmation. You are responsible to inform your users.', MS_TEXT_DOMAIN), 'value' => $auto_opt_in, 'class' => 'inp-before', 'ajax_data' => array('group' => 'mailchimp', 'field' => 'auto_opt_in', 'action' => $action)), 'separator1' => array('type' => MS_Helper_Html::TYPE_HTML_SEPARATOR), 'mail_list_registered' => array('id' => 'mail_list_registered', 'name' => 'custom[mailchimp][mail_list_registered]', 'type' => MS_Helper_Html::INPUT_TYPE_SELECT, 'title' => __('Registered users mailing list (not members)', MS_TEXT_DOMAIN), 'field_options' => MS_Addon_Mailchimp::get_mail_lists(), 'value' => $settings->get_custom_setting('mailchimp', 'mail_list_registered'), 'ajax_data' => array('group' => 'mailchimp', 'field' => 'mail_list_registered', 'action' => $action)), 'mail_list_members' => array('id' => 'mail_list_members', 'name' => 'custom[mailchimp][mail_list_members]', 'type' => MS_Helper_Html::INPUT_TYPE_SELECT, 'title' => __('Members mailing list', MS_TEXT_DOMAIN), 'field_options' => MS_Addon_Mailchimp::get_mail_lists(), 'value' => $settings->get_custom_setting('mailchimp', 'mail_list_members'), 'ajax_data' => array('group' => 'mailchimp', 'field' => 'mail_list_members', 'action' => $action)), 'mail_list_deactivated' => array('id' => 'mail_list_deactivated', 'name' => 'custom[mailchimp][mail_list_deactivated]', 'type' => MS_Helper_Html::INPUT_TYPE_SELECT, 'title' => __('Deactivated memberships mailing list', MS_TEXT_DOMAIN), 'field_options' => MS_Addon_Mailchimp::get_mail_lists(), 'value' => $settings->get_custom_setting('mailchimp', 'mail_list_deactivated'), 'ajax_data' => array('group' => 'mailchimp', 'field' => 'mail_list_deactivated', 'action' => $action)));
     return $fields;
 }
 /**
  * Load the Mailchimp API
  *
  * @since  1.0.0
  *
  * @return M2_Mailchimp Object
  */
 public static function load_mailchimp_api()
 {
     if (empty(self::$mailchimp_api)) {
         $options = apply_filters('ms_addon_mailchimp_load_mailchimp_api_options', array('timeout' => false, 'ssl_verifypeer' => false, 'ssl_verifyhost' => false, 'ssl_cainfo' => false, 'debug' => false));
         if (!class_exists('Mailchimp')) {
             require_once MS_Plugin::instance()->dir . '/lib/mailchimp-api/Mailchimp.php';
         }
         $api = new M2_Mailchimp(self::$settings->get_custom_setting('mailchimp', 'api_key'), $options);
         // Pinging the server
         $ping = $api->helper->ping();
         if (is_wp_error($ping)) {
             throw new Exception($ping);
         }
         self::$mailchimp_api = $api;
     }
     return self::$mailchimp_api;
 }