PluginProbe
Mailchimp List Subscribe Form / trunk
Mailchimp List Subscribe Form vtrunk
1.2.4 1.2.5 1.2.6 1.2.7 1.2.8 1.2.9 1.3 1.4 1.4.1 1.4.2 1.4.3 1.4.4 1.4.5 1.5 1.5.1 1.5.2 1.5.3 1.5.4 1.5.5 1.5.6 1.5.7 1.5.8 1.5.9 1.6.0 1.6.1 All 55 releases
← All changes | mailchimp_widget.php +560 -492 1.3trunk View file →
@@ -1,356 +1,379 @@
1 1 <?php
2 2 /**
3 - * Displays a MailChimp Signup Form
4 - **/
5 -function mailchimpSF_signup_form($args = array()) {
6 - extract($args);
3 + * Mailchimp widget
4 + *
5 + * @package Mailchimp
6 + */
7 7
8 - $mv = get_option('mc_merge_vars');
9 - $igs = get_option('mc_interest_groups');
10 -
8 +/**
9 + * Displays a Mailchimp Signup Form
10 + *
11 + * @param array $args Args
12 + * @return void
13 + */
14 +function mailchimp_sf_signup_form( $args = array() ) {
15 + // Check if we should display the form.
16 + if ( ! mailchimp_sf_should_display_form() ) {
17 + return;
18 + }
19 +
20 + $before_title = isset( $args['before_title'] ) ? $args['before_title'] : '';
21 + $after_title = isset( $args['after_title'] ) ? $args['after_title'] : '';
22 + $before_widget = isset( $args['before_widget'] ) ? $args['before_widget'] : '';
23 + $after_widget = isset( $args['after_widget'] ) ? $args['after_widget'] : '';
24 + $is_preview = isset( $args['is_preview'] ) ? (bool) $args['is_preview'] : false;
25 + $preview_data = isset( $args['preview_data'] ) ? $args['preview_data'] : array();
26 +
27 + $mv = get_option( 'mc_merge_vars' );
28 + $igs = get_option( 'mc_interest_groups' );
29 +
11 30 // See if we have valid Merge Vars
12 - if (!is_array($mv)){
13 - echo $before_widget;
31 + if ( ! is_array( $mv ) ) {
32 + if ( ! empty( $before_widget ) ) {
33 + echo wp_kses_post( $before_widget );
34 + } else {
35 + echo '<div class="mc_container">';
36 + }
14 37 ?>
15 38 <div class="mc_error_msg">
16 - <?php esc_html_e('There was a problem loading your MailChimp details. Please re-run the setup process under Settings->MailChimp Setup', 'mailchimp_i18n'); ?>
39 + <?php
40 + echo wp_kses(
41 + __(
42 + 'Sorry, there was a problem loading your Mailchimp details. Please navigate to <strong>Settings</strong> and click <strong>Mailchimp Setup</strong> to try again.',
43 + 'mailchimp'
44 + ),
45 + [
46 + 'strong' => [],
47 + ]
48 + );
49 + ?>
17 50 </div>
18 51 <?php
19 - echo $after_widget;
52 + if ( ! empty( $after_widget ) ) {
53 + echo wp_kses_post( $after_widget );
54 + }
55 +
56 + if ( empty( $before_widget ) ) {
57 + echo '</div>';
58 + }
59 +
20 60 return;
21 61 }
22 -
23 - if (!empty($before_widget)) {
24 - echo $before_widget;
62 +
63 + if ( ! empty( $before_widget ) ) {
64 + echo wp_kses_post( $before_widget );
65 + } else {
66 + echo '<div class="mc_container">';
25 67 }
26 68
27 - $header = get_option('mc_header_content');
69 + $header = get_option( 'mc_header_content' );
70 + if ( $is_preview && ! empty( $preview_data ) ) {
71 + $header = $preview_data['header'] ?? $header;
72 + }
73 +
28 74 // See if we have custom header content
29 - if (!empty($header)) {
75 + if ( ! empty( $header ) ) {
30 76 // See if we need to wrap the header content in our own div
31 - if (strlen($header) == strlen(strip_tags($header))){
32 - echo !empty($before_title) ? $before_title : '<div class="mc_custom_border_hdr">';
33 - echo $header; // don't escape $header b/c it may have HTML allowed
34 - echo !empty($after_title) ? $after_title : '</div><!-- /mc_custom_border_hdr -->';
77 + if ( strlen( $header ) === strlen( wp_strip_all_tags( $header ) ) ) {
78 + echo ! empty( $before_title ) ? wp_kses_post( $before_title ) : '<div class="mc_custom_border_hdr">';
79 + echo wp_kses_post( $header );
80 + echo ! empty( $after_title ) ? wp_kses_post( $after_title ) : '</div><!-- /mc_custom_border_hdr -->';
81 + } else {
82 + echo wp_kses_post( $header );
35 83 }
36 - else {
37 - echo $header; // don't escape $header b/c it may have HTML allowed
38 - }
39 84 }
40 -
41 - $sub_heading = trim(get_option('mc_subheader_content'));
42 - ?>
43 85
44 -<style>
45 - .widget_mailchimpsf_widget .widget-title {
46 - line-height: 1.4em;
47 - margin-bottom: 0.75em;
86 + $sub_heading = trim( get_option( 'mc_subheader_content' ) );
87 + $list_id = get_option( 'mc_list_id' );
88 + $form_id = wp_unique_id( $list_id . '_' );
89 + if ( $is_preview && ! empty( $preview_data ) ) {
90 + $sub_heading = $preview_data['sub_heading'] ?? $sub_heading;
48 91 }
49 - #mc_subheader {
50 - line-height: 1.25em;
51 - margin-bottom: 18px;
52 - }
53 - .mc_merge_var {
54 - margin-bottom: 1.0em;
55 - }
56 - .mc_var_label,
57 - .mc_interest_label {
58 - display: block;
59 - margin-bottom: 0.5em;
60 - }
61 - .mc_input {
62 - -moz-box-sizing: border-box;
63 - -webkit-box-sizing: border-box;
64 - box-sizing: border-box;
65 - width: 100%;
66 - }
67 - .mc_input.mc_phone {
68 - width: auto;
69 - }
70 - select.mc_select {
71 - margin-top: 0.5em;
72 - width: 100%;
73 - }
74 - .mc_address_label {
75 - margin-top: 1.0em;
76 - margin-bottom: 0.5em;
77 - display: block;
78 - }
79 - .mc_address_label ~ select {
80 - width: 100%;
81 - }
82 - .mc_list li {
83 - list-style: none;
84 - background: none !important;
85 - }
86 - .mc_interests_header {
87 - margin-top: 1.0em;
88 - margin-bottom: 0.5em;
89 - }
90 - .mc_interest label,
91 - .mc_interest input {
92 - margin-bottom: 0.4em;
93 - }
94 - #mc_signup_submit {
95 - margin-top: 1.5em;
96 - width: 80%;
97 - }
98 - #mc_unsub_link a {
99 - font-size: 0.75em;
100 - }
101 - #mc_unsub_link {
102 - margin-top: 1.0em;
103 - }
104 - .mc_header_address,
105 - .mc_email_format {
106 - display: block;
107 - font-weight: bold;
108 - margin-top: 1.0em;
109 - margin-bottom: 0.5em;
110 - }
111 - .mc_email_options {
112 - margin-top: 0.5em;
113 - }
114 - .mc_email_type {
115 - padding-left: 4px;
116 - }
117 -</style>
92 + ?>
118 93
119 -<div id="mc_signup">
120 - <form method="post" action="#mc_signup" id="mc_signup_form">
121 - <input type="hidden" id="mc_submit_type" name="mc_submit_type" value="html" />
94 +<div id="mc_signup_<?php echo esc_attr( $form_id ); ?>">
95 + <form method="post" action="#mc_signup_<?php echo esc_attr( $form_id ); ?>" id="mc_signup_form_<?php echo esc_attr( $form_id ); ?>" class="mc_signup_form" data-list-id="<?php echo esc_attr( $list_id ); ?>">
96 + <input type="hidden" class="mc_submit_type" name="mc_submit_type" value="html" />
122 97 <input type="hidden" name="mcsf_action" value="mc_submit_signup_form" />
123 - <?php wp_nonce_field('mc_submit_signup_form', '_mc_submit_signup_form_nonce', false); ?>
124 -
125 - <?php
126 - if ($sub_heading) {
98 + <?php wp_nonce_field( 'mc_submit_signup_form', '_mc_submit_signup_form_nonce', false ); ?>
99 +
100 + <?php
101 + if ( $sub_heading ) {
127 102 ?>
128 - <div id="mc_subheader">
129 - <?php echo $sub_heading; ?>
103 + <div class="mc_subheader">
104 + <?php echo wp_kses_post( $sub_heading ); ?>
130 105 </div><!-- /mc_subheader -->
131 106 <?php
132 - }
107 + }
133 108 ?>
134 -
109 +
135 110 <div class="mc_form_inside">
136 -
137 - <div class="updated" id="mc_message">
138 - <?php echo mailchimpSF_global_msg(); ?>
139 - </div><!-- /mc_message -->
140 111
112 + <div class="mc_message_wrapper">
113 + <?php echo wp_kses_post( mailchimp_sf_frontend_msg() ); ?>
114 + </div><!-- /mc_message_wrapper -->
115 +
141 116 <?php
142 - //don't show the "required" stuff if there's only 1 field to display.
117 + // don't show the "required" stuff if there's only 1 field to display.
143 118 $num_fields = 0;
144 - foreach((array)$mv as $var) {
145 - $opt = 'mc_mv_'.$var['tag'];
146 - if ($var['req'] || get_option($opt) == 'on') {
147 - $num_fields++;
119 + foreach ( (array) $mv as $mv_var ) {
120 + $opt = 'mc_mv_' . $mv_var['tag'];
121 + if ( $is_preview && ! empty( $preview_data ) ) {
122 + if ( $mv_var['required'] || ( isset( $preview_data['fields'][ $mv_var['tag'] ] ) && $preview_data['fields'][ $mv_var['tag'] ] ) ) {
123 + ++$num_fields;
124 + }
125 + } elseif ( $mv_var['required'] || get_option( $opt ) === 'on' ) {
126 + ++$num_fields;
148 127 }
149 128 }
150 129
151 - if (is_array($mv)) {
130 + if ( is_array( $mv ) ) {
152 131 // head on back to the beginning of the array
153 - reset($mv);
132 + reset( $mv );
154 133 }
155 -
134 +
156 135 // Loop over our vars, and output the ones that are set to display
157 - foreach($mv as $var) {
158 - if (!$var['public']) {
159 - echo '<div style="display:none;">'.mailchimp_form_field($var, $num_fields).'</div>';
136 + foreach ( $mv as $mv_var ) {
137 + $opt = 'mc_mv_' . $mv_var['tag'];
138 + $should_display = 'on' === get_option( $opt );
139 + if ( $is_preview && ! empty( $preview_data ) ) {
140 + $should_display = $preview_data['fields'][ $mv_var['tag'] ] ?? $should_display;
160 141 }
161 - else {
162 - echo mailchimp_form_field($var, $num_fields);
163 - }
142 +
143 + echo mailchimp_form_field( $mv_var, $num_fields, $should_display ); // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Ignoring because form field is escaped in function
164 144 }
165 -
166 -
145 +
167 146 // Show an explanation of the * if there's more than one field
168 - if ($num_fields > 1) {
147 + if ( $num_fields > 1 ) {
169 148 ?>
170 - <div id="mc-indicates-required">
171 - * = <?php esc_html_e('required field', 'mailchimp_i18n'); ?>
149 + <div class="mc-indicates-required">
150 + * = <?php esc_html_e( 'required field', 'mailchimp' ); ?>
172 151 </div><!-- /mc-indicates-required -->
173 152 <?php
174 153 }
175 -
176 -
154 +
177 155 // Show our Interest groups fields if we have them, and they're set to on
178 - if (is_array($igs) && !empty($igs)) {
179 - foreach ($igs as $ig) {
180 - if (is_array($ig) && isset($ig['id'])) {
181 - if ($igs && get_option('mc_show_interest_groups_'.$ig['id']) == 'on') {
182 - if ($ig['form_field'] != 'hidden') {
183 - ?>
156 + if ( is_array( $igs ) && ! empty( $igs ) ) {
157 + foreach ( $igs as $ig ) {
158 + if ( is_array( $ig ) && isset( $ig['id'] ) ) {
159 + $should_display = 'on' === get_option( 'mc_show_interest_groups_' . $ig['id'] );
160 + if ( $is_preview && ! empty( $preview_data ) ) {
161 + $should_display = $preview_data['groups'][ $ig['id'] ] ?? $should_display;
162 + }
163 + if ( ( $igs && $should_display ) ) {
164 + if ( 'hidden' !== $ig['type'] ) {
165 + ?>
184 166 <div class="mc_interests_header">
185 - <?php echo esc_html($ig['name']); ?>
167 + <?php echo esc_html( $ig['title'] ); ?>
186 168 </div><!-- /mc_interests_header -->
187 169 <div class="mc_interest">
188 - <?php
170 + <?php
171 + } else {
172 + ?>
173 + <div class="mc_interest" style="display: none;">
174 + <?php
189 175 }
190 - else {
191 176 ?>
192 - <div class="mc_interest" style="display: none;">
193 - <?php
194 - }
195 - ?>
196 177
197 - <?php
198 - mailchimp_interest_group_field($ig);
199 - ?>
178 + <?php
179 + mailchimp_interest_group_field( $ig );
180 + ?>
200 181 </div><!-- /mc_interest -->
201 -
202 - <?php
182 +
183 + <?php
203 184 }
204 185 }
205 186 }
206 187 }
207 188
208 - if (get_option('mc_email_type_option')) {
209 - ?>
189 + if ( get_option( 'mc_email_type_option' ) ) {
190 + ?>
210 191 <div class="mergeRow">
211 - <label class="mc_email_format"><?php _e('Preferred Format', 'mailchimp_i18n'); ?></label>
212 - <div class="field-group groups mc_email_options">
213 - <ul class="mc_list">
214 - <li><input type="radio" name="email_type" id="email_type_html" value="html" checked="checked"><label for="email_type_html" class="mc_email_type"><?php _e('HTML', 'mailchimp_i18n'); ?></label></li>
215 - <li><input type="radio" name="email_type" id="email_type_text" value="text"><label for="email_type_text" class="mc_email_type"><?php _e('Text', 'mailchimp_i18n'); ?></label></li>
216 - </ul>
192 + <label class="mc_email_format"><?php esc_html_e( 'Preferred Format', 'mailchimp' ); ?></label>
193 + <div class="field-group groups mc_email_options">
194 + <ul class="mc_list">
195 + <li><input type="radio" name="email_type" id="email_type_html_<?php echo esc_attr( $form_id ); ?>" value="html" checked="checked"><label for="email_type_html_<?php echo esc_attr( $form_id ); ?>" class="mc_email_type"><?php esc_html_e( 'HTML', 'mailchimp' ); ?></label></li>
196 + <li><input type="radio" name="email_type" id="email_type_text_<?php echo esc_attr( $form_id ); ?>" value="text"><label for="email_type_text_<?php echo esc_attr( $form_id ); ?>" class="mc_email_type"><?php esc_html_e( 'Text', 'mailchimp' ); ?></label></li>
197 + </ul>
217 198 </div>
218 - </div>
199 + </div>
219 200
220 - <?php
201 + <?php
221 202 }
203 +
204 + // Add a honeypot field.
205 + mailchimp_sf_honeypot_field();
206 +
207 + $submit_text = get_option( 'mc_submit_text' );
208 +
209 + // Preview.
210 + if ( $is_preview && ! empty( $preview_data ) ) {
211 + $submit_text = $preview_data['submit_text'] ?? $submit_text;
212 + }
222 213 ?>
223 214
224 215 <div class="mc_signup_submit">
225 - <input type="submit" name="mc_signup_submit" id="mc_signup_submit" value="<?php echo esc_attr(get_option('mc_submit_text')); ?>" class="button" />
216 + <input type="submit" name="mc_signup_submit" class="mc_signup_submit_button" id="mc_signup_submit_<?php echo esc_attr( $form_id ); ?>" value="<?php echo esc_attr( $submit_text ); ?>" class="button" />
226 217 </div><!-- /mc_signup_submit -->
227 -
228 -
218 +
229 219 <?php
230 - $user = get_option('mc_sopresto_user');
231 - if ($user && get_option('mc_use_unsub_link') == 'on') {
232 - $dc = get_option('mc_sopresto_dc', 'us1');
233 - $host = 'http://'.$dc.'.list-manage.com';
220 + $user = get_option( 'mc_user' );
221 + $display_unsub_link = 'on' === get_option( 'mc_use_unsub_link' );
222 + if ( $is_preview && ! empty( $preview_data ) ) {
223 + $display_unsub_link = $preview_data['display_unsub_link'] ?? $display_unsub_link;
224 + }
225 +
226 + if ( $user && $display_unsub_link ) {
227 + $api = mailchimp_sf_get_api();
228 + $host = 'http://' . $api->datacenter . '.list-manage.com';
234 229 ?>
235 - <div id="mc_unsub_link" align="center">
236 - <a href="<?php echo esc_url($host.'/unsubscribe/?u='.$user['user_id'].'&amp;id='.get_option('mc_list_id')); ?>" target="_blank"><?php esc_html_e('unsubscribe from list', 'mailchimp_i18n'); ?></a>
230 + <div class="mc_unsub_link" align="center">
231 + <a href="<?php echo esc_url( $host . '/unsubscribe/?u=' . $user['account_id'] . '&amp;id=' . get_option( 'mc_list_id' ) ); ?>" target="_blank"><?php esc_html_e( 'unsubscribe from list', 'mailchimp' ); ?></a>
237 232 </div><!-- /mc_unsub_link -->
238 233 <?php
239 234 }
240 - if ($user && get_option('mc_rewards') == 'on') {
241 - ?>
242 - <br/>
243 - <div id="mc_display_rewards" align="center">
244 - <?php esc_html_e('powered by', 'mailchimp_i18n'); ?> <a href="<?php echo esc_url('http://www.mailchimp.com/affiliates/?aid='.$user['user_id'].'&amp;afl=1'); ?>">MailChimp</a>!
245 - </div><!-- /mc_display_rewards -->
246 - <?php
247 - }
248 235 ?>
249 -
236 +
250 237 </div><!-- /mc_form_inside -->
251 238 </form><!-- /mc_signup_form -->
252 239 </div><!-- /mc_signup_container -->
253 240 <?php
254 - if (!empty($before_widget)) {
255 - echo $after_widget;
241 + if ( ! empty( $after_widget ) ) {
242 + echo wp_kses_post( $after_widget );
256 243 }
244 +
245 + if ( empty( $before_widget ) ) {
246 + echo '</div>';
247 + }
257 248 }
258 249
259 250 /**
251 + * Add a hidden honeypot field
252 + *
253 + * @return void
254 + */
255 +function mailchimp_sf_honeypot_field() {
256 + ?>
257 + <div style="display: none; !important">
258 + <label for="mailchimp_sf_alt_email"><?php esc_html_e( 'Alternative Email:', 'mailchimp' ); ?></label>
259 + <input type="text" name="mailchimp_sf_alt_email" autocomplete="off"/>
260 + </div>
261 + <input type="hidden" class="mailchimp_sf_no_js" name="mailchimp_sf_no_js" value="1" />
262 + <?php
263 +}
264 +
265 +/**
260 266 * Generate and display markup for Interest Groups
267 + *
261 268 * @param array $ig Set of Interest Groups to generate markup for
262 269 * @return void
263 270 */
264 -function mailchimp_interest_group_field($ig) {
265 - if (!is_array($ig)) {
271 +function mailchimp_interest_group_field( $ig ) {
272 + if ( ! is_array( $ig ) ) {
266 273 return;
267 274 }
268 - $html = '';
269 - $set_name = 'group['.$ig['id'].']';
270 - switch ($ig['form_field']) {
271 - case 'checkbox':
275 + $html = '';
276 + $set_name = 'group[' . $ig['id'] . ']';
277 + switch ( $ig['type'] ) {
272 278 case 'checkboxes':
273 279 $i = 1;
274 - foreach($ig['groups'] as $interest){
275 - $interest = $interest['name'];
276 - $html .= '
277 - <input type="checkbox" name="'.esc_attr($set_name.'['.$i.']').'" id="'.esc_attr('mc_interest_'.$ig['id'].'_'.$interest).'" class="mc_interest" value="'.esc_attr($interest).'" />
278 - <label for="'. esc_attr('mc_interest_'.$ig['id'].'_'.$interest).'" class="mc_interest_label">'.esc_html($interest).'</label>
280 + foreach ( $ig['groups'] as $interest ) {
281 + $interest_name = $interest['name'];
282 + $interest_id = $interest['id'];
283 + $unique_id = wp_unique_id( 'mc_interest_' . $ig['id'] . '_' . $interest_id . '_' );
284 + $html .= '
285 +
286 + <input type="checkbox" name="' . esc_attr( $set_name . '[' . $interest_id . ']' ) . '" id="' . esc_attr( $unique_id ) . '" class="mc_interest" value="' . esc_attr( $interest_name ) . '" />
287 + <label for="' . esc_attr( $unique_id ) . '" class="mc_interest_label">' . esc_html( $interest_name ) . '</label>
279 288 <br/>';
280 - $i++;
289 + ++$i;
281 290 }
282 291 break;
283 292 case 'radio':
284 - foreach($ig['groups'] as $interest){
285 - $interest = $interest['name'];
286 - $html .= '
287 - <input type="radio" name="'.esc_attr($set_name).'" id="'.esc_attr('mc_interest_'.$ig['id'].'_'.$interest).'" class="mc_interest" value="'.esc_attr($interest).'"/>
288 - <label for="'.esc_attr('mc_interest_'.$ig['id'].'_'.$interest).'" class="mc_interest_label">'.esc_html($interest).'</label>
293 + foreach ( $ig['groups'] as $interest ) {
294 + $interest_name = $interest['name'];
295 + $interest_id = $interest['id'];
296 + $unique_id = wp_unique_id( 'mc_interest_' . $ig['id'] . '_' . $interest_id . '_' );
297 + $html .= '
298 + <input type="radio" name="' . esc_attr( $set_name ) . '" id="' . esc_attr( $unique_id ) . '" class="mc_interest" value="' . esc_attr( $interest_id ) . '"/>
299 + <label for="' . esc_attr( $unique_id ) . '" class="mc_interest_label">' . esc_html( $interest_name ) . '</label>
289 300 <br/>';
290 301 }
291 302 break;
292 - case 'select':
293 303 case 'dropdown':
294 304 $html .= '
295 - <select name="'.esc_attr($set_name).'">
305 + <select name="' . esc_attr( $set_name ) . '">
296 306 <option value=""></option>';
297 - foreach($ig['groups'] as $interest){
298 - $interest = $interest['name'];
299 - $html .= '
300 - <option value="'.esc_attr($interest).'">'.esc_html($interest).'</option>';
301 - }
307 + foreach ( $ig['groups'] as $interest ) {
308 + $interest_name = $interest['name'];
309 + $interest_id = $interest['id'];
310 + $html .= '
311 + <option value="' . esc_attr( $interest_id ) . '">' . esc_html( $interest_name ) . '</option>';
312 + }
302 313 $html .= '
303 314 </select>';
304 315 break;
305 - case 'hidden':
316 + case 'hidden':
306 317 $i = 1;
307 - foreach($ig['groups'] as $interest) {
308 - $interest = $interest['name'];
309 - $html .= '
310 - <input type="checkbox" name="'.esc_attr($set_name.'['.$i.']').'" id="'.esc_attr('mc_interest_'.$ig['id'].'_'.$interest).'" class="mc_interest" value="'.esc_attr($interest).'" />
311 - <label for="'. esc_attr('mc_interest_'.$ig['id'].'_'.$interest).'" class="mc_interest_label">'.esc_html($interest).'</label>';
312 - $i++;
318 + foreach ( $ig['groups'] as $interest ) {
319 + $interest_name = $interest['name'];
320 + $interest_id = $interest['id'];
321 + $unique_id = wp_unique_id( 'mc_interest_' . $ig['id'] . '_' . $interest_id . '_' );
322 + $html .= '
323 + <input type="checkbox" name="' . esc_attr( $set_name . '[' . $i . ']' ) . '" id="' . esc_attr( $unique_id ) . '" class="mc_interest" value="' . esc_attr( $interest_name ) . '" />
324 + <label for="' . esc_attr( $unique_id ) . '" class="mc_interest_label">' . esc_html( $interest_name ) . '</label>';
325 + ++$i;
313 326 }
314 327 break;
315 328 }
316 - echo $html;
329 + echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Ignoring because html is previously escaped
317 330 }
318 331
319 332 /**
320 333 * Generate and display markup for form fields
321 - * @param array $var Array containing informaoin about the field
322 - * @param int $num_fields The number of fields total we'll be generating markup for. Used in calculating required text logic
323 - * @return void
334 + *
335 + * @param array $data Array containing informaoin about the field.
336 + * @param int $num_fields The number of fields total we'll be generating markup for. Used in calculating required text logic.
337 + * @param bool $should_display Whether or not the field should be displayed.
338 + * @param string $label The label for the field.
339 + * @return string
324 340 */
325 -function mailchimp_form_field($var, $num_fields) {
326 - $opt = 'mc_mv_'.$var['tag'];
327 - $html = '';
341 +function mailchimp_form_field( $data, $num_fields, $should_display = null, $label = '' ) {
342 + $html = '';
343 + $opt = 'mc_mv_' . $data['tag'];
344 + $opt_id = wp_unique_id( $opt . '_' );
345 + if ( is_null( $should_display ) ) {
346 + $should_display = 'on' === get_option( $opt );
347 + }
348 +
349 + $label = ( ! empty( $label ) ) ? $label : $data['name'];
350 +
328 351 // See if that var is set as required, or turned on (for display)
329 - if ($var['req'] || get_option($opt) == 'on') {
330 - $label = '<label for="'.esc_attr($opt).'" class="mc_var_label mc_header mc_header_'.esc_attr($var['field_type']).'">'.esc_html($var['name']);
331 - if ($var['req'] && $num_fields > 1) {
352 + if ( $data['required'] || $should_display ) {
353 + $label = '<label for="' . esc_attr( $opt_id ) . '" class="mc_var_label mc_header mc_header_' . esc_attr( $data['type'] ) . '">' . wp_kses_post( $label );
354 + if ( $data['required'] && $num_fields > 1 ) {
332 355 $label .= '<span class="mc_required">*</span>';
333 356 }
334 357 $label .= '</label>';
335 -
358 +
336 359 $html .= '
337 360 <div class="mc_merge_var">
338 - '.$label;
339 - switch ($var['field_type']) {
340 - case 'date':
361 + ' . $label;
362 + switch ( $data['type'] ) {
363 + case 'date':
341 364 $html .= '
342 - <input type="text" size="18" placeholder="'.esc_attr($var['default']).'" data-format="'.esc_attr($var['dateformat']).'" name="'.esc_attr($opt).'" id="'.esc_attr($opt).'" class="date-pick mc_input"/>';
365 + <input type="text" size="18" placeholder="' . esc_attr( $data['default_value'] ) . '" data-format="' . esc_attr( $data['options']['date_format'] ) . '" name="' . esc_attr( $opt ) . '" id="' . esc_attr( $opt_id ) . '" class="date-pick mc_input"/>';
343 366 break;
344 367 case 'radio':
345 - if (is_array($var['choices'])) {
368 + if ( is_array( $data['options']['choices'] ) ) {
346 369 $html .= '
347 370 <ul class="mc_list">';
348 - foreach ($var['choices'] as $key => $value) {
371 + foreach ( $data['options']['choices'] as $key => $value ) {
349 372 $html .= '
350 373 <li>
351 - <input type="radio" id="'.esc_attr($opt.'_'.$key).'" name="'.esc_attr($opt).'" class="mc_radio" value="'.$value.'"'.checked($var['default'], $value, false).' />
352 - <label for="'.esc_attr($opt.'_'.$key).'" class="mc_radio_label">'.esc_html($value).'</label>
374 + <input type="radio" id="' . esc_attr( $opt_id . '_' . $key ) . '" name="' . esc_attr( $opt ) . '" class="mc_radio" value="' . $value . '"' . checked( $data['default_value'], $value, false ) . ' />
375 + <label for="' . esc_attr( $opt_id . '_' . $key ) . '" class="mc_radio_label">' . esc_html( $value ) . '</label>
353 376 </li>';
354 377 }
355 378 $html .= '
356 379 </ul>';
@@ -356,14 +379,14 @@
356 379 </ul>';
357 380 }
358 381 break;
359 382 case 'dropdown':
360 - if (is_array($var['choices'])) {
383 + if ( is_array( $data['options']['choices'] ) ) {
361 384 $html .= '
362 - <select id="'.esc_attr($opt).'" name="'.esc_attr($opt).'" class="mc_select">';
363 - foreach ($var['choices'] as $value) {
385 + <select id="' . esc_attr( $opt_id ) . '" name="' . esc_attr( $opt ) . '" class="mc_select">';
386 + foreach ( $data['options']['choices'] as $value ) {
364 387 $html .= '
365 - <option value="'.esc_attr($value).'"'.selected($value, $var['default'], false).'>'.esc_html($value).'</option>';
388 + <option value="' . esc_attr( $value ) . '"' . selected( $value, $data['default_value'], false ) . '>' . esc_html( $value ) . '</option>';
366 389 }
367 390 $html .= '
368 391 </select>';
369 392 }
@@ -369,72 +392,76 @@
369 392 }
370 393 break;
371 394 case 'birthday':
372 395 $html .= '
373 - <input type="text" size="18" placeholder="'.esc_attr($var['default']).'" data-format="'.esc_attr($var['dateformat']).'" name="'.esc_attr($opt).'" id="'.esc_attr($opt).'" class="birthdate-pick mc_input"/>';
396 + <input type="text" size="18" placeholder="' . esc_attr( $data['default_value'] ) . '" data-format="' . esc_attr( $data['options']['date_format'] ) . '" name="' . esc_attr( $opt ) . '" id="' . esc_attr( $opt_id ) . '" class="birthdate-pick mc_input"/>';
374 397 break;
375 398 case 'birthday-old':
376 - $days = range(1, 31);
377 - $months = array(__('January', 'mailchimp_i18n'), __('February', 'mailchimp_i18n'), __('March', 'mailchimp_i18n'), __('April', 'mailchimp_i18n'), __('May', 'mailchimp_i18n'), __('June', 'mailchimp_i18n'), __('July', 'mailchimp_i18n'), __('August', 'mailchimp_i18n'), __('September', 'mailchimp_i18n'), __('October', 'mailchimp_i18n'), __('November', 'mailchimp_i18n'), __('December', 'mailchimp_i18n'), );
378 -
399 + $days = range( 1, 31 );
400 + $months = array(
401 + esc_html__( 'January', 'mailchimp' ),
402 + esc_html__( 'February', 'mailchimp' ),
403 + esc_html__( 'March', 'mailchimp' ),
404 + esc_html__( 'April', 'mailchimp' ),
405 + esc_html__( 'May', 'mailchimp' ),
406 + esc_html__( 'June', 'mailchimp' ),
407 + esc_html__( 'July', 'mailchimp' ),
408 + esc_html__( 'August', 'mailchimp' ),
409 + esc_html__( 'September', 'mailchimp' ),
410 + esc_html__( 'October', 'mailchimp' ),
411 + esc_html__( 'November', 'mailchimp' ),
412 + esc_html__( 'December', 'mailchimp' ),
413 + );
414 +
379 415 $html .= '
380 - <br /><select id="'.esc_attr($opt).'" name="'.esc_attr($opt.'[month]').'" class="mc_select">';
381 - foreach ($months as $month_key => $month) {
416 + <br /><select id="' . esc_attr( $opt_id ) . '" name="' . esc_attr( $opt . '[month]' ) . '" class="mc_select">';
417 + foreach ( $months as $month_key => $month ) {
382 418 $html .= '
383 - <option value="'.$month_key.'">'.$month.'</option>';
419 + <option value="' . $month_key . '">' . $month . '</option>';
384 420 }
385 421 $html .= '
386 422 </select>';
387 -
423 +
388 424 $html .= '
389 - <select id="'.esc_attr($opt).'" name="'.esc_attr($opt.'[day]').'" class="mc_select">';
390 - foreach ($days as $day) {
391 - $html .= '
392 - <option value="'.$day.'">'.$day.'</option>';
393 - }
425 + <select id="' . esc_attr( $opt_id ) . '" name="' . esc_attr( $opt . '[day]' ) . '" class="mc_select">';
426 + foreach ( $days as $day ) {
427 + $html .= '
428 + <option value="' . $day . '">' . $day . '</option>';
429 + }
394 430 $html .= '
395 431 </select>';
396 432 break;
397 433 case 'address':
398 - $countries = mailchimp_country_list();
399 - $html .= '
434 + $countries = mailchimp_country_list();
435 + $html .= '
400 436
401 - <label for="'.esc_attr($opt.'-addr1').'" class="mc_address_label">'.__('Street Address', 'mailchimp_i18n').'</label>
402 - <input type="text" size="18" value="" name="'.esc_attr($opt.'[addr1]').'" id="'.esc_attr($opt.'-addr1').'" class="mc_input" />
403 - <label for="'.esc_attr($opt.'-addr2').'" class="mc_address_label">'.__('Address Line 2', 'mailchimp_i18n').'</label>
404 - <input type="text" size="18" value="" name="'.esc_attr($opt.'[addr2]').'" id="'.esc_attr($opt.'-addr2').'" class="mc_input" />
405 - <label for="'.esc_attr($opt.'-city').'" class="mc_address_label">'.__('City', 'mailchimp_i18n').'</label>
406 - <input type="text" size="18" value="" name="'.esc_attr($opt.'[city]').'" id="'.esc_attr($opt.'-city').'" class="mc_input" />
407 - <label for="'.esc_attr($opt.'-state').'" class="mc_address_label">'.__('State', 'mailchimp_i18n').'</label>
408 - <input type="text" size="18" value="" name="'.esc_attr($opt.'[state]').'" id="'.esc_attr($opt.'-state').'" class="mc_input" />
409 - <label for="'.esc_attr($opt.'-zip').'" class="mc_address_label">'.__('Zip / Postal', 'mailchimp_i18n').'</label>
410 - <input type="text" size="18" value="" maxlength="5" name="'.esc_attr($opt.'[zip]').'" id="'.esc_attr($opt.'-zip').'" class="mc_input" />
411 - <label for="'.esc_attr($opt.'-country').'" class="mc_address_label">'.__('Country', 'mailchimp_i18n').'</label>
412 - <select name="'.esc_attr($opt.'[country]').'" id="'.esc_attr($opt.'-country').'">';
413 - foreach ($countries as $country_code => $country_name) {
437 + <label for="' . esc_attr( $opt_id . '-addr1' ) . '" class="mc_address_label">' . esc_html__( 'Street Address', 'mailchimp' ) . '</label>
438 + <input type="text" size="18" value="" name="' . esc_attr( $opt . '[addr1]' ) . '" id="' . esc_attr( $opt_id . '-addr1' ) . '" class="mc_input" />
439 + <label for="' . esc_attr( $opt_id . '-addr2' ) . '" class="mc_address_label">' . esc_html__( 'Address Line 2', 'mailchimp' ) . '</label>
440 + <input type="text" size="18" value="" name="' . esc_attr( $opt . '[addr2]' ) . '" id="' . esc_attr( $opt_id . '-addr2' ) . '" class="mc_input" />
441 + <label for="' . esc_attr( $opt_id . '-city' ) . '" class="mc_address_label">' . esc_html__( 'City', 'mailchimp' ) . '</label>
442 + <input type="text" size="18" value="" name="' . esc_attr( $opt . '[city]' ) . '" id="' . esc_attr( $opt_id . '-city' ) . '" class="mc_input" />
443 + <label for="' . esc_attr( $opt_id . '-state' ) . '" class="mc_address_label">' . esc_html__( 'State', 'mailchimp' ) . '</label>
444 + <input type="text" size="18" value="" name="' . esc_attr( $opt . '[state]' ) . '" id="' . esc_attr( $opt_id . '-state' ) . '" class="mc_input" />
445 + <label for="' . esc_attr( $opt_id . '-zip' ) . '" class="mc_address_label">' . esc_html__( 'Zip / Postal', 'mailchimp' ) . '</label>
446 + <input type="text" size="18" value="" maxlength="5" name="' . esc_attr( $opt . '[zip]' ) . '" id="' . esc_attr( $opt_id . '-zip' ) . '" class="mc_input" />
447 + <label for="' . esc_attr( $opt_id . '-country' ) . '" class="mc_address_label">' . esc_html__( 'Country', 'mailchimp' ) . '</label>
448 + <select name="' . esc_attr( $opt . '[country]' ) . '" id="' . esc_attr( $opt_id . '-country' ) . '">';
449 + foreach ( $countries as $country_code => $country_name ) {
450 + $html .= '
451 + <option value="' . esc_attr( $country_code ) . '"' . selected( $country_code, $data['options']['default_country'], false ) . '>' . esc_html( $country_name ) . '</option>';
452 + }
414 453 $html .= '
415 - <option value="'.esc_attr($country_code).'"'.selected($country_code, $var['defaultcountry'], false).'>'.esc_html($country_name).'</option>';
416 - }
417 - $html .= '
418 454 </select>';
419 455 break;
420 456 case 'zip':
421 457 $html .= '
422 - <input type="text" size="18" maxlength="5" value="" name="'.esc_attr($opt).'" id="'.esc_attr($opt).'" class="mc_input" />';
458 + <input type="text" size="18" maxlength="5" value="" name="' . esc_attr( $opt ) . '" id="' . esc_attr( $opt_id ) . '" class="mc_input" />';
423 459 break;
424 460 case 'phone':
425 - if ($var['phoneformat'] == 'US') {
426 - $html .= '
427 - <input type="text" size="2" maxlength="3" value="" name="'.esc_attr($opt.'[area]').'" id="'.esc_attr($opt.'-area').'" class="mc_input mc_phone" />
428 - <input type="text" size="2" maxlength="3" value="" name="'.esc_attr($opt.'[detail1]').'" id="'.esc_attr($opt.'-detail1').'" class="mc_input mc_phone" />
429 - <input type="text" size="5" maxlength="4" value="" name="'.esc_attr($opt.'[detail2]').'" id="'.esc_attr($opt.'-detail2').'" class="mc_input mc_phone" />
430 - ';
431 - }
432 - else {
433 - $html .= '
434 - <input type="text" size="18" value="" name="'.esc_attr($opt).'" id="'.esc_attr($opt).'" class="mc_input" />
435 - ';
436 - }
461 + $is_us_phone = isset( $data['options']['phone_format'] ) && 'US' === $data['options']['phone_format'];
462 + $html .= '
463 + <input type="tel" size="20" minlength="6" maxlength="20" pattern="^\+?[\d\s\-\(\)\.]*$" value="" name="' . esc_attr( $opt ) . '" id="' . esc_attr( $opt_id ) . '" class="mc_input mailchimp-sf-phone" placeholder="' . esc_attr( $is_us_phone ? '(###) ### - ####' : '' ) . '" />';
437 464 break;
438 465 case 'email':
439 466 case 'url':
440 467 case 'imageurl':
@@ -441,238 +468,279 @@
441 468 case 'text':
442 469 case 'number':
443 470 default:
444 471 $html .= '
445 - <input type="text" size="18" placeholder="'.esc_html($var['default']).'" name="'.esc_attr($opt).'" id="'.esc_attr($opt).'" class="mc_input"/>';
472 + <input type="text" size="18" placeholder="' . esc_attr( $data['default_value'] ) . '" name="' . esc_attr( $opt ) . '" id="' . esc_attr( $opt_id ) . '" class="mc_input"/>';
446 473 break;
447 474 }
448 - if (!empty($var['helptext'])) {
449 - $html .= '<span class="mc_help">'.esc_html($var['helptext']).'</span>';
475 + if ( ! empty( $data['help_text'] ) ) {
476 + $html .= '<span class="mc_help">' . esc_html( $data['help_text'] ) . '</span>';
450 477 }
451 478 $html .= '
452 479 </div><!-- /mc_merge_var -->';
453 480 }
454 -
481 +
455 482 return $html;
456 483 }
457 484
458 485 /**
459 - * MailChimp Subscribe Box widget class
486 + * Mailchimp Subscribe Box widget class
460 487 */
488 +class Mailchimp_SF_Widget extends WP_Widget /* phpcs:ignore Universal.Files.SeparateFunctionsFromOO.Mixed */ {
461 489
462 -class mailchimpSF_Widget extends WP_Widget {
463 -
464 - function mailchimpSF_Widget() {
465 - $widget_ops = array(
466 - 'description' => __('Displays a MailChimp Subscribe box', 'mailchimp_i18n')
490 + /**
491 + * Initialize class
492 + */
493 + public function __construct() {
494 + $widget_ops = array(
495 + 'description' => __( 'Displays a Mailchimp Subscribe box', 'mailchimp' ),
467 496 );
468 - $this->WP_Widget('mailchimpSF_widget', __('MailChimp Widget', 'mailchimp_i18n'), $widget_ops);
497 + parent::__construct( 'Mailchimp_SF_Widget', __( 'Mailchimp Widget', 'mailchimp' ), $widget_ops );
469 498 }
470 - function widget( $args, $instance ) {
471 - if (!is_array($instance)) {
499 +
500 + /**
501 + * Echoes the widget content.
502 + *
503 + * @param array $args Display arguments including 'before_title', 'after_title',
504 + * 'before_widget', and 'after_widget'.
505 + * @param array $instance The settings for the particular instance of the widget.
506 + * @return void
507 + */
508 + public function widget( $args, $instance ) {
509 + if ( ! is_array( $instance ) ) {
472 510 $instance = array();
473 511 }
474 - mailchimpSF_signup_form(array_merge($args, $instance));
512 + mailchimp_sf_signup_form( array_merge( $args, $instance ) );
475 513 }
476 - function form( $instance ) { ?>
477 -<p>Great work! Your widget is ready to go — just head <a href="<?php echo admin_url('options-general.php?page=mailchimpSF_options') ?>">over here</a> if you’d like to adjust your settings.</p>
478 -<?php }
514 +
515 + /**
516 + * Outputs the settings update form.
517 + *
518 + * @param array $instance Current settings.
519 + */
520 + public function form( $instance ) {
521 + ?>
522 +<p>
523 + <?php
524 + echo wp_kses(
525 + sprintf(
526 + /* translators: 1: admin url */
527 + __(
528 + 'Great work! Your widget is ready to go — just head <a href="%1$s">over here</a> if you\'d like to adjust your settings.',
529 + 'mailchimp'
530 + ),
531 + esc_url( admin_url( 'admin.php?page=mailchimp_sf_options' ) )
532 + ),
533 + [
534 + 'a' => [
535 + 'href' => [],
536 + ],
537 + ]
538 + );
539 + ?>
540 +</p>
541 + <?php
542 + }
479 543 }
480 544
545 +/**
546 + * Return country list
547 + *
548 + * @return array
549 + */
481 550 function mailchimp_country_list() {
482 551 return array(
483 - '164' => __('USA', 'mailchimp_i18n'),
484 - '286' => __('Aaland Islands', 'mailchimp_i18n'),
485 - '274' => __('Afghanistan', 'mailchimp_i18n'),
486 - '2' => __('Albania', 'mailchimp_i18n'),
487 - '3' => __('Algeria', 'mailchimp_i18n'),
488 - '178' => __('American Samoa', 'mailchimp_i18n'),
489 - '4' => __('Andorra', 'mailchimp_i18n'),
490 - '5' => __('Angola', 'mailchimp_i18n'),
491 - '176' => __('Anguilla', 'mailchimp_i18n'),
492 - '175' => __('Antigua And Barbuda', 'mailchimp_i18n'),
493 - '6' => __('Argentina', 'mailchimp_i18n'),
494 - '7' => __('Armenia', 'mailchimp_i18n'),
495 - '179' => __('Aruba', 'mailchimp_i18n'),
496 - '8' => __('Australia', 'mailchimp_i18n'),
497 - '9' => __('Austria', 'mailchimp_i18n'),
498 - '10' => __('Azerbaijan', 'mailchimp_i18n'),
499 - '11' => __('Bahamas', 'mailchimp_i18n'),
500 - '12' => __('Bahrain', 'mailchimp_i18n'),
501 - '13' => __('Bangladesh', 'mailchimp_i18n'),
502 - '14' => __('Barbados', 'mailchimp_i18n'),
503 - '15' => __('Belarus', 'mailchimp_i18n'),
504 - '16' => __('Belgium', 'mailchimp_i18n'),
505 - '17' => __('Belize', 'mailchimp_i18n'),
506 - '18' => __('Benin', 'mailchimp_i18n'),
507 - '19' => __('Bermuda', 'mailchimp_i18n'),
508 - '20' => __('Bhutan', 'mailchimp_i18n'),
509 - '21' => __('Bolivia', 'mailchimp_i18n'),
510 - '22' => __('Bosnia and Herzegovina', 'mailchimp_i18n'),
511 - '23' => __('Botswana', 'mailchimp_i18n'),
512 - '24' => __('Brazil', 'mailchimp_i18n'),
513 - '180' => __('Brunei Darussalam', 'mailchimp_i18n'),
514 - '25' => __('Bulgaria', 'mailchimp_i18n'),
515 - '26' => __('Burkina Faso', 'mailchimp_i18n'),
516 - '27' => __('Burundi', 'mailchimp_i18n'),
517 - '28' => __('Cambodia', 'mailchimp_i18n'),
518 - '29' => __('Cameroon', 'mailchimp_i18n'),
519 - '30' => __('Canada', 'mailchimp_i18n'),
520 - '31' => __('Cape Verde', 'mailchimp_i18n'),
521 - '32' => __('Cayman Islands', 'mailchimp_i18n'),
522 - '33' => __('Central African Republic', 'mailchimp_i18n'),
523 - '34' => __('Chad', 'mailchimp_i18n'),
524 - '35' => __('Chile', 'mailchimp_i18n'),
525 - '36' => __('China', 'mailchimp_i18n'),
526 - '37' => __('Colombia', 'mailchimp_i18n'),
527 - '38' => __('Congo', 'mailchimp_i18n'),
528 - '183' => __('Cook Islands', 'mailchimp_i18n'),
529 - '268' => __('Costa Rica', 'mailchimp_i18n'),
530 - '275' => __('Cote D\'Ivoire', 'mailchimp_i18n'),
531 - '40' => __('Croatia', 'mailchimp_i18n'),
532 - '276' => __('Cuba', 'mailchimp_i18n'),
533 - '41' => __('Cyprus', 'mailchimp_i18n'),
534 - '42' => __('Czech Republic', 'mailchimp_i18n'),
535 - '43' => __('Denmark', 'mailchimp_i18n'),
536 - '44' => __('Djibouti', 'mailchimp_i18n'),
537 - '289' => __('Dominica', 'mailchimp_i18n'),
538 - '187' => __('Dominican Republic', 'mailchimp_i18n'),
539 - '233' => __('East Timor', 'mailchimp_i18n'),
540 - '45' => __('Ecuador', 'mailchimp_i18n'),
541 - '46' => __('Egypt', 'mailchimp_i18n'),
542 - '47' => __('El Salvador', 'mailchimp_i18n'),
543 - '48' => __('Equatorial Guinea', 'mailchimp_i18n'),
544 - '49' => __('Eritrea', 'mailchimp_i18n'),
545 - '50' => __('Estonia', 'mailchimp_i18n'),
546 - '51' => __('Ethiopia', 'mailchimp_i18n'),
547 - '191' => __('Faroe Islands', 'mailchimp_i18n'),
548 - '52' => __('Fiji', 'mailchimp_i18n'),
549 - '53' => __('Finland', 'mailchimp_i18n'),
550 - '54' => __('France', 'mailchimp_i18n'),
551 - '277' => __('French Polynesia', 'mailchimp_i18n'),
552 - '59' => __('Germany', 'mailchimp_i18n'),
553 - '60' => __('Ghana', 'mailchimp_i18n'),
554 - '194' => __('Gibraltar', 'mailchimp_i18n'),
555 - '61' => __('Greece', 'mailchimp_i18n'),
556 - '195' => __('Greenland', 'mailchimp_i18n'),
557 - '192' => __('Grenada', 'mailchimp_i18n'),
558 - '62' => __('Guam', 'mailchimp_i18n'),
559 - '198' => __('Guatemala', 'mailchimp_i18n'),
560 - '270' => __('Guernsey', 'mailchimp_i18n'),
561 - '65' => __('Guyana', 'mailchimp_i18n'),
562 - '200' => __('Haiti', 'mailchimp_i18n'),
563 - '66' => __('Honduras', 'mailchimp_i18n'),
564 - '67' => __('Hong Kong', 'mailchimp_i18n'),
565 - '68' => __('Hungary', 'mailchimp_i18n'),
566 - '69' => __('Iceland', 'mailchimp_i18n'),
567 - '70' => __('India', 'mailchimp_i18n'),
568 - '71' => __('Indonesia', 'mailchimp_i18n'),
569 - '278' => __('Iran', 'mailchimp_i18n'),
570 - '279' => __('Iraq', 'mailchimp_i18n'),
571 - '74' => __('Ireland', 'mailchimp_i18n'),
572 - '75' => __('Israel', 'mailchimp_i18n'),
573 - '76' => __('Italy', 'mailchimp_i18n'),
574 - '202' => __('Jamaica', 'mailchimp_i18n'),
575 - '78' => __('Japan', 'mailchimp_i18n'),
576 - '288' => __('Jersey (Channel Islands)', 'mailchimp_i18n'),
577 - '79' => __('Jordan', 'mailchimp_i18n'),
578 - '80' => __('Kazakhstan', 'mailchimp_i18n'),
579 - '81' => __('Kenya', 'mailchimp_i18n'),
580 - '82' => __('Kuwait', 'mailchimp_i18n'),
581 - '83' => __('Kyrgyzstan', 'mailchimp_i18n'),
582 - '84' => __('Lao People\'s Democratic Republic', 'mailchimp_i18n'),
583 - '85' => __('Latvia', 'mailchimp_i18n'),
584 - '86' => __('Lebanon', 'mailchimp_i18n'),
585 - '281' => __('Libya', 'mailchimp_i18n'),
586 - '90' => __('Liechtenstein', 'mailchimp_i18n'),
587 - '91' => __('Lithuania', 'mailchimp_i18n'),
588 - '92' => __('Luxembourg', 'mailchimp_i18n'),
589 - '208' => __('Macau', 'mailchimp_i18n'),
590 - '93' => __('Macedonia', 'mailchimp_i18n'),
591 - '94' => __('Madagascar', 'mailchimp_i18n'),
592 - '95' => __('Malawi', 'mailchimp_i18n'),
593 - '96' => __('Malaysia', 'mailchimp_i18n'),
594 - '97' => __('Maldives', 'mailchimp_i18n'),
595 - '98' => __('Mali', 'mailchimp_i18n'),
596 - '99' => __('Malta', 'mailchimp_i18n'),
597 - '212' => __('Mauritius', 'mailchimp_i18n'),
598 - '101' => __('Mexico', 'mailchimp_i18n'),
599 - '102' => __('Moldova, Republic of', 'mailchimp_i18n'),
600 - '103' => __('Monaco', 'mailchimp_i18n'),
601 - '104' => __('Mongolia', 'mailchimp_i18n'),
602 - '290' => __('Montenegro', 'mailchimp_i18n'),
603 - '105' => __('Morocco', 'mailchimp_i18n'),
604 - '106' => __('Mozambique', 'mailchimp_i18n'),
605 - '242' => __('Myanmar', 'mailchimp_i18n'),
606 - '107' => __('Namibia', 'mailchimp_i18n'),
607 - '108' => __('Nepal', 'mailchimp_i18n'),
608 - '109' => __('Netherlands', 'mailchimp_i18n'),
609 - '110' => __('Netherlands Antilles', 'mailchimp_i18n'),
610 - '213' => __('New Caledonia', 'mailchimp_i18n'),
611 - '111' => __('New Zealand', 'mailchimp_i18n'),
612 - '112' => __('Nicaragua', 'mailchimp_i18n'),
613 - '113' => __('Niger', 'mailchimp_i18n'),
614 - '114' => __('Nigeria', 'mailchimp_i18n'),
615 - '272' => __('North Korea', 'mailchimp_i18n'),
616 - '116' => __('Norway', 'mailchimp_i18n'),
617 - '117' => __('Oman', 'mailchimp_i18n'),
618 - '118' => __('Pakistan', 'mailchimp_i18n'),
619 - '222' => __('Palau', 'mailchimp_i18n'),
620 - '282' => __('Palestine', 'mailchimp_i18n'),
621 - '119' => __('Panama', 'mailchimp_i18n'),
622 - '219' => __('Papua New Guinea', 'mailchimp_i18n'),
623 - '120' => __('Paraguay', 'mailchimp_i18n'),
624 - '121' => __('Peru', 'mailchimp_i18n'),
625 - '122' => __('Philippines', 'mailchimp_i18n'),
626 - '123' => __('Poland', 'mailchimp_i18n'),
627 - '124' => __('Portugal', 'mailchimp_i18n'),
628 - '126' => __('Qatar', 'mailchimp_i18n'),
629 - '58' => __('Republic of Georgia', 'mailchimp_i18n'),
630 - '128' => __('Romania', 'mailchimp_i18n'),
631 - '129' => __('Russia', 'mailchimp_i18n'),
632 - '130' => __('Rwanda', 'mailchimp_i18n'),
633 - '205' => __('Saint Kitts and Nevis', 'mailchimp_i18n'),
634 - '206' => __('Saint Lucia', 'mailchimp_i18n'),
635 - '132' => __('Samoa (Independent)', 'mailchimp_i18n'),
636 - '227' => __('San Marino', 'mailchimp_i18n'),
637 - '133' => __('Saudi Arabia', 'mailchimp_i18n'),
638 - '134' => __('Senegal', 'mailchimp_i18n'),
639 - '266' => __('Serbia', 'mailchimp_i18n'),
640 - '135' => __('Seychelles', 'mailchimp_i18n'),
641 - '137' => __('Singapore', 'mailchimp_i18n'),
642 - '138' => __('Slovakia', 'mailchimp_i18n'),
643 - '139' => __('Slovenia', 'mailchimp_i18n'),
644 - '223' => __('Solomon Islands', 'mailchimp_i18n'),
645 - '141' => __('South Africa', 'mailchimp_i18n'),
646 - '142' => __('South Korea', 'mailchimp_i18n'),
647 - '143' => __('Spain', 'mailchimp_i18n'),
648 - '144' => __('Sri Lanka', 'mailchimp_i18n'),
649 - '293' => __('Sudan', 'mailchimp_i18n'),
650 - '146' => __('Suriname', 'mailchimp_i18n'),
651 - '147' => __('Swaziland', 'mailchimp_i18n'),
652 - '148' => __('Sweden', 'mailchimp_i18n'),
653 - '149' => __('Switzerland', 'mailchimp_i18n'),
654 - '152' => __('Taiwan', 'mailchimp_i18n'),
655 - '153' => __('Tanzania', 'mailchimp_i18n'),
656 - '154' => __('Thailand', 'mailchimp_i18n'),
657 - '155' => __('Togo', 'mailchimp_i18n'),
658 - '232' => __('Tonga', 'mailchimp_i18n'),
659 - '234' => __('Trinidad and Tobago', 'mailchimp_i18n'),
660 - '156' => __('Tunisia', 'mailchimp_i18n'),
661 - '157' => __('Turkey', 'mailchimp_i18n'),
662 - '287' => __('Turks &amp; Caicos Islands', 'mailchimp_i18n'),
663 - '159' => __('Uganda', 'mailchimp_i18n'),
664 - '161' => __('Ukraine', 'mailchimp_i18n'),
665 - '162' => __('United Arab Emirates', 'mailchimp_i18n'),
666 - '262' => __('United Kingdom', 'mailchimp_i18n'),
667 - '163' => __('Uruguay', 'mailchimp_i18n'),
668 - '239' => __('Vanuatu', 'mailchimp_i18n'),
669 - '166' => __('Vatican City State (Holy See)', 'mailchimp_i18n'),
670 - '167' => __('Venezuela', 'mailchimp_i18n'),
671 - '168' => __('Vietnam', 'mailchimp_i18n'),
672 - '169' => __('Virgin Islands (British)', 'mailchimp_i18n'),
673 - '238' => __('Virgin Islands (U.S.)', 'mailchimp_i18n'),
674 - '173' => __('Zambia', 'mailchimp_i18n'),
675 - '174' => __('Zimbabwe', 'mailchimp_i18n'),
552 + '164' => __( 'USA', 'mailchimp' ),
553 + '286' => __( 'Aaland Islands', 'mailchimp' ),
554 + '274' => __( 'Afghanistan', 'mailchimp' ),
555 + '2' => __( 'Albania', 'mailchimp' ),
556 + '3' => __( 'Algeria', 'mailchimp' ),
557 + '178' => __( 'American Samoa', 'mailchimp' ),
558 + '4' => __( 'Andorra', 'mailchimp' ),
559 + '5' => __( 'Angola', 'mailchimp' ),
560 + '176' => __( 'Anguilla', 'mailchimp' ),
561 + '175' => __( 'Antigua And Barbuda', 'mailchimp' ),
562 + '6' => __( 'Argentina', 'mailchimp' ),
563 + '7' => __( 'Armenia', 'mailchimp' ),
564 + '179' => __( 'Aruba', 'mailchimp' ),
565 + '8' => __( 'Australia', 'mailchimp' ),
566 + '9' => __( 'Austria', 'mailchimp' ),
567 + '10' => __( 'Azerbaijan', 'mailchimp' ),
568 + '11' => __( 'Bahamas', 'mailchimp' ),
569 + '12' => __( 'Bahrain', 'mailchimp' ),
570 + '13' => __( 'Bangladesh', 'mailchimp' ),
571 + '14' => __( 'Barbados', 'mailchimp' ),
572 + '15' => __( 'Belarus', 'mailchimp' ),
573 + '16' => __( 'Belgium', 'mailchimp' ),
574 + '17' => __( 'Belize', 'mailchimp' ),
575 + '18' => __( 'Benin', 'mailchimp' ),
576 + '19' => __( 'Bermuda', 'mailchimp' ),
577 + '20' => __( 'Bhutan', 'mailchimp' ),
578 + '21' => __( 'Bolivia', 'mailchimp' ),
579 + '22' => __( 'Bosnia and Herzegovina', 'mailchimp' ),
580 + '23' => __( 'Botswana', 'mailchimp' ),
581 + '24' => __( 'Brazil', 'mailchimp' ),
582 + '180' => __( 'Brunei Darussalam', 'mailchimp' ),
583 + '25' => __( 'Bulgaria', 'mailchimp' ),
584 + '26' => __( 'Burkina Faso', 'mailchimp' ),
585 + '27' => __( 'Burundi', 'mailchimp' ),
586 + '28' => __( 'Cambodia', 'mailchimp' ),
587 + '29' => __( 'Cameroon', 'mailchimp' ),
588 + '30' => __( 'Canada', 'mailchimp' ),
589 + '31' => __( 'Cape Verde', 'mailchimp' ),
590 + '32' => __( 'Cayman Islands', 'mailchimp' ),
591 + '33' => __( 'Central African Republic', 'mailchimp' ),
592 + '34' => __( 'Chad', 'mailchimp' ),
593 + '35' => __( 'Chile', 'mailchimp' ),
594 + '36' => __( 'China', 'mailchimp' ),
595 + '37' => __( 'Colombia', 'mailchimp' ),
596 + '38' => __( 'Congo', 'mailchimp' ),
597 + '183' => __( 'Cook Islands', 'mailchimp' ),
598 + '268' => __( 'Costa Rica', 'mailchimp' ),
599 + '275' => __( 'Cote D\'Ivoire', 'mailchimp' ),
600 + '40' => __( 'Croatia', 'mailchimp' ),
601 + '276' => __( 'Cuba', 'mailchimp' ),
602 + '41' => __( 'Cyprus', 'mailchimp' ),
603 + '42' => __( 'Czech Republic', 'mailchimp' ),
604 + '43' => __( 'Denmark', 'mailchimp' ),
605 + '44' => __( 'Djibouti', 'mailchimp' ),
606 + '289' => __( 'Dominica', 'mailchimp' ),
607 + '187' => __( 'Dominican Republic', 'mailchimp' ),
608 + '233' => __( 'East Timor', 'mailchimp' ),
609 + '45' => __( 'Ecuador', 'mailchimp' ),
610 + '46' => __( 'Egypt', 'mailchimp' ),
611 + '47' => __( 'El Salvador', 'mailchimp' ),
612 + '48' => __( 'Equatorial Guinea', 'mailchimp' ),
613 + '49' => __( 'Eritrea', 'mailchimp' ),
614 + '50' => __( 'Estonia', 'mailchimp' ),
615 + '51' => __( 'Ethiopia', 'mailchimp' ),
616 + '191' => __( 'Faroe Islands', 'mailchimp' ),
617 + '52' => __( 'Fiji', 'mailchimp' ),
618 + '53' => __( 'Finland', 'mailchimp' ),
619 + '54' => __( 'France', 'mailchimp' ),
620 + '277' => __( 'French Polynesia', 'mailchimp' ),
621 + '59' => __( 'Germany', 'mailchimp' ),
622 + '60' => __( 'Ghana', 'mailchimp' ),
623 + '194' => __( 'Gibraltar', 'mailchimp' ),
624 + '61' => __( 'Greece', 'mailchimp' ),
625 + '195' => __( 'Greenland', 'mailchimp' ),
626 + '192' => __( 'Grenada', 'mailchimp' ),
627 + '62' => __( 'Guam', 'mailchimp' ),
628 + '198' => __( 'Guatemala', 'mailchimp' ),
629 + '270' => __( 'Guernsey', 'mailchimp' ),
630 + '65' => __( 'Guyana', 'mailchimp' ),
631 + '200' => __( 'Haiti', 'mailchimp' ),
632 + '66' => __( 'Honduras', 'mailchimp' ),
633 + '67' => __( 'Hong Kong', 'mailchimp' ),
634 + '68' => __( 'Hungary', 'mailchimp' ),
635 + '69' => __( 'Iceland', 'mailchimp' ),
636 + '70' => __( 'India', 'mailchimp' ),
637 + '71' => __( 'Indonesia', 'mailchimp' ),
638 + '278' => __( 'Iran', 'mailchimp' ),
639 + '279' => __( 'Iraq', 'mailchimp' ),
640 + '74' => __( 'Ireland', 'mailchimp' ),
641 + '75' => __( 'Israel', 'mailchimp' ),
642 + '76' => __( 'Italy', 'mailchimp' ),
643 + '202' => __( 'Jamaica', 'mailchimp' ),
644 + '78' => __( 'Japan', 'mailchimp' ),
645 + '288' => __( 'Jersey (Channel Islands)', 'mailchimp' ),
646 + '79' => __( 'Jordan', 'mailchimp' ),
647 + '80' => __( 'Kazakhstan', 'mailchimp' ),
648 + '81' => __( 'Kenya', 'mailchimp' ),
649 + '82' => __( 'Kuwait', 'mailchimp' ),
650 + '83' => __( 'Kyrgyzstan', 'mailchimp' ),
651 + '84' => __( 'Lao People\'s Democratic Republic', 'mailchimp' ),
652 + '85' => __( 'Latvia', 'mailchimp' ),
653 + '86' => __( 'Lebanon', 'mailchimp' ),
654 + '281' => __( 'Libya', 'mailchimp' ),
655 + '90' => __( 'Liechtenstein', 'mailchimp' ),
656 + '91' => __( 'Lithuania', 'mailchimp' ),
657 + '92' => __( 'Luxembourg', 'mailchimp' ),
658 + '208' => __( 'Macau', 'mailchimp' ),
659 + '93' => __( 'Macedonia', 'mailchimp' ),
660 + '94' => __( 'Madagascar', 'mailchimp' ),
661 + '95' => __( 'Malawi', 'mailchimp' ),
662 + '96' => __( 'Malaysia', 'mailchimp' ),
663 + '97' => __( 'Maldives', 'mailchimp' ),
664 + '98' => __( 'Mali', 'mailchimp' ),
665 + '99' => __( 'Malta', 'mailchimp' ),
666 + '212' => __( 'Mauritius', 'mailchimp' ),
667 + '101' => __( 'Mexico', 'mailchimp' ),
668 + '102' => __( 'Moldova, Republic of', 'mailchimp' ),
669 + '103' => __( 'Monaco', 'mailchimp' ),
670 + '104' => __( 'Mongolia', 'mailchimp' ),
671 + '290' => __( 'Montenegro', 'mailchimp' ),
672 + '105' => __( 'Morocco', 'mailchimp' ),
673 + '106' => __( 'Mozambique', 'mailchimp' ),
674 + '242' => __( 'Myanmar', 'mailchimp' ),
675 + '107' => __( 'Namibia', 'mailchimp' ),
676 + '108' => __( 'Nepal', 'mailchimp' ),
677 + '109' => __( 'Netherlands', 'mailchimp' ),
678 + '110' => __( 'Netherlands Antilles', 'mailchimp' ),
679 + '213' => __( 'New Caledonia', 'mailchimp' ),
680 + '111' => __( 'New Zealand', 'mailchimp' ),
681 + '112' => __( 'Nicaragua', 'mailchimp' ),
682 + '113' => __( 'Niger', 'mailchimp' ),
683 + '114' => __( 'Nigeria', 'mailchimp' ),
684 + '272' => __( 'North Korea', 'mailchimp' ),
685 + '116' => __( 'Norway', 'mailchimp' ),
686 + '117' => __( 'Oman', 'mailchimp' ),
687 + '118' => __( 'Pakistan', 'mailchimp' ),
688 + '222' => __( 'Palau', 'mailchimp' ),
689 + '282' => __( 'Palestine', 'mailchimp' ),
690 + '119' => __( 'Panama', 'mailchimp' ),
691 + '219' => __( 'Papua New Guinea', 'mailchimp' ),
692 + '120' => __( 'Paraguay', 'mailchimp' ),
693 + '121' => __( 'Peru', 'mailchimp' ),
694 + '122' => __( 'Philippines', 'mailchimp' ),
695 + '123' => __( 'Poland', 'mailchimp' ),
696 + '124' => __( 'Portugal', 'mailchimp' ),
697 + '126' => __( 'Qatar', 'mailchimp' ),
698 + '58' => __( 'Republic of Georgia', 'mailchimp' ),
699 + '128' => __( 'Romania', 'mailchimp' ),
700 + '129' => __( 'Russia', 'mailchimp' ),
701 + '130' => __( 'Rwanda', 'mailchimp' ),
702 + '205' => __( 'Saint Kitts and Nevis', 'mailchimp' ),
703 + '206' => __( 'Saint Lucia', 'mailchimp' ),
704 + '132' => __( 'Samoa (Independent)', 'mailchimp' ),
705 + '227' => __( 'San Marino', 'mailchimp' ),
706 + '133' => __( 'Saudi Arabia', 'mailchimp' ),
707 + '134' => __( 'Senegal', 'mailchimp' ),
708 + '266' => __( 'Serbia', 'mailchimp' ),
709 + '135' => __( 'Seychelles', 'mailchimp' ),
710 + '137' => __( 'Singapore', 'mailchimp' ),
711 + '138' => __( 'Slovakia', 'mailchimp' ),
712 + '139' => __( 'Slovenia', 'mailchimp' ),
713 + '223' => __( 'Solomon Islands', 'mailchimp' ),
714 + '141' => __( 'South Africa', 'mailchimp' ),
715 + '142' => __( 'South Korea', 'mailchimp' ),
716 + '143' => __( 'Spain', 'mailchimp' ),
717 + '144' => __( 'Sri Lanka', 'mailchimp' ),
718 + '293' => __( 'Sudan', 'mailchimp' ),
719 + '146' => __( 'Suriname', 'mailchimp' ),
720 + '147' => __( 'Swaziland', 'mailchimp' ),
721 + '148' => __( 'Sweden', 'mailchimp' ),
722 + '149' => __( 'Switzerland', 'mailchimp' ),
723 + '152' => __( 'Taiwan', 'mailchimp' ),
724 + '153' => __( 'Tanzania', 'mailchimp' ),
725 + '154' => __( 'Thailand', 'mailchimp' ),
726 + '155' => __( 'Togo', 'mailchimp' ),
727 + '232' => __( 'Tonga', 'mailchimp' ),
728 + '234' => __( 'Trinidad and Tobago', 'mailchimp' ),
729 + '156' => __( 'Tunisia', 'mailchimp' ),
730 + '157' => __( 'Turkey', 'mailchimp' ),
731 + '287' => __( 'Turks &amp; Caicos Islands', 'mailchimp' ),
732 + '159' => __( 'Uganda', 'mailchimp' ),
733 + '161' => __( 'Ukraine', 'mailchimp' ),
734 + '162' => __( 'United Arab Emirates', 'mailchimp' ),
735 + '262' => __( 'United Kingdom', 'mailchimp' ),
736 + '163' => __( 'Uruguay', 'mailchimp' ),
737 + '239' => __( 'Vanuatu', 'mailchimp' ),
738 + '166' => __( 'Vatican City State (Holy See)', 'mailchimp' ),
739 + '167' => __( 'Venezuela', 'mailchimp' ),
740 + '168' => __( 'Vietnam', 'mailchimp' ),
741 + '169' => __( 'Virgin Islands (British)', 'mailchimp' ),
742 + '238' => __( 'Virgin Islands (U.S.)', 'mailchimp' ),
743 + '173' => __( 'Zambia', 'mailchimp' ),
744 + '174' => __( 'Zimbabwe', 'mailchimp' ),
676 745 );
677 746 }
678 -?>