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
mailchimp / mailchimp_widget.php

mailchimp_widget.php in Mailchimp List Subscribe Form trunk, at mailchimp_widget.php

747 lines 27.5 KB
No matching file
Up and down to move Enter to open Esc to close
Raw Download Zip
1 <?php
2 /**
3 * Mailchimp widget
4 *
5 * @package Mailchimp
6 */
7
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
30 // See if we have valid Merge Vars
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 }
37 ?>
38 <div class="mc_error_msg">
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 ?>
50 </div>
51 <?php
52 if ( ! empty( $after_widget ) ) {
53 echo wp_kses_post( $after_widget );
54 }
55
56 if ( empty( $before_widget ) ) {
57 echo '</div>';
58 }
59
60 return;
61 }
62
63 if ( ! empty( $before_widget ) ) {
64 echo wp_kses_post( $before_widget );
65 } else {
66 echo '<div class="mc_container">';
67 }
68
69 $header = get_option( 'mc_header_content' );
70 if ( $is_preview && ! empty( $preview_data ) ) {
71 $header = $preview_data['header'] ?? $header;
72 }
73
74 // See if we have custom header content
75 if ( ! empty( $header ) ) {
76 // See if we need to wrap the header content in our own div
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 );
83 }
84 }
85
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;
91 }
92 ?>
93
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" />
97 <input type="hidden" name="mcsf_action" value="mc_submit_signup_form" />
98 <?php wp_nonce_field( 'mc_submit_signup_form', '_mc_submit_signup_form_nonce', false ); ?>
99
100 <?php
101 if ( $sub_heading ) {
102 ?>
103 <div class="mc_subheader">
104 <?php echo wp_kses_post( $sub_heading ); ?>
105 </div><!-- /mc_subheader -->
106 <?php
107 }
108 ?>
109
110 <div class="mc_form_inside">
111
112 <div class="mc_message_wrapper">
113 <?php echo wp_kses_post( mailchimp_sf_frontend_msg() ); ?>
114 </div><!-- /mc_message_wrapper -->
115
116 <?php
117 // don't show the "required" stuff if there's only 1 field to display.
118 $num_fields = 0;
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;
127 }
128 }
129
130 if ( is_array( $mv ) ) {
131 // head on back to the beginning of the array
132 reset( $mv );
133 }
134
135 // Loop over our vars, and output the ones that are set to display
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;
141 }
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
144 }
145
146 // Show an explanation of the * if there's more than one field
147 if ( $num_fields > 1 ) {
148 ?>
149 <div class="mc-indicates-required">
150 * = <?php esc_html_e( 'required field', 'mailchimp' ); ?>
151 </div><!-- /mc-indicates-required -->
152 <?php
153 }
154
155 // Show our Interest groups fields if we have them, and they're set to on
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 ?>
166 <div class="mc_interests_header">
167 <?php echo esc_html( $ig['title'] ); ?>
168 </div><!-- /mc_interests_header -->
169 <div class="mc_interest">
170 <?php
171 } else {
172 ?>
173 <div class="mc_interest" style="display: none;">
174 <?php
175 }
176 ?>
177
178 <?php
179 mailchimp_interest_group_field( $ig );
180 ?>
181 </div><!-- /mc_interest -->
182
183 <?php
184 }
185 }
186 }
187 }
188
189 if ( get_option( 'mc_email_type_option' ) ) {
190 ?>
191 <div class="mergeRow">
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>
198 </div>
199 </div>
200
201 <?php
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 }
213 ?>
214
215 <div class="mc_signup_submit">
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" />
217 </div><!-- /mc_signup_submit -->
218
219 <?php
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';
229 ?>
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>
232 </div><!-- /mc_unsub_link -->
233 <?php
234 }
235 ?>
236
237 </div><!-- /mc_form_inside -->
238 </form><!-- /mc_signup_form -->
239 </div><!-- /mc_signup_container -->
240 <?php
241 if ( ! empty( $after_widget ) ) {
242 echo wp_kses_post( $after_widget );
243 }
244
245 if ( empty( $before_widget ) ) {
246 echo '</div>';
247 }
248 }
249
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 /**
266 * Generate and display markup for Interest Groups
267 *
268 * @param array $ig Set of Interest Groups to generate markup for
269 * @return void
270 */
271 function mailchimp_interest_group_field( $ig ) {
272 if ( ! is_array( $ig ) ) {
273 return;
274 }
275 $html = '';
276 $set_name = 'group[' . $ig['id'] . ']';
277 switch ( $ig['type'] ) {
278 case 'checkboxes':
279 $i = 1;
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>
288 <br/>';
289 ++$i;
290 }
291 break;
292 case 'radio':
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>
300 <br/>';
301 }
302 break;
303 case 'dropdown':
304 $html .= '
305 <select name="' . esc_attr( $set_name ) . '">
306 <option value=""></option>';
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 }
313 $html .= '
314 </select>';
315 break;
316 case 'hidden':
317 $i = 1;
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;
326 }
327 break;
328 }
329 echo $html; // phpcs:ignore WordPress.Security.EscapeOutput.OutputNotEscaped -- Ignoring because html is previously escaped
330 }
331
332 /**
333 * Generate and display markup for form fields
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
340 */
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
351 // See if that var is set as required, or turned on (for display)
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 ) {
355 $label .= '<span class="mc_required">*</span>';
356 }
357 $label .= '</label>';
358
359 $html .= '
360 <div class="mc_merge_var">
361 ' . $label;
362 switch ( $data['type'] ) {
363 case 'date':
364 $html .= '
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"/>';
366 break;
367 case 'radio':
368 if ( is_array( $data['options']['choices'] ) ) {
369 $html .= '
370 <ul class="mc_list">';
371 foreach ( $data['options']['choices'] as $key => $value ) {
372 $html .= '
373 <li>
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>
376 </li>';
377 }
378 $html .= '
379 </ul>';
380 }
381 break;
382 case 'dropdown':
383 if ( is_array( $data['options']['choices'] ) ) {
384 $html .= '
385 <select id="' . esc_attr( $opt_id ) . '" name="' . esc_attr( $opt ) . '" class="mc_select">';
386 foreach ( $data['options']['choices'] as $value ) {
387 $html .= '
388 <option value="' . esc_attr( $value ) . '"' . selected( $value, $data['default_value'], false ) . '>' . esc_html( $value ) . '</option>';
389 }
390 $html .= '
391 </select>';
392 }
393 break;
394 case 'birthday':
395 $html .= '
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"/>';
397 break;
398 case 'birthday-old':
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
415 $html .= '
416 <br /><select id="' . esc_attr( $opt_id ) . '" name="' . esc_attr( $opt . '[month]' ) . '" class="mc_select">';
417 foreach ( $months as $month_key => $month ) {
418 $html .= '
419 <option value="' . $month_key . '">' . $month . '</option>';
420 }
421 $html .= '
422 </select>';
423
424 $html .= '
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 }
430 $html .= '
431 </select>';
432 break;
433 case 'address':
434 $countries = mailchimp_country_list();
435 $html .= '
436
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 }
453 $html .= '
454 </select>';
455 break;
456 case 'zip':
457 $html .= '
458 <input type="text" size="18" maxlength="5" value="" name="' . esc_attr( $opt ) . '" id="' . esc_attr( $opt_id ) . '" class="mc_input" />';
459 break;
460 case 'phone':
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 ? '(###) ### - ####' : '' ) . '" />';
464 break;
465 case 'email':
466 case 'url':
467 case 'imageurl':
468 case 'text':
469 case 'number':
470 default:
471 $html .= '
472 <input type="text" size="18" placeholder="' . esc_attr( $data['default_value'] ) . '" name="' . esc_attr( $opt ) . '" id="' . esc_attr( $opt_id ) . '" class="mc_input"/>';
473 break;
474 }
475 if ( ! empty( $data['help_text'] ) ) {
476 $html .= '<span class="mc_help">' . esc_html( $data['help_text'] ) . '</span>';
477 }
478 $html .= '
479 </div><!-- /mc_merge_var -->';
480 }
481
482 return $html;
483 }
484
485 /**
486 * Mailchimp Subscribe Box widget class
487 */
488 class Mailchimp_SF_Widget extends WP_Widget /* phpcs:ignore Universal.Files.SeparateFunctionsFromOO.Mixed */ {
489
490 /**
491 * Initialize class
492 */
493 public function __construct() {
494 $widget_ops = array(
495 'description' => __( 'Displays a Mailchimp Subscribe box', 'mailchimp' ),
496 );
497 parent::__construct( 'Mailchimp_SF_Widget', __( 'Mailchimp Widget', 'mailchimp' ), $widget_ops );
498 }
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 ) ) {
510 $instance = array();
511 }
512 mailchimp_sf_signup_form( array_merge( $args, $instance ) );
513 }
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 }
543 }
544
545 /**
546 * Return country list
547 *
548 * @return array
549 */
550 function mailchimp_country_list() {
551 return array(
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' ),
745 );
746 }
747