Version Description
- October 9, 2015 =
Fixes
- Fixes JS error when form contains no submit button
Improvements
- Only prefix
url
fields withhttp://
if it is filled. - Updated Spanish & Catalan translations, thanks to Xavier Gimeno Torrent.
- Fix
mc4wp_form_before_fields
being applied twice. - Position honeypot field to the right for Right-To-Left sites.
-
_mc4wp_lists
can now be a comma-separated string of MailChimp list ID's to subscribe to (or an array). - Minor other defensive coding improvements to prevent clashes with other plugins.
Additions
- Added opt-in usage tracking to help us make the plugin better. No sensitive data is tracked.
Download this release
Release Info
Developer | DvanKooten |
Plugin | MailChimp for WordPress |
Version | 2.3.15 |
Comparing to | |
See all releases |
Code changes from version 2.3.14 to 2.3.15
- assets/css/admin.css +14 -1
- assets/css/admin.min.css +1 -1
- includes/admin/class-admin.php +27 -4
- includes/admin/class-usage-tracking-nag.php +104 -0
- includes/admin/class-usage-tracking.php +137 -0
- includes/class-field-map.php +313 -0
- includes/class-form-validator.php +1 -0
- includes/class-form.php +14 -14
- includes/class-mailchimp.php +1 -5
- includes/class-plugin.php +10 -1
- includes/class-request.php +18 -8
- includes/class-subscribe-request.php +23 -54
- includes/functions/general.php +1 -0
- includes/integrations/class-integration.php +6 -6
- includes/views/api-settings.php +16 -0
- includes/views/parts/admin-upgrade-to-pro.php +5 -2
- includes/views/parts/form-enhancements.js +3 -3
- languages/mailchimp-for-wp-ca_ES.mo +0 -0
- languages/mailchimp-for-wp-ca_ES.po +166 -166
- languages/mailchimp-for-wp-es_ES.mo +0 -0
- languages/mailchimp-for-wp-es_ES.po +83 -83
- languages/mailchimp-for-wp-pt_BR.mo +0 -0
- languages/mailchimp-for-wp-pt_BR.po +15 -14
- mailchimp-for-wp.php +8 -2
- readme.txt +20 -1
- vendor/autoload_52.php +1 -1
- vendor/composer/autoload_classmap.php +3 -60
- vendor/composer/autoload_real_52.php +3 -3
assets/css/admin.css
CHANGED
@@ -36,15 +36,27 @@
|
|
36 |
|
37 |
#mc4wp-upgrade-box {
|
38 |
background:#222;
|
39 |
-
color
|
40 |
padding:20px;
|
41 |
}
|
42 |
|
|
|
|
|
|
|
|
|
43 |
#mc4wp-upgrade-box h3{
|
44 |
margin:0;
|
45 |
color:white;
|
46 |
}
|
47 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
48 |
#mc4wp-fw h4{
|
49 |
margin-top: 0;
|
50 |
}
|
@@ -203,6 +215,7 @@ table.mc4wp-help tr:hover {
|
|
203 |
margin: 0 !important;
|
204 |
}
|
205 |
|
|
|
206 |
@media(max-width: 1279px) {
|
207 |
|
208 |
#mc4wp-sidebar,
|
36 |
|
37 |
#mc4wp-upgrade-box {
|
38 |
background:#222;
|
39 |
+
color: #ddd;
|
40 |
padding:20px;
|
41 |
}
|
42 |
|
43 |
+
#mc4wp-upgrade-box a {
|
44 |
+
color: #ccc;
|
45 |
+
}
|
46 |
+
|
47 |
#mc4wp-upgrade-box h3{
|
48 |
margin:0;
|
49 |
color:white;
|
50 |
}
|
51 |
|
52 |
+
#mc4wp-upgrade-box .mc4wp-upgrade-button {
|
53 |
+
box-shadow: none;
|
54 |
+
background: #FF8C00;
|
55 |
+
border-color: #b56200;
|
56 |
+
margin-right: 10px;
|
57 |
+
color: white;
|
58 |
+
}
|
59 |
+
|
60 |
#mc4wp-fw h4{
|
61 |
margin-top: 0;
|
62 |
}
|
215 |
margin: 0 !important;
|
216 |
}
|
217 |
|
218 |
+
|
219 |
@media(max-width: 1279px) {
|
220 |
|
221 |
#mc4wp-sidebar,
|
assets/css/admin.min.css
CHANGED
@@ -1 +1 @@
|
|
1 |
-
#mc4wp-admin .page-title{background:url("../img/icon-large.png") left center no-repeat;padding-left:42px;line-height:32px;margin-bottom:20px}#mc4wp-content{float:left;width:65%}#mc4wp-sidebar{float:left;width:33%;margin-left:2%;border-left:1px solid #ccc;padding:0 0 0 2%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.valigntop{vertical-align:top!important}.mc4wp-box{margin-bottom:20px}.mc4wp-box label{font-weight:700}#mc4wp-upgrade-box{background:#222;color:#ddd;padding:20px}#mc4wp-upgrade-box h3{margin:0;color:#fff}#mc4wp-fw h4{margin-top:0}#mc4wp-fw p{margin-bottom:1em}#mc4wp-fw-fields{display:none}#mc4wp-fw-preview{font-family:"Courier New",Courier,monospace;min-height:200px;font-size:11px;background:#fff;z-index:99}#mc4wp-lists{margin:0}#mc4wp-lists input{margin-right:5px}.mc4wp-settings tr.pro-feature td,.mc4wp-settings tr.pro-feature th,.pro-feature{color:#aaa}#mc4wp-admin .status{display:inline-block;margin-left:1em;padding:3px 6px;color:#fff;font-size:12px;font-weight:700}#mc4wp-admin .positive{background-color:#32cd32}#mc4wp-admin .negative{background-color:red}#mc4wp-admin .neutral{background:gray}#mc4wp-admin table th{text-align:left}#mc4wp-admin table.form-table tr td:first-child,#mc4wp-admin table.form-table tr th:first-child{padding-left:0}#mc4wp-admin td.nowrap{white-space:nowrap}#mc4wp-admin td.desc{font-style:italic;font-size:11px}.mc4wp-notice{padding:6px 8px;color:#31708f;background:#d9edf7;border:1px solid #bce8f1;margin:1em 0!important}#mc4wp-admin .mc4wp-col{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:50%;padding:0 5px}#mc4wp-admin .mc4wp-first{padding-left:0}#mc4wp-admin .mc4wp-last{padding-right:0}.mc4wp-well{background:#fff;padding:10px;border:1px solid #ccc}.mc4wp-title{font-size:1.4em;margin:1.6em 0 1em;padding:0 0 6px;border-bottom:1px solid #ddd}table.mc4wp-help,table.mc4wp-help td,table.mc4wp-help th{border:1px solid #ddd;border-collapse:collapse;font-size:12px}table.mc4wp-help td,table.mc4wp-help th{vertical-align:text-top;text-align:left;padding:5px 10px}table.mc4wp-help tr:hover{background-color:#ddd}#mc4wp-admin .wp-list-table code{float:right}.mc4wp-lists-overview{border-collapse:collapse;background:#fff;padding:20px;max-height:500px;overflow-y:scroll}.mc4wp-lists-overview table{border:0}.mc4wp-lists-overview th{font-weight:700;vertical-align:top}.mc4wp-lists-overview td,.mc4wp-lists-overview th{border:1px solid #efefef}.mc4wp-lists-overview h3{margin:0!important}@media(max-width:1279px){#mc4wp-content,#mc4wp-sidebar{float:none;width:100%;padding:0;margin:0}#mc4wp-sidebar{border-left:0;border-top:1px solid #ccc;margin-top:25px;padding-top:25px}#mc4wp-admin .wp-list-table code{float:none}}@media(max-width:860px){.mc4wp-hide-smallscreens{display:none}}
|
1 |
+
#mc4wp-admin .page-title{background:url("../img/icon-large.png") left center no-repeat;padding-left:42px;line-height:32px;margin-bottom:20px}#mc4wp-content{float:left;width:65%}#mc4wp-sidebar{float:left;width:33%;margin-left:2%;border-left:1px solid #ccc;padding:0 0 0 2%;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;box-sizing:border-box}.valigntop{vertical-align:top!important}.mc4wp-box{margin-bottom:20px}.mc4wp-box label{font-weight:700}#mc4wp-upgrade-box{background:#222;color:#ddd;padding:20px}#mc4wp-upgrade-box a{color:#ccc}#mc4wp-upgrade-box h3{margin:0;color:#fff}#mc4wp-upgrade-box .mc4wp-upgrade-button{box-shadow:none;background:#FF8C00;border-color:#b56200;margin-right:10px;color:#fff}#mc4wp-fw h4{margin-top:0}#mc4wp-fw p{margin-bottom:1em}#mc4wp-fw-fields{display:none}#mc4wp-fw-preview{font-family:"Courier New",Courier,monospace;min-height:200px;font-size:11px;background:#fff;z-index:99}#mc4wp-lists{margin:0}#mc4wp-lists input{margin-right:5px}.mc4wp-settings tr.pro-feature td,.mc4wp-settings tr.pro-feature th,.pro-feature{color:#aaa}#mc4wp-admin .status{display:inline-block;margin-left:1em;padding:3px 6px;color:#fff;font-size:12px;font-weight:700}#mc4wp-admin .positive{background-color:#32cd32}#mc4wp-admin .negative{background-color:red}#mc4wp-admin .neutral{background:gray}#mc4wp-admin table th{text-align:left}#mc4wp-admin table.form-table tr td:first-child,#mc4wp-admin table.form-table tr th:first-child{padding-left:0}#mc4wp-admin td.nowrap{white-space:nowrap}#mc4wp-admin td.desc{font-style:italic;font-size:11px}.mc4wp-notice{padding:6px 8px;color:#31708f;background:#d9edf7;border:1px solid #bce8f1;margin:1em 0!important}#mc4wp-admin .mc4wp-col{float:left;-webkit-box-sizing:border-box;-moz-box-sizing:border-box;box-sizing:border-box;width:50%;padding:0 5px}#mc4wp-admin .mc4wp-first{padding-left:0}#mc4wp-admin .mc4wp-last{padding-right:0}.mc4wp-well{background:#fff;padding:10px;border:1px solid #ccc}.mc4wp-title{font-size:1.4em;margin:1.6em 0 1em;padding:0 0 6px;border-bottom:1px solid #ddd}table.mc4wp-help,table.mc4wp-help td,table.mc4wp-help th{border:1px solid #ddd;border-collapse:collapse;font-size:12px}table.mc4wp-help td,table.mc4wp-help th{vertical-align:text-top;text-align:left;padding:5px 10px}table.mc4wp-help tr:hover{background-color:#ddd}#mc4wp-admin .wp-list-table code{float:right}.mc4wp-lists-overview{border-collapse:collapse;background:#fff;padding:20px;max-height:500px;overflow-y:scroll}.mc4wp-lists-overview table{border:0}.mc4wp-lists-overview th{font-weight:700;vertical-align:top}.mc4wp-lists-overview td,.mc4wp-lists-overview th{border:1px solid #efefef}.mc4wp-lists-overview h3{margin:0!important}@media(max-width:1279px){#mc4wp-content,#mc4wp-sidebar{float:none;width:100%;padding:0;margin:0}#mc4wp-sidebar{border-left:0;border-top:1px solid #ccc;margin-top:25px;padding-top:25px}#mc4wp-admin .wp-list-table code{float:none}}@media(max-width:860px){.mc4wp-hide-smallscreens{display:none}}
|
includes/admin/class-admin.php
CHANGED
@@ -23,11 +23,19 @@ class MC4WP_Lite_Admin
|
|
23 |
*/
|
24 |
public function __construct() {
|
25 |
|
|
|
26 |
$this->plugin_file = plugin_basename( MC4WP_LITE_PLUGIN_FILE );
|
27 |
$this->mailchimp = new MC4WP_MailChimp();
|
28 |
$this->load_translations();
|
29 |
$this->setup_hooks();
|
30 |
$this->listen();
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
}
|
32 |
|
33 |
/**
|
@@ -188,9 +196,9 @@ class MC4WP_Lite_Admin
|
|
188 |
}
|
189 |
|
190 |
/**
|
191 |
-
|
192 |
-
|
193 |
-
public function
|
194 |
|
195 |
/**
|
196 |
* @filter mc4wp_settings_cap
|
@@ -198,7 +206,17 @@ class MC4WP_Lite_Admin
|
|
198 |
*
|
199 |
* Use to customize the required user capability to access the MC4WP settings pages
|
200 |
*/
|
201 |
-
$required_cap = apply_filters( 'mc4wp_settings_cap', 'manage_options' );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
202 |
|
203 |
$menu_items = array(
|
204 |
array(
|
@@ -251,6 +269,11 @@ class MC4WP_Lite_Admin
|
|
251 |
|
252 |
$current = mc4wp_get_options();
|
253 |
|
|
|
|
|
|
|
|
|
|
|
254 |
// sanitize simple text fields (no HTML, just chars & numbers)
|
255 |
$simple_text_fields = array( 'api_key', 'redirect', 'css' );
|
256 |
foreach( $simple_text_fields as $field ) {
|
23 |
*/
|
24 |
public function __construct() {
|
25 |
|
26 |
+
|
27 |
$this->plugin_file = plugin_basename( MC4WP_LITE_PLUGIN_FILE );
|
28 |
$this->mailchimp = new MC4WP_MailChimp();
|
29 |
$this->load_translations();
|
30 |
$this->setup_hooks();
|
31 |
$this->listen();
|
32 |
+
|
33 |
+
// Instantiate Usage Tracking nag
|
34 |
+
$options = mc4wp_get_options( 'general' );
|
35 |
+
if( ! $options['allow_usage_tracking'] ) {
|
36 |
+
$usage_tracking_nag = new MC4WP_Usage_Tracking_Nag( $this->get_required_capability() );
|
37 |
+
$usage_tracking_nag->add_hooks();
|
38 |
+
}
|
39 |
}
|
40 |
|
41 |
/**
|
196 |
}
|
197 |
|
198 |
/**
|
199 |
+
* @return string
|
200 |
+
*/
|
201 |
+
public function get_required_capability() {
|
202 |
|
203 |
/**
|
204 |
* @filter mc4wp_settings_cap
|
206 |
*
|
207 |
* Use to customize the required user capability to access the MC4WP settings pages
|
208 |
*/
|
209 |
+
$required_cap = (string) apply_filters( 'mc4wp_settings_cap', 'manage_options' );
|
210 |
+
|
211 |
+
return $required_cap;
|
212 |
+
}
|
213 |
+
|
214 |
+
/**
|
215 |
+
* Register the setting pages and their menu items
|
216 |
+
*/
|
217 |
+
public function build_menu() {
|
218 |
+
|
219 |
+
$required_cap = $this->get_required_capability();
|
220 |
|
221 |
$menu_items = array(
|
222 |
array(
|
269 |
|
270 |
$current = mc4wp_get_options();
|
271 |
|
272 |
+
// Toggle usage tracking
|
273 |
+
if( isset( $settings['allow_usage_tracking'] ) ) {
|
274 |
+
MC4WP_Usage_Tracking::instance()->toggle( (bool) $settings['allow_usage_tracking'] );
|
275 |
+
}
|
276 |
+
|
277 |
// sanitize simple text fields (no HTML, just chars & numbers)
|
278 |
$simple_text_fields = array( 'api_key', 'redirect', 'css' );
|
279 |
foreach( $simple_text_fields as $field ) {
|
includes/admin/class-usage-tracking-nag.php
ADDED
@@ -0,0 +1,104 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class MC4WP_Usage_Tracking_Nag {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* @var int
|
7 |
+
*/
|
8 |
+
public $shown = 0;
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @var string
|
12 |
+
*/
|
13 |
+
protected $required_capability = 'manage_options';
|
14 |
+
|
15 |
+
/**
|
16 |
+
* The name of the option to store whether this nag was shown in
|
17 |
+
*/
|
18 |
+
const OPTION_NAME = 'mc4wp_usage_tracking_nag_shown';
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @param string $required_capability
|
22 |
+
*/
|
23 |
+
public function __construct( $required_capability = '' ) {
|
24 |
+
$this->shown = get_option( self::OPTION_NAME, 0 );
|
25 |
+
|
26 |
+
if( ! empty( $required_capability ) ) {
|
27 |
+
$this->required_capability = $required_capability;
|
28 |
+
}
|
29 |
+
}
|
30 |
+
|
31 |
+
/**
|
32 |
+
* Add hooks
|
33 |
+
*/
|
34 |
+
public function add_hooks() {
|
35 |
+
|
36 |
+
// Don't add unneeded hooks
|
37 |
+
if( $this->shown ) {
|
38 |
+
return;
|
39 |
+
}
|
40 |
+
|
41 |
+
add_action( 'admin_notices', array( $this, 'show' ) );
|
42 |
+
add_action( 'admin_init', array( $this, 'listen' ) );
|
43 |
+
}
|
44 |
+
|
45 |
+
/**
|
46 |
+
*
|
47 |
+
*/
|
48 |
+
public function show() {
|
49 |
+
|
50 |
+
// only show this nag if tracking is not already enabled or notice was shown before
|
51 |
+
if( $this->shown ) {
|
52 |
+
return;
|
53 |
+
}
|
54 |
+
|
55 |
+
?>
|
56 |
+
<div class="updated notice">
|
57 |
+
<p>
|
58 |
+
<strong>Help us improve the MailChimp for WordPress plugin.</strong><br />
|
59 |
+
Allow us to anonymously track how this plugin is used to help us make it better fit your needs. No sensitive data is tracked.
|
60 |
+
</p>
|
61 |
+
<form method="post">
|
62 |
+
<p>
|
63 |
+
<button type="submit" class="button button-primary" name="allow" value="1">Allow usage tracking</button>
|
64 |
+
<button type="submit" class="button" name="allow" value="0">Dismiss</button>
|
65 |
+
</p>
|
66 |
+
|
67 |
+
<input type="hidden" name="mc4wp-usage-tracking-nag" value="1" />
|
68 |
+
</form>
|
69 |
+
|
70 |
+
</div>
|
71 |
+
<?php
|
72 |
+
}
|
73 |
+
|
74 |
+
/**
|
75 |
+
* Listen for uses of the form in the nag notice.
|
76 |
+
*/
|
77 |
+
public function listen() {
|
78 |
+
|
79 |
+
if ( ! isset( $_POST['mc4wp-usage-tracking-nag'] ) ) {
|
80 |
+
return;
|
81 |
+
}
|
82 |
+
|
83 |
+
if ( ! current_user_can( $this->required_capability ) ) {
|
84 |
+
return;
|
85 |
+
}
|
86 |
+
|
87 |
+
$allow = ( isset( $_POST['allow'] ) ) ? (bool) $_POST['allow'] : false;
|
88 |
+
|
89 |
+
|
90 |
+
if ( $allow ) {
|
91 |
+
// update plugin options
|
92 |
+
$options = (array) get_option( 'mc4wp_lite', array() );
|
93 |
+
$options['allow_usage_tracking'] = 1;
|
94 |
+
update_option( 'mc4wp_lite', $options );
|
95 |
+
|
96 |
+
// toggle tracking
|
97 |
+
MC4WP_Usage_Tracking::instance()->toggle( true );
|
98 |
+
}
|
99 |
+
|
100 |
+
// make sure notice never appears again
|
101 |
+
update_option( self::OPTION_NAME, 1 );
|
102 |
+
$this->shown = 1;
|
103 |
+
}
|
104 |
+
}
|
includes/admin/class-usage-tracking.php
ADDED
@@ -0,0 +1,137 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class MC4WP_Usage_Tracking {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* @var string
|
7 |
+
*/
|
8 |
+
protected $tracking_url = 'https://mc4wp.com/api/usage-tracking';
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @var MC4WP_Usage_Tracking The One True Instance
|
12 |
+
*/
|
13 |
+
protected static $instance;
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @return MC4WP_Usage_Tracking
|
17 |
+
*/
|
18 |
+
public static function instance() {
|
19 |
+
|
20 |
+
if( ! self::$instance instanceof MC4WP_Usage_Tracking ) {
|
21 |
+
self::$instance = new MC4WP_Usage_Tracking();
|
22 |
+
}
|
23 |
+
|
24 |
+
return self::$instance;
|
25 |
+
}
|
26 |
+
|
27 |
+
/**
|
28 |
+
* Constructor
|
29 |
+
*/
|
30 |
+
public function __construct() {}
|
31 |
+
|
32 |
+
/**
|
33 |
+
* Add hooks
|
34 |
+
*/
|
35 |
+
public function add_hooks() {
|
36 |
+
add_action( 'mc4wp_usage_tracking', array( $this, 'track' ) );
|
37 |
+
}
|
38 |
+
|
39 |
+
/**
|
40 |
+
* Toggle tracking (clears & sets the scheduled tracking event)
|
41 |
+
*
|
42 |
+
* @param bool $enabled
|
43 |
+
*/
|
44 |
+
public function toggle( $enabled ) {
|
45 |
+
|
46 |
+
if( ! $enabled ) {
|
47 |
+
wp_clear_scheduled_hook( 'mc4wp_usage_tracking' );
|
48 |
+
return;
|
49 |
+
}
|
50 |
+
|
51 |
+
wp_schedule_event( time(), 'daily', 'mc4wp_usage_tracking' );
|
52 |
+
}
|
53 |
+
|
54 |
+
/**
|
55 |
+
* Sends the tracking request. Non-blocking.
|
56 |
+
*/
|
57 |
+
public function track() {
|
58 |
+
$data = $this->get_tracking_data();
|
59 |
+
|
60 |
+
// send non-blocking request and be done with it
|
61 |
+
$response = wp_remote_post( $this->tracking_url, array(
|
62 |
+
'body' => json_encode( $data ),
|
63 |
+
'headers' => array(
|
64 |
+
'Content-Type' => 'application/json',
|
65 |
+
'Accept' => 'application/json'
|
66 |
+
),
|
67 |
+
'blocking' => false,
|
68 |
+
)
|
69 |
+
);
|
70 |
+
}
|
71 |
+
|
72 |
+
/**
|
73 |
+
* @return array
|
74 |
+
*/
|
75 |
+
protected function get_tracking_data() {
|
76 |
+
|
77 |
+
$data = array(
|
78 |
+
// use md5 hash of home_url, we don't need/want to know the actual site url
|
79 |
+
'site' => md5( home_url() ),
|
80 |
+
'options' => $this->get_tracked_options(),
|
81 |
+
'number_of_mailchimp_lists' => $this->get_mailchimp_lists_count(),
|
82 |
+
'mc4wp_version' => MC4WP_LITE_VERSION,
|
83 |
+
'plugins' => (array) get_option( 'active_plugins', array() ),
|
84 |
+
'php_version' => PHP_MAJOR_VERSION . '.' . PHP_MINOR_VERSION,
|
85 |
+
'curl_version' => $this->get_curl_version(),
|
86 |
+
'wp_version' => $GLOBALS['wp_version']
|
87 |
+
);
|
88 |
+
|
89 |
+
return $data;
|
90 |
+
}
|
91 |
+
|
92 |
+
/**
|
93 |
+
* @return int
|
94 |
+
*/
|
95 |
+
protected function get_mailchimp_lists_count() {
|
96 |
+
$mailchimp = new MC4WP_MailChimp();
|
97 |
+
$lists = $mailchimp->get_lists( false, true );
|
98 |
+
return count( $lists );
|
99 |
+
}
|
100 |
+
|
101 |
+
/**
|
102 |
+
* @return array
|
103 |
+
*/
|
104 |
+
public function get_tracked_options( ) {
|
105 |
+
|
106 |
+
$checkbox_options = mc4wp_get_options( 'checkbox' );
|
107 |
+
$form_options = mc4wp_get_options( 'form' );
|
108 |
+
|
109 |
+
// make sure these keys are always stripped
|
110 |
+
$ignored_options = array( 'api_key', 'license_key', 'lists' );
|
111 |
+
|
112 |
+
// filter options
|
113 |
+
$checkbox_options = array_diff_key( $checkbox_options, array_flip( $ignored_options ) );
|
114 |
+
$form_options = array_diff_key( $form_options, array_flip( $ignored_options ) );
|
115 |
+
|
116 |
+
// merge options
|
117 |
+
$options = array(
|
118 |
+
'checkbox' => $checkbox_options,
|
119 |
+
'form' => $form_options
|
120 |
+
);
|
121 |
+
|
122 |
+
return $options;
|
123 |
+
}
|
124 |
+
|
125 |
+
/**
|
126 |
+
* @return string
|
127 |
+
*/
|
128 |
+
protected function get_curl_version() {
|
129 |
+
|
130 |
+
if( ! function_exists( 'curl_version' ) ) {
|
131 |
+
return 0;
|
132 |
+
}
|
133 |
+
|
134 |
+
$curl_version_info = curl_version();
|
135 |
+
return $curl_version_info['version'];
|
136 |
+
}
|
137 |
+
}
|
includes/class-field-map.php
ADDED
@@ -0,0 +1,313 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
+
<?php
|
2 |
+
|
3 |
+
class MC4WP_Field_Map {
|
4 |
+
|
5 |
+
/**
|
6 |
+
* @var array
|
7 |
+
*/
|
8 |
+
protected $form_data = array();
|
9 |
+
|
10 |
+
/**
|
11 |
+
* @var array
|
12 |
+
*/
|
13 |
+
protected $lists = array();
|
14 |
+
|
15 |
+
/**
|
16 |
+
* @var MC4WP_MailChimp
|
17 |
+
*/
|
18 |
+
protected $mailchimp;
|
19 |
+
|
20 |
+
/**
|
21 |
+
* @var array
|
22 |
+
*/
|
23 |
+
protected $mapped_fields = array( 'EMAIL' );
|
24 |
+
|
25 |
+
/**
|
26 |
+
* @var string
|
27 |
+
*/
|
28 |
+
public $error_code = '';
|
29 |
+
|
30 |
+
/**
|
31 |
+
* @var array|bool
|
32 |
+
*/
|
33 |
+
public $list_fields;
|
34 |
+
|
35 |
+
/**
|
36 |
+
* @var array
|
37 |
+
*/
|
38 |
+
public $custom_fields = array();
|
39 |
+
|
40 |
+
/**
|
41 |
+
* @var array
|
42 |
+
*/
|
43 |
+
public $global_fields = array();
|
44 |
+
|
45 |
+
/**
|
46 |
+
* @var bool
|
47 |
+
*/
|
48 |
+
public $success = false;
|
49 |
+
|
50 |
+
|
51 |
+
/**
|
52 |
+
* @param array $form_data
|
53 |
+
* @param array $lists
|
54 |
+
*/
|
55 |
+
public function __construct( array $form_data, array $lists ) {
|
56 |
+
$this->form_data = $form_data;
|
57 |
+
$this->lists = $lists;
|
58 |
+
$this->mailchimp = new MC4WP_MailChimp();
|
59 |
+
|
60 |
+
$this->list_fields = $this->map_list_fields();
|
61 |
+
|
62 |
+
// only proceed if successful
|
63 |
+
if( $this->list_fields ) {
|
64 |
+
$this->success = true;
|
65 |
+
$this->global_fields = $this->map_global_fields();
|
66 |
+
$this->custom_fields = $this->find_custom_fields();
|
67 |
+
}
|
68 |
+
|
69 |
+
}
|
70 |
+
|
71 |
+
/**
|
72 |
+
* @return array|bool
|
73 |
+
*/
|
74 |
+
public function map_list_fields() {
|
75 |
+
|
76 |
+
$map = array();
|
77 |
+
|
78 |
+
// loop through selected lists
|
79 |
+
foreach( $this->lists as $list_id ) {
|
80 |
+
|
81 |
+
$list = $this->mailchimp->get_list( $list_id, false, true );
|
82 |
+
|
83 |
+
// skip this list if it's unexisting
|
84 |
+
if( ! is_object( $list ) || ! isset( $list->merge_vars ) ) {
|
85 |
+
continue;
|
86 |
+
}
|
87 |
+
|
88 |
+
// generate map for this given list
|
89 |
+
$list_map = $this->map_data_to_list( $list );
|
90 |
+
if( $list_map === false ) {
|
91 |
+
return false;
|
92 |
+
}
|
93 |
+
|
94 |
+
$map[ $list_id ] = $list_map;
|
95 |
+
}
|
96 |
+
|
97 |
+
return $map;
|
98 |
+
}
|
99 |
+
|
100 |
+
/**
|
101 |
+
* @return array
|
102 |
+
*/
|
103 |
+
public function find_custom_fields() {
|
104 |
+
|
105 |
+
$unmapped_fields = array();
|
106 |
+
|
107 |
+
// is there still unmapped data left?
|
108 |
+
$total_fields_mapped = count( $this->mapped_fields ) + count( $this->global_fields );
|
109 |
+
|
110 |
+
if( $total_fields_mapped < count( $this->form_data ) ) {
|
111 |
+
foreach( $this->form_data as $field_key => $field_value ) {
|
112 |
+
|
113 |
+
if( $this->is_internal_var( $field_key ) ) {
|
114 |
+
continue;
|
115 |
+
}
|
116 |
+
|
117 |
+
if( ! in_array( $field_key, $this->mapped_fields ) ) {
|
118 |
+
$unmapped_fields[ $field_key ] = $field_value;
|
119 |
+
}
|
120 |
+
}
|
121 |
+
}
|
122 |
+
|
123 |
+
return $unmapped_fields;
|
124 |
+
}
|
125 |
+
|
126 |
+
/**
|
127 |
+
* @return array
|
128 |
+
*/
|
129 |
+
private function map_global_fields() {
|
130 |
+
$global_fields = array();
|
131 |
+
|
132 |
+
// map global fields
|
133 |
+
$global_field_names = array( 'MC_LOCATION', 'MC_NOTES', 'MC_LANGUAGE' );
|
134 |
+
foreach( $global_field_names as $field_name ) {
|
135 |
+
if( isset( $this->form_data[ $field_name ] ) ) {
|
136 |
+
$global_fields[ $field_name ] = $this->form_data[ $field_name ];
|
137 |
+
}
|
138 |
+
}
|
139 |
+
|
140 |
+
return $global_fields;
|
141 |
+
}
|
142 |
+
|
143 |
+
/**
|
144 |
+
* @param $list
|
145 |
+
*
|
146 |
+
* @return array
|
147 |
+
*/
|
148 |
+
private function map_data_to_list( $list ) {
|
149 |
+
|
150 |
+
// start with empty list map
|
151 |
+
$list_map = array();
|
152 |
+
|
153 |
+
// loop through other list fields
|
154 |
+
foreach( $list->merge_vars as $field ) {
|
155 |
+
|
156 |
+
// skip EMAIL field
|
157 |
+
if( $field->tag === 'EMAIL' ) {
|
158 |
+
continue;
|
159 |
+
}
|
160 |
+
|
161 |
+
// check if field is required
|
162 |
+
if( $field->req ) {
|
163 |
+
if( ! isset( $this->form_data[ $field->tag ] ) || '' === $this->form_data[ $field->tag ] ) {
|
164 |
+
$this->error_code = 'required_field_missing';
|
165 |
+
return false;
|
166 |
+
}
|
167 |
+
}
|
168 |
+
|
169 |
+
// if field is not set, continue.
|
170 |
+
if( ! isset( $this->form_data[ $field->tag ] ) ) {
|
171 |
+
continue;
|
172 |
+
}
|
173 |
+
|
174 |
+
// grab field value from data
|
175 |
+
$field_value = $this->form_data[ $field->tag ];
|
176 |
+
|
177 |
+
// format field value according to its type
|
178 |
+
$field_value = $this->format_field_value( $field_value, $field->field_type );
|
179 |
+
|
180 |
+
// add to mapped fields
|
181 |
+
$this->mapped_fields[] = $field->tag;
|
182 |
+
|
183 |
+
// add field value to map
|
184 |
+
$list_map[ $field->tag ] = $field_value;
|
185 |
+
}
|
186 |
+
|
187 |
+
// loop through list groupings if GROUPINGS data was sent
|
188 |
+
if( isset( $this->form_data['GROUPINGS'] ) && is_array( $this->form_data['GROUPINGS'] ) && ! empty( $list->interest_groupings ) ) {
|
189 |
+
|
190 |
+
$list_map['GROUPINGS'] = array();
|
191 |
+
|
192 |
+
foreach( $list->interest_groupings as $grouping ) {
|
193 |
+
|
194 |
+
// check if data for this group was sent
|
195 |
+
if( isset( $this->form_data['GROUPINGS'][$grouping->id] ) ) {
|
196 |
+
$group_data = $this->form_data['GROUPINGS'][$grouping->id];
|
197 |
+
} elseif( isset( $this->form_data['GROUPINGS'][$grouping->name] ) ) {
|
198 |
+
$group_data = $this->form_data['GROUPINGS'][$grouping->name];
|
199 |
+
} else {
|
200 |
+
// no data for this grouping was sent, just continue.
|
201 |
+
continue;
|
202 |
+
}
|
203 |
+
|
204 |
+
// format new grouping
|
205 |
+
$grouping = array(
|
206 |
+
'id' => $grouping->id,
|
207 |
+
'groups' => $group_data,
|
208 |
+
);
|
209 |
+
|
210 |
+
// make sure groups is an array
|
211 |
+
if( ! is_array( $grouping['groups'] ) ) {
|
212 |
+
$grouping['groups'] = sanitize_text_field( $grouping['groups'] );
|
213 |
+
$grouping['groups'] = array_map( 'trim', explode( ',', $grouping['groups'] ) );
|
214 |
+
}
|
215 |
+
|
216 |
+
$this->mapped_fields[] = 'GROUPINGS';
|
217 |
+
$list_map['GROUPINGS'][] = $grouping;
|
218 |
+
}
|
219 |
+
|
220 |
+
// unset GROUPINGS if no grouping data was found for this list
|
221 |
+
if( 0 === count( $list_map['GROUPINGS'] ) ) {
|
222 |
+
unset( $list_map['GROUPINGS'] );
|
223 |
+
}
|
224 |
+
}
|
225 |
+
|
226 |
+
// add to total map
|
227 |
+
return $list_map;
|
228 |
+
}
|
229 |
+
|
230 |
+
/**
|
231 |
+
* Format field value according to its type
|
232 |
+
*
|
233 |
+
* @param $field_type
|
234 |
+
* @param $field_value
|
235 |
+
*
|
236 |
+
* @return array|string
|
237 |
+
*/
|
238 |
+
protected function format_field_value( $field_value, $field_type ) {
|
239 |
+
|
240 |
+
$field_type = strtolower( $field_type );
|
241 |
+
|
242 |
+
switch( $field_type ) {
|
243 |
+
|
244 |
+
// birthday fields need to be MM/DD for the MailChimp API
|
245 |
+
case 'birthday':
|
246 |
+
$field_value = (string) date( 'm/d', strtotime( $field_value ) );
|
247 |
+
break;
|
248 |
+
|
249 |
+
case 'address':
|
250 |
+
|
251 |
+
// auto-format if this is a string
|
252 |
+
if( is_string( $field_value ) ) {
|
253 |
+
|
254 |
+
// addr1, addr2, city, state, zip, country
|
255 |
+
$address_pieces = explode( ',', $field_value );
|
256 |
+
|
257 |
+
// try to fill it.... this is a long shot
|
258 |
+
$field_value = array(
|
259 |
+
'addr1' => $address_pieces[0],
|
260 |
+
'city' => ( isset( $address_pieces[1] ) ) ? $address_pieces[1] : '',
|
261 |
+
'state' => ( isset( $address_pieces[2] ) ) ? $address_pieces[2] : '',
|
262 |
+
'zip' => ( isset( $address_pieces[3] ) ) ? $address_pieces[3] : ''
|
263 |
+
);
|
264 |
+
} elseif( is_array( $field_value ) ) {
|
265 |
+
|
266 |
+
// merge with array of empty defaults to allow skipping certain fields
|
267 |
+
$default_address = array(
|
268 |
+
'addr1' => '',
|
269 |
+
'city' => '',
|
270 |
+
'state' => '',
|
271 |
+
'zip' => ''
|
272 |
+
);
|
273 |
+
|
274 |
+
$field_value = array_merge( $default_address, $field_value );
|
275 |
+
}
|
276 |
+
|
277 |
+
break;
|
278 |
+
}
|
279 |
+
|
280 |
+
/**
|
281 |
+
* @filter `mc4wp_format_field_value`
|
282 |
+
* @param mixed $field_value
|
283 |
+
* @param string $field_type
|
284 |
+
* @expects mixed
|
285 |
+
*
|
286 |
+
* Format a field value according to its MailChimp field type
|
287 |
+
*/
|
288 |
+
$field_value = apply_filters( 'mc4wp_format_field_value', $field_value, $field_type );
|
289 |
+
|
290 |
+
return $field_value;
|
291 |
+
}
|
292 |
+
|
293 |
+
/**
|
294 |
+
* @param $var
|
295 |
+
*
|
296 |
+
* @return bool
|
297 |
+
*/
|
298 |
+
protected function is_internal_var( $var ) {
|
299 |
+
|
300 |
+
if( $var[0] === '_' ) {
|
301 |
+
return true;
|
302 |
+
}
|
303 |
+
|
304 |
+
// Ignore those fields, we don't need them
|
305 |
+
$ignored_vars = array( 'CPTCH_NUMBER', 'CNTCTFRM_CONTACT_ACTION', 'CPTCH_RESULT', 'CPTCH_TIME', 'MC4WP_ACTION' );
|
306 |
+
if( in_array( $var, $ignored_vars ) ) {
|
307 |
+
return true;
|
308 |
+
}
|
309 |
+
|
310 |
+
return false;
|
311 |
+
}
|
312 |
+
|
313 |
+
}
|
includes/class-form-validator.php
CHANGED
@@ -54,6 +54,7 @@ class MC4WP_Form_Validator {
|
|
54 |
* @return bool
|
55 |
*/
|
56 |
public function validate_honeypot() {
|
|
|
57 |
// ensure honeypot was given but not filled
|
58 |
if ( ! isset( $this->internal_data['honeypot'] ) || '' !== $this->internal_data['honeypot'] ) {
|
59 |
return false;
|
54 |
* @return bool
|
55 |
*/
|
56 |
public function validate_honeypot() {
|
57 |
+
|
58 |
// ensure honeypot was given but not filled
|
59 |
if ( ! isset( $this->internal_data['honeypot'] ) || '' !== $this->internal_data['honeypot'] ) {
|
60 |
return false;
|
includes/class-form.php
CHANGED
@@ -71,7 +71,7 @@ class MC4WP_Form {
|
|
71 |
*/
|
72 |
public function contains_field_type( $field_type ) {
|
73 |
$html = sprintf( ' type="%s" ', $field_type );
|
74 |
-
return
|
75 |
}
|
76 |
|
77 |
|
@@ -116,9 +116,9 @@ class MC4WP_Form {
|
|
116 |
public function get_hidden_fields( $element_id, $attributes = array() ) {
|
117 |
|
118 |
// hidden fields
|
119 |
-
$hidden_fields = '<div style="position: absolute; ' . ( is_rtl() ? 'right' : 'left' ) . ': -5000px;"><input type="text" name="
|
120 |
$hidden_fields .= '<input type="hidden" name="_mc4wp_timestamp" value="'. time() . '" />';
|
121 |
-
$hidden_fields .= '<input type="hidden" name="_mc4wp_form_id" value="'. $this->ID .'" />';
|
122 |
$hidden_fields .= '<input type="hidden" name="_mc4wp_form_element_id" value="'. esc_attr( $element_id ) .'" />';
|
123 |
$hidden_fields .= '<input type="hidden" name="_mc4wp_form_submit" value="1" />';
|
124 |
$hidden_fields .= '<input type="hidden" name="_mc4wp_form_nonce" value="'. wp_create_nonce( '_mc4wp_form_nonce' ) .'" />';
|
@@ -127,7 +127,7 @@ class MC4WP_Form {
|
|
127 |
// was "lists" parameter passed in shortcode arguments?
|
128 |
if( isset( $attributes['lists'] ) && ! empty( $attributes['lists'] ) ) {
|
129 |
$lists_string = ( is_array( $attributes['lists'] ) ) ? join( ',', $attributes['lists'] ) : $attributes['lists'];
|
130 |
-
$hidden_fields .= '<input type="hidden" name="_mc4wp_lists" value="'. $lists_string . '" />';
|
131 |
}
|
132 |
|
133 |
return (string) $hidden_fields;
|
@@ -183,28 +183,28 @@ class MC4WP_Form {
|
|
183 |
* @param string $response_html
|
184 |
* @return string
|
185 |
*/
|
186 |
-
protected function
|
187 |
-
$
|
188 |
|
189 |
if( $this->get_response_position() === 'before' ) {
|
190 |
-
$
|
191 |
}
|
192 |
|
193 |
-
return $
|
194 |
}
|
195 |
|
196 |
/**
|
197 |
* @param string $response_html
|
198 |
* @return string
|
199 |
*/
|
200 |
-
protected function
|
201 |
-
$
|
202 |
|
203 |
if( $this->get_response_position() === 'after' ) {
|
204 |
-
$
|
205 |
}
|
206 |
|
207 |
-
return $
|
208 |
}
|
209 |
|
210 |
/**
|
@@ -251,8 +251,8 @@ class MC4WP_Form {
|
|
251 |
$opening_html .= '<div id="' . esc_attr( $element_id ) . '" class="' . esc_attr( $this->get_css_classes( $element_id ) ) . '">';
|
252 |
$before_fields = apply_filters( 'mc4wp_form_before_fields', '' );
|
253 |
$after_fields = apply_filters( 'mc4wp_form_after_fields', '' );
|
254 |
-
$before_form = $this->
|
255 |
-
$after_form = $this->
|
256 |
$closing_html = '</div><!-- / MailChimp for WordPress Plugin -->';
|
257 |
|
258 |
// only generate form & fields HTML if necessary
|
71 |
*/
|
72 |
public function contains_field_type( $field_type ) {
|
73 |
$html = sprintf( ' type="%s" ', $field_type );
|
74 |
+
return stripos( $this->content, $html ) !== false;
|
75 |
}
|
76 |
|
77 |
|
116 |
public function get_hidden_fields( $element_id, $attributes = array() ) {
|
117 |
|
118 |
// hidden fields
|
119 |
+
$hidden_fields = '<div style="position: absolute; ' . ( is_rtl() ? 'right' : 'left' ) . ': -5000px;"><input type="text" name="_mc4wp_ho_'. md5( time() ).'" value="" tabindex="-1" autocomplete="off" /></div>';
|
120 |
$hidden_fields .= '<input type="hidden" name="_mc4wp_timestamp" value="'. time() . '" />';
|
121 |
+
$hidden_fields .= '<input type="hidden" name="_mc4wp_form_id" value="'. esc_attr( $this->ID ) .'" />';
|
122 |
$hidden_fields .= '<input type="hidden" name="_mc4wp_form_element_id" value="'. esc_attr( $element_id ) .'" />';
|
123 |
$hidden_fields .= '<input type="hidden" name="_mc4wp_form_submit" value="1" />';
|
124 |
$hidden_fields .= '<input type="hidden" name="_mc4wp_form_nonce" value="'. wp_create_nonce( '_mc4wp_form_nonce' ) .'" />';
|
127 |
// was "lists" parameter passed in shortcode arguments?
|
128 |
if( isset( $attributes['lists'] ) && ! empty( $attributes['lists'] ) ) {
|
129 |
$lists_string = ( is_array( $attributes['lists'] ) ) ? join( ',', $attributes['lists'] ) : $attributes['lists'];
|
130 |
+
$hidden_fields .= '<input type="hidden" name="_mc4wp_lists" value="'. esc_attr( $lists_string ) . '" />';
|
131 |
}
|
132 |
|
133 |
return (string) $hidden_fields;
|
183 |
* @param string $response_html
|
184 |
* @return string
|
185 |
*/
|
186 |
+
protected function get_html_before_form( $response_html = '' ) {
|
187 |
+
$html = (string) apply_filters( 'mc4wp_form_before_form', '', $this );
|
188 |
|
189 |
if( $this->get_response_position() === 'before' ) {
|
190 |
+
$html = $html . $response_html;
|
191 |
}
|
192 |
|
193 |
+
return $html;
|
194 |
}
|
195 |
|
196 |
/**
|
197 |
* @param string $response_html
|
198 |
* @return string
|
199 |
*/
|
200 |
+
protected function get_html_after_form( $response_html = '' ) {
|
201 |
+
$html = (string) apply_filters( 'mc4wp_form_after_form', '', $this );
|
202 |
|
203 |
if( $this->get_response_position() === 'after' ) {
|
204 |
+
$html = $response_html . $html;
|
205 |
}
|
206 |
|
207 |
+
return $html;
|
208 |
}
|
209 |
|
210 |
/**
|
251 |
$opening_html .= '<div id="' . esc_attr( $element_id ) . '" class="' . esc_attr( $this->get_css_classes( $element_id ) ) . '">';
|
252 |
$before_fields = apply_filters( 'mc4wp_form_before_fields', '' );
|
253 |
$after_fields = apply_filters( 'mc4wp_form_after_fields', '' );
|
254 |
+
$before_form = $this->get_html_before_form( $response_html );
|
255 |
+
$after_form = $this->get_html_after_form( $response_html );
|
256 |
$closing_html = '</div><!-- / MailChimp for WordPress Plugin -->';
|
257 |
|
258 |
// only generate form & fields HTML if necessary
|
includes/class-mailchimp.php
CHANGED
@@ -85,11 +85,7 @@ class MC4WP_MailChimp {
|
|
85 |
return $lists;
|
86 |
} else {
|
87 |
// api request failed, get fallback data (with longer lifetime)
|
88 |
-
$cached_lists = get_transient( $this->transient_name . '_fallback' );
|
89 |
-
|
90 |
-
if ( ! is_array( $cached_lists ) ) {
|
91 |
-
return false;
|
92 |
-
}
|
93 |
}
|
94 |
|
95 |
}
|
85 |
return $lists;
|
86 |
} else {
|
87 |
// api request failed, get fallback data (with longer lifetime)
|
88 |
+
$cached_lists = (array) get_transient( $this->transient_name . '_fallback' );
|
|
|
|
|
|
|
|
|
89 |
}
|
90 |
|
91 |
}
|
includes/class-plugin.php
CHANGED
@@ -23,6 +23,11 @@ class MC4WP_Lite {
|
|
23 |
*/
|
24 |
private $api;
|
25 |
|
|
|
|
|
|
|
|
|
|
|
26 |
/**
|
27 |
* @var MC4WP_Lite The one and only true plugin instance
|
28 |
*/
|
@@ -56,6 +61,10 @@ class MC4WP_Lite {
|
|
56 |
*/
|
57 |
private function __construct() {
|
58 |
|
|
|
|
|
|
|
|
|
59 |
// checkboxes
|
60 |
$this->checkbox_manager = new MC4WP_Lite_Checkbox_Manager();
|
61 |
|
@@ -73,7 +82,7 @@ class MC4WP_Lite {
|
|
73 |
*/
|
74 |
public function init_form_listener() {
|
75 |
$listener = new MC4WP_Form_Listener();
|
76 |
-
$listener->listen( $
|
77 |
}
|
78 |
|
79 |
/**
|
23 |
*/
|
24 |
private $api;
|
25 |
|
26 |
+
/**
|
27 |
+
* @var array
|
28 |
+
*/
|
29 |
+
private $untinkered_request_global;
|
30 |
+
|
31 |
/**
|
32 |
* @var MC4WP_Lite The one and only true plugin instance
|
33 |
*/
|
61 |
*/
|
62 |
private function __construct() {
|
63 |
|
64 |
+
// store global `$_REQUEST` array locally, to prevent other plugins from messing with it (yes it happens....)
|
65 |
+
// todo: fix this properly (move to more specific $_POST?)
|
66 |
+
$this->untinkered_request_global = $_REQUEST;
|
67 |
+
|
68 |
// checkboxes
|
69 |
$this->checkbox_manager = new MC4WP_Lite_Checkbox_Manager();
|
70 |
|
82 |
*/
|
83 |
public function init_form_listener() {
|
84 |
$listener = new MC4WP_Form_Listener();
|
85 |
+
$listener->listen( $this->untinkered_request_global );
|
86 |
}
|
87 |
|
88 |
/**
|
includes/class-request.php
CHANGED
@@ -13,7 +13,7 @@ abstract class MC4WP_Request implements iMC4WP_Request {
|
|
13 |
/**
|
14 |
* @var MC4WP_Form
|
15 |
*/
|
16 |
-
|
17 |
|
18 |
/**
|
19 |
* @var string
|
@@ -40,6 +40,11 @@ abstract class MC4WP_Request implements iMC4WP_Request {
|
|
40 |
*/
|
41 |
public $user_data = array();
|
42 |
|
|
|
|
|
|
|
|
|
|
|
43 |
|
44 |
/**
|
45 |
* Constructor
|
@@ -59,6 +64,11 @@ abstract class MC4WP_Request implements iMC4WP_Request {
|
|
59 |
|
60 |
// get form
|
61 |
$this->form = MC4WP_Form::get( $this );
|
|
|
|
|
|
|
|
|
|
|
62 |
}
|
63 |
|
64 |
/**
|
@@ -79,7 +89,7 @@ abstract class MC4WP_Request implements iMC4WP_Request {
|
|
79 |
$key = substr( $key, 7 );
|
80 |
|
81 |
// if key starts with h_, change it to say "honeypot" (because field has dynamic name attribute)
|
82 |
-
if( strpos( $key, '
|
83 |
$key = 'honeypot';
|
84 |
}
|
85 |
|
@@ -128,7 +138,7 @@ abstract class MC4WP_Request implements iMC4WP_Request {
|
|
128 |
$value = array_map( array( $this, 'sanitize_deep' ), $value );
|
129 |
} elseif ( is_object($value) ) {
|
130 |
$vars = get_object_vars( $value );
|
131 |
-
foreach ($vars as $key
|
132 |
$value->{$key} = $this->sanitize_deep( $data );
|
133 |
}
|
134 |
}
|
@@ -271,23 +281,23 @@ abstract class MC4WP_Request implements iMC4WP_Request {
|
|
271 |
|
272 |
$lists = $this->form->settings['lists'];
|
273 |
|
274 |
-
// get lists from
|
275 |
-
if(
|
276 |
|
277 |
$lists = $this->internal_data['lists'];
|
278 |
|
279 |
// make sure lists is an array
|
280 |
if( ! is_array( $lists ) ) {
|
281 |
$lists = sanitize_text_field( $lists );
|
282 |
-
$lists =
|
283 |
}
|
284 |
|
285 |
}
|
286 |
|
287 |
// allow plugins to alter the lists to subscribe to
|
288 |
-
$lists = apply_filters( 'mc4wp_lists', $lists );
|
289 |
|
290 |
-
return
|
291 |
}
|
292 |
|
293 |
/**
|
13 |
/**
|
14 |
* @var MC4WP_Form
|
15 |
*/
|
16 |
+
public $form;
|
17 |
|
18 |
/**
|
19 |
* @var string
|
40 |
*/
|
41 |
public $user_data = array();
|
42 |
|
43 |
+
/**
|
44 |
+
* @var string
|
45 |
+
*/
|
46 |
+
public $http_referer = '';
|
47 |
+
|
48 |
|
49 |
/**
|
50 |
* Constructor
|
64 |
|
65 |
// get form
|
66 |
$this->form = MC4WP_Form::get( $this );
|
67 |
+
|
68 |
+
// get referer
|
69 |
+
if( ! empty( $_SERVER['HTTP_REFERER'] ) ) {
|
70 |
+
$this->http_referer = strip_tags( $_SERVER['HTTP_REFERER'] );
|
71 |
+
}
|
72 |
}
|
73 |
|
74 |
/**
|
89 |
$key = substr( $key, 7 );
|
90 |
|
91 |
// if key starts with h_, change it to say "honeypot" (because field has dynamic name attribute)
|
92 |
+
if( strpos( $key, 'ho_' ) === 0 ){
|
93 |
$key = 'honeypot';
|
94 |
}
|
95 |
|
138 |
$value = array_map( array( $this, 'sanitize_deep' ), $value );
|
139 |
} elseif ( is_object($value) ) {
|
140 |
$vars = get_object_vars( $value );
|
141 |
+
foreach ( $vars as $key => $data ) {
|
142 |
$value->{$key} = $this->sanitize_deep( $data );
|
143 |
}
|
144 |
}
|
281 |
|
282 |
$lists = $this->form->settings['lists'];
|
283 |
|
284 |
+
// get lists from request, if set.
|
285 |
+
if( ! empty( $this->internal_data['lists'] ) ) {
|
286 |
|
287 |
$lists = $this->internal_data['lists'];
|
288 |
|
289 |
// make sure lists is an array
|
290 |
if( ! is_array( $lists ) ) {
|
291 |
$lists = sanitize_text_field( $lists );
|
292 |
+
$lists = array_map( 'trim', explode( ',', $lists ) );
|
293 |
}
|
294 |
|
295 |
}
|
296 |
|
297 |
// allow plugins to alter the lists to subscribe to
|
298 |
+
$lists = (array) apply_filters( 'mc4wp_lists', $lists );
|
299 |
|
300 |
+
return $lists;
|
301 |
}
|
302 |
|
303 |
/**
|
includes/class-subscribe-request.php
CHANGED
@@ -10,56 +10,30 @@ if( ! defined( 'ABSPATH' ) ) {
|
|
10 |
class MC4WP_Subscribe_Request extends MC4WP_Request {
|
11 |
|
12 |
/**
|
13 |
-
* @var
|
14 |
*/
|
15 |
-
|
16 |
-
|
17 |
-
/**
|
18 |
-
* @var array
|
19 |
-
*/
|
20 |
-
private $unmapped_fields = array();
|
21 |
-
|
22 |
-
/**
|
23 |
-
* @var array
|
24 |
-
*/
|
25 |
-
private $global_fields = array();
|
26 |
|
27 |
/**
|
28 |
* Prepare data for MailChimp API request
|
29 |
* @return bool
|
30 |
*/
|
31 |
public function prepare() {
|
32 |
-
$this->guess_fields();
|
33 |
-
$
|
34 |
-
|
|
|
|
|
|
|
|
|
|
|
35 |
}
|
36 |
|
37 |
/**
|
38 |
* Try to guess the values of various fields, if not given.
|
39 |
*/
|
40 |
protected function guess_fields() {
|
41 |
-
|
42 |
-
$this->user_data = MC4WP_Tools::guess_merge_vars( $this->user_data );
|
43 |
-
}
|
44 |
-
|
45 |
-
/**
|
46 |
-
* Maps the received data to MailChimp lists
|
47 |
-
*
|
48 |
-
* @return array
|
49 |
-
*/
|
50 |
-
protected function map_data() {
|
51 |
-
|
52 |
-
$mapper = new MC4WP_Field_Mapper( $this->user_data, $this->get_lists() );
|
53 |
-
|
54 |
-
if( $mapper->success ) {
|
55 |
-
$this->list_fields_map = $mapper->get_list_fields_map();
|
56 |
-
$this->global_fields = $mapper->get_global_fields();
|
57 |
-
$this->unmapped_fields = $mapper->get_unmapped_fields();
|
58 |
-
} else {
|
59 |
-
$this->message_type = $mapper->get_error_code();
|
60 |
-
}
|
61 |
-
|
62 |
-
return $mapper->success;
|
63 |
}
|
64 |
|
65 |
/**
|
@@ -74,7 +48,7 @@ class MC4WP_Subscribe_Request extends MC4WP_Request {
|
|
74 |
$email_type = $this->get_email_type();
|
75 |
|
76 |
// loop through selected lists
|
77 |
-
foreach ( $this->
|
78 |
|
79 |
// allow plugins to alter merge vars for each individual list
|
80 |
$list_merge_vars = $this->get_list_merge_vars( $list_id, $list_field_data );
|
@@ -88,13 +62,8 @@ class MC4WP_Subscribe_Request extends MC4WP_Request {
|
|
88 |
|
89 |
// did we succeed in subscribing with the parsed data?
|
90 |
if( ! $result ) {
|
91 |
-
|
92 |
-
|
93 |
-
$this->message_type = 'already_subscribed';
|
94 |
-
} else {
|
95 |
-
$this->message_type = 'error';
|
96 |
-
$this->mailchimp_error = $api->get_error_message();
|
97 |
-
}
|
98 |
} else {
|
99 |
$this->message_type = 'subscribed';
|
100 |
|
@@ -120,11 +89,11 @@ class MC4WP_Subscribe_Request extends MC4WP_Request {
|
|
120 |
$merge_vars = array();
|
121 |
|
122 |
// add OPTIN_IP, we do this here as the user shouldn't be allowed to set this
|
123 |
-
$merge_vars['OPTIN_IP'] =
|
124 |
|
125 |
// make sure MC_LANGUAGE matches the requested format. Useful when getting the language from WPML etc.
|
126 |
-
if( isset( $this->global_fields['MC_LANGUAGE'] ) ) {
|
127 |
-
$merge_vars['MC_LANGUAGE'] = strtolower( substr( $this->global_fields['MC_LANGUAGE'], 0, 2 ) );
|
128 |
}
|
129 |
|
130 |
$merge_vars = array_merge( $merge_vars, $list_field_data );
|
@@ -137,9 +106,9 @@ class MC4WP_Subscribe_Request extends MC4WP_Request {
|
|
137 |
*
|
138 |
* Can be used to filter the merge variables sent to a given list
|
139 |
*/
|
140 |
-
$merge_vars = apply_filters( 'mc4wp_merge_vars', $merge_vars, 0, $list_id );
|
141 |
|
142 |
-
return
|
143 |
}
|
144 |
|
145 |
|
@@ -153,14 +122,14 @@ class MC4WP_Subscribe_Request extends MC4WP_Request {
|
|
153 |
$email_type = 'html';
|
154 |
|
155 |
// get email type from form
|
156 |
-
if(
|
157 |
-
$email_type = sanitize_text_field( $this->
|
158 |
}
|
159 |
|
160 |
// allow plugins to override this email type
|
161 |
-
$email_type = apply_filters( 'mc4wp_email_type', $email_type );
|
162 |
|
163 |
-
return
|
164 |
}
|
165 |
|
166 |
}
|
10 |
class MC4WP_Subscribe_Request extends MC4WP_Request {
|
11 |
|
12 |
/**
|
13 |
+
* @var MC4WP_Field_Map
|
14 |
*/
|
15 |
+
public $map;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
|
17 |
/**
|
18 |
* Prepare data for MailChimp API request
|
19 |
* @return bool
|
20 |
*/
|
21 |
public function prepare() {
|
22 |
+
$this->user_data = $this->guess_fields( $this->user_data );
|
23 |
+
$this->map = new MC4WP_Field_Map( $this->user_data, $this->get_lists() );
|
24 |
+
|
25 |
+
if( ! $this->map->success ) {
|
26 |
+
$this->message_type = $this->map->error_code;
|
27 |
+
}
|
28 |
+
|
29 |
+
return $this->map->success;
|
30 |
}
|
31 |
|
32 |
/**
|
33 |
* Try to guess the values of various fields, if not given.
|
34 |
*/
|
35 |
protected function guess_fields() {
|
36 |
+
return MC4WP_Tools::guess_merge_vars( $this->user_data );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
37 |
}
|
38 |
|
39 |
/**
|
48 |
$email_type = $this->get_email_type();
|
49 |
|
50 |
// loop through selected lists
|
51 |
+
foreach ( $this->map->list_fields as $list_id => $list_field_data ) {
|
52 |
|
53 |
// allow plugins to alter merge vars for each individual list
|
54 |
$list_merge_vars = $this->get_list_merge_vars( $list_id, $list_field_data );
|
62 |
|
63 |
// did we succeed in subscribing with the parsed data?
|
64 |
if( ! $result ) {
|
65 |
+
$this->message_type = ( $api->get_error_code() === 214 ) ? 'already_subscribed' : 'error';
|
66 |
+
$this->mailchimp_error = $api->get_error_message();
|
|
|
|
|
|
|
|
|
|
|
67 |
} else {
|
68 |
$this->message_type = 'subscribed';
|
69 |
|
89 |
$merge_vars = array();
|
90 |
|
91 |
// add OPTIN_IP, we do this here as the user shouldn't be allowed to set this
|
92 |
+
$merge_vars['OPTIN_IP'] = MC4WP_Tools::get_client_ip();
|
93 |
|
94 |
// make sure MC_LANGUAGE matches the requested format. Useful when getting the language from WPML etc.
|
95 |
+
if( isset( $this->map->global_fields['MC_LANGUAGE'] ) ) {
|
96 |
+
$merge_vars['MC_LANGUAGE'] = strtolower( substr( $this->map->global_fields['MC_LANGUAGE'], 0, 2 ) );
|
97 |
}
|
98 |
|
99 |
$merge_vars = array_merge( $merge_vars, $list_field_data );
|
106 |
*
|
107 |
* Can be used to filter the merge variables sent to a given list
|
108 |
*/
|
109 |
+
$merge_vars = (array) apply_filters( 'mc4wp_merge_vars', $merge_vars, 0, $list_id );
|
110 |
|
111 |
+
return $merge_vars;
|
112 |
}
|
113 |
|
114 |
|
122 |
$email_type = 'html';
|
123 |
|
124 |
// get email type from form
|
125 |
+
if( ! empty( $this->internal_data['email_type'] ) ) {
|
126 |
+
$email_type = sanitize_text_field( $this->internal_data['email_type'] );
|
127 |
}
|
128 |
|
129 |
// allow plugins to override this email type
|
130 |
+
$email_type = (string) apply_filters( 'mc4wp_email_type', $email_type );
|
131 |
|
132 |
+
return $email_type;
|
133 |
}
|
134 |
|
135 |
}
|
includes/functions/general.php
CHANGED
@@ -17,6 +17,7 @@ function mc4wp_get_options( $key = '' ) {
|
|
17 |
$defaults = array(
|
18 |
'general' => array(
|
19 |
'api_key' => '',
|
|
|
20 |
),
|
21 |
'checkbox' => array(
|
22 |
'label' => __( 'Sign me up for the newsletter!', 'mailchimp-for-wp' ),
|
17 |
$defaults = array(
|
18 |
'general' => array(
|
19 |
'api_key' => '',
|
20 |
+
'allow_usage_tracking' => 0,
|
21 |
),
|
22 |
'checkbox' => array(
|
23 |
'label' => __( 'Sign me up for the newsletter!', 'mailchimp-for-wp' ),
|
includes/integrations/class-integration.php
CHANGED
@@ -183,8 +183,8 @@ abstract class MC4WP_Integration {
|
|
183 |
$opts = $this->get_options();
|
184 |
$lists = $opts['lists'];
|
185 |
|
186 |
-
// get lists from
|
187 |
-
if(
|
188 |
|
189 |
$lists = $_POST['_mc4wp_lists'];
|
190 |
|
@@ -193,13 +193,13 @@ abstract class MC4WP_Integration {
|
|
193 |
|
194 |
// sanitize value
|
195 |
$lists = sanitize_text_field( $lists );
|
196 |
-
$lists =
|
197 |
}
|
198 |
|
199 |
}
|
200 |
|
201 |
-
// allow plugins to filter final
|
202 |
-
$lists = apply_filters( 'mc4wp_lists', $lists );
|
203 |
|
204 |
return $lists;
|
205 |
}
|
@@ -241,7 +241,7 @@ abstract class MC4WP_Integration {
|
|
241 |
|
242 |
// set ip address
|
243 |
if( ! isset( $merge_vars['OPTIN_IP'] ) ) {
|
244 |
-
$merge_vars['OPTIN_IP'] =
|
245 |
}
|
246 |
|
247 |
$result = false;
|
183 |
$opts = $this->get_options();
|
184 |
$lists = $opts['lists'];
|
185 |
|
186 |
+
// get lists from request, if set.
|
187 |
+
if( ! empty( $_POST['_mc4wp_lists'] ) ) {
|
188 |
|
189 |
$lists = $_POST['_mc4wp_lists'];
|
190 |
|
193 |
|
194 |
// sanitize value
|
195 |
$lists = sanitize_text_field( $lists );
|
196 |
+
$lists = array_map( 'trim', explode( ',', $lists ) );
|
197 |
}
|
198 |
|
199 |
}
|
200 |
|
201 |
+
// allow plugins to filter final lists value
|
202 |
+
$lists = (array) apply_filters( 'mc4wp_lists', $lists );
|
203 |
|
204 |
return $lists;
|
205 |
}
|
241 |
|
242 |
// set ip address
|
243 |
if( ! isset( $merge_vars['OPTIN_IP'] ) ) {
|
244 |
+
$merge_vars['OPTIN_IP'] = MC4WP_Tools::get_client_ip();
|
245 |
}
|
246 |
|
247 |
$result = false;
|
includes/views/api-settings.php
CHANGED
@@ -42,8 +42,24 @@ if( ! defined( 'MC4WP_LITE_VERSION' ) ) {
|
|
42 |
</table>
|
43 |
|
44 |
<?php submit_button(); ?>
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
45 |
</form>
|
46 |
|
|
|
|
|
47 |
<?php if($connected) { ?>
|
48 |
|
49 |
<h3 class="mc4wp-title"><?php _e( 'MailChimp Data' ,'mailchimp-for-wp' ); ?></h3>
|
42 |
</table>
|
43 |
|
44 |
<?php submit_button(); ?>
|
45 |
+
|
46 |
+
<hr />
|
47 |
+
|
48 |
+
<h3><?php _e( 'Usage Tracking', 'mailchimp-for-wp' ); ?></h3>
|
49 |
+
<p>
|
50 |
+
<label>
|
51 |
+
<?php /* hidden input field to send `0` when checkbox is not checked */ ?>
|
52 |
+
<input type="hidden" name="mc4wp_lite[allow_usage_tracking]" value="0" />
|
53 |
+
<input type="checkbox" name="mc4wp_lite[allow_usage_tracking]" value="1" <?php checked( $opts['allow_usage_tracking'], 1 ); ?>> <?php _e( ' Allow us to anonymously track how this plugin is used to help us make it better fit your needs. No sensitive data is tracked.', 'mailchimp-for-wp' ); ?>
|
54 |
+
</label>
|
55 |
+
</p>
|
56 |
+
|
57 |
+
<?php submit_button(); ?>
|
58 |
+
|
59 |
</form>
|
60 |
|
61 |
+
<hr />
|
62 |
+
|
63 |
<?php if($connected) { ?>
|
64 |
|
65 |
<h3 class="mc4wp-title"><?php _e( 'MailChimp Data' ,'mailchimp-for-wp' ); ?></h3>
|
includes/views/parts/admin-upgrade-to-pro.php
CHANGED
@@ -28,8 +28,11 @@ if( ! defined( 'MC4WP_LITE_VERSION' ) ) {
|
|
28 |
</li>
|
29 |
</ul>
|
30 |
<p>
|
31 |
-
<a class="button button-primary button-large" href="https://mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=upgrade-box"><?php _e( '
|
32 |
-
<a class="
|
|
|
|
|
|
|
33 |
</p>
|
34 |
</div>
|
35 |
<div class="mc4wp-box" id="mc4wp-optin-box">
|
28 |
</li>
|
29 |
</ul>
|
30 |
<p>
|
31 |
+
<a class="button button-primary button-large mc4wp-upgrade-button" href="https://mc4wp.com/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=upgrade-box"><?php _e( 'Show me more', 'mailchimp-for-wp' ); ?></a>
|
32 |
+
<a class="" href="https://mc4wp.com/demo/#utm_source=wp-plugin&utm_medium=mailchimp-for-wp&utm_campaign=upgrade-box"><?php _e( 'View Demo', 'mailchimp-for-wp' ); ?></a>
|
33 |
+
</p>
|
34 |
+
<p style="text-align: center; margin-bottom: 0;">
|
35 |
+
<small><?php _e( 'You can <strong>try with absolutely 0 risk</strong> using our refund policy.', 'mailchimp-for-wp' ); ?></small>
|
36 |
</p>
|
37 |
</div>
|
38 |
<div class="mc4wp-box" id="mc4wp-optin-box">
|
includes/views/parts/form-enhancements.js
CHANGED
@@ -6,7 +6,7 @@
|
|
6 |
}
|
7 |
|
8 |
function maybePrefixUrlField() {
|
9 |
-
if(this.value.indexOf('http') !== 0) {
|
10 |
this.value = "http://" + this.value;
|
11 |
}
|
12 |
}
|
@@ -17,7 +17,7 @@
|
|
17 |
|
18 |
/* add class on submit */
|
19 |
var b = f.querySelector('[type="submit"], [type="image"]');
|
20 |
-
if(b
|
21 |
if(b.addEventListener) {
|
22 |
b.addEventListener('click', addSubmittedClassToFormContainer);
|
23 |
} else {
|
@@ -27,7 +27,7 @@
|
|
27 |
|
28 |
/* better URL fields */
|
29 |
var urlFields = f.querySelectorAll('input[type="url"]');
|
30 |
-
if( urlFields.length ) {
|
31 |
for( var j=0; j < urlFields.length; j++ ) {
|
32 |
if(urlFields[j].addEventListener) {
|
33 |
urlFields[j].addEventListener('blur', maybePrefixUrlField);
|
6 |
}
|
7 |
|
8 |
function maybePrefixUrlField() {
|
9 |
+
if(this.value.trim() !== '' && this.value.indexOf('http') !== 0) {
|
10 |
this.value = "http://" + this.value;
|
11 |
}
|
12 |
}
|
17 |
|
18 |
/* add class on submit */
|
19 |
var b = f.querySelector('[type="submit"], [type="image"]');
|
20 |
+
if( b ) {
|
21 |
if(b.addEventListener) {
|
22 |
b.addEventListener('click', addSubmittedClassToFormContainer);
|
23 |
} else {
|
27 |
|
28 |
/* better URL fields */
|
29 |
var urlFields = f.querySelectorAll('input[type="url"]');
|
30 |
+
if( urlFields && urlFields.length > 0 ) {
|
31 |
for( var j=0; j < urlFields.length; j++ ) {
|
32 |
if(urlFields[j].addEventListener) {
|
33 |
urlFields[j].addEventListener('blur', maybePrefixUrlField);
|
languages/mailchimp-for-wp-ca_ES.mo
CHANGED
Binary file
|
languages/mailchimp-for-wp-ca_ES.po
CHANGED
@@ -7,7 +7,7 @@ msgstr ""
|
|
7 |
"Project-Id-Version: MailChimp for WordPress\n"
|
8 |
"Report-Msgid-Bugs-To: http://wordpress.org/support/plugin/mailchimp-for-wp\n"
|
9 |
"POT-Creation-Date: 2015-05-26 14:41:46+00:00\n"
|
10 |
-
"PO-Revision-Date: 2015-09-
|
11 |
"Last-Translator: Xavier Gimeno Torrent\n"
|
12 |
"Language-Team: Catalan (Spain) (http://www.transifex.com/ibericode/mailchimp-for-wordpress/language/ca_ES/)\n"
|
13 |
"MIME-Version: 1.0\n"
|
@@ -61,7 +61,7 @@ msgstr "Caselles de verificació"
|
|
61 |
#: mailchimp-for-wordpress-pro/includes/admin/class-admin.php:512
|
62 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:91
|
63 |
msgid "Form Settings"
|
64 |
-
msgstr "
|
65 |
|
66 |
#: mailchimp-for-wordpress/includes/admin/class-admin.php:192
|
67 |
#: mailchimp-for-wordpress-pro/includes/admin/class-admin.php:513
|
@@ -72,7 +72,7 @@ msgstr "Formularis"
|
|
72 |
#: mailchimp-for-wordpress/includes/admin/class-admin.php:196
|
73 |
#: mailchimp-for-wordpress/includes/admin/class-admin.php:197
|
74 |
msgid "Upgrade to Pro"
|
75 |
-
msgstr "
|
76 |
|
77 |
#: mailchimp-for-wordpress/includes/admin/class-admin.php:283
|
78 |
msgid "This option is only available in MailChimp for WordPress Pro."
|
@@ -160,7 +160,7 @@ msgstr "Verificació de %s"
|
|
160 |
msgid ""
|
161 |
"The plugin can only fetch a maximum of 100 lists from MailChimp, only your "
|
162 |
"first 100 lists are shown."
|
163 |
-
msgstr "Aquest plugin pot obtenir un màxim de 100 llistes de
|
164 |
|
165 |
#: mailchimp-for-wordpress/includes/admin/class-admin.php:370
|
166 |
#: mailchimp-for-wordpress-pro/includes/admin/class-admin.php:719
|
@@ -194,7 +194,7 @@ msgstr "Títol:"
|
|
194 |
msgid ""
|
195 |
"You can edit your sign-up form in the <a href=\"%s\">MailChimp for WordPress"
|
196 |
" form settings</a>."
|
197 |
-
msgstr "Pots editar el teu formulari de subscripció a la <a href=\"%s\">
|
198 |
|
199 |
#: mailchimp-for-wordpress/includes/functions/general.php:15
|
200 |
#: mailchimp-for-wordpress-pro/includes/class-mailchimp.php:135
|
@@ -223,7 +223,7 @@ msgstr "Subscriu-me a la llista de correu!"
|
|
223 |
msgid ""
|
224 |
"Thank you, your sign-up request was successful! Please check your e-mail "
|
225 |
"inbox."
|
226 |
-
msgstr "Gràcies, la teva sol·licitud de subscripció s'ha completat! Sisplau,
|
227 |
|
228 |
#: mailchimp-for-wordpress/includes/functions/general.php:45
|
229 |
#: mailchimp-for-wordpress-pro/includes/config/default-options.php:35
|
@@ -238,7 +238,7 @@ msgstr "Sisplau, introdueix una adreça de correu electrònic vàlida."
|
|
238 |
#: mailchimp-for-wordpress/includes/functions/general.php:47
|
239 |
#: mailchimp-for-wordpress-pro/includes/config/default-options.php:37
|
240 |
msgid "Given email address is already subscribed, thank you!"
|
241 |
-
msgstr "Gràcies, però l'adreça de correu electrònic facilitada ja
|
242 |
|
243 |
#: mailchimp-for-wordpress/includes/functions/general.php:48
|
244 |
#: mailchimp-for-wordpress-pro/includes/config/default-options.php:38
|
@@ -253,7 +253,7 @@ msgstr "Sisplau omple els camps sol·licitats."
|
|
253 |
#: mailchimp-for-wordpress/includes/functions/general.php:50
|
254 |
#: mailchimp-for-wordpress-pro/includes/config/default-options.php:40
|
255 |
msgid "You were successfully unsubscribed."
|
256 |
-
msgstr "Has estat
|
257 |
|
258 |
#: mailchimp-for-wordpress/includes/functions/general.php:51
|
259 |
#: mailchimp-for-wordpress-pro/includes/config/default-options.php:41
|
@@ -342,7 +342,7 @@ msgstr "MailChimp per a WordPress - Error"
|
|
342 |
msgid ""
|
343 |
"Please select a list to subscribe to in the <a href=\"%s\">checkbox "
|
344 |
"settings</a>."
|
345 |
-
msgstr "Sisplau selecciona una llista de subscripció a la <a href=\"%s\">
|
346 |
|
347 |
#: mailchimp-for-wordpress/includes/integrations/class-integration.php:237
|
348 |
#: mailchimp-for-wordpress/includes/integrations/class-integration.php:308
|
@@ -356,7 +356,7 @@ msgstr "Aquest missatge només és visible als administradors per a fins de corr
|
|
356 |
msgid ""
|
357 |
"The MailChimp server returned the following error message as a response to "
|
358 |
"our sign-up request:"
|
359 |
-
msgstr "El servidor de MailChimp
|
360 |
|
361 |
#: mailchimp-for-wordpress/includes/integrations/class-integration.php:303
|
362 |
#: mailchimp-for-wordpress-pro/includes/integrations/class-integration.php:303
|
@@ -425,7 +425,7 @@ msgid ""
|
|
425 |
"The table below shows your MailChimp lists data. If you applied changes to "
|
426 |
"your MailChimp lists, please use the following button to renew your cached "
|
427 |
"data."
|
428 |
-
msgstr "La següent taula mostra les dades de les teves llistes de MailChimp. Si has efectuat
|
429 |
|
430 |
#: mailchimp-for-wordpress/includes/views/api-settings.php:54
|
431 |
#: mailchimp-for-wordpress/includes/views/api-settings.php:125
|
@@ -436,7 +436,7 @@ msgstr "Actualitzar les llistes de MailChimp"
|
|
436 |
|
437 |
#: mailchimp-for-wordpress/includes/views/api-settings.php:112
|
438 |
msgid "No lists were found in your MailChimp account"
|
439 |
-
msgstr "No s'ha trobat cap llista al
|
440 |
|
441 |
#: mailchimp-for-wordpress/includes/views/checkbox-settings.php:16
|
442 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:14
|
@@ -448,14 +448,14 @@ msgstr "Per emprar caselles de verificació en el registre, selecciona com a mí
|
|
448 |
#: mailchimp-for-wordpress/includes/views/checkbox-settings.php:21
|
449 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:21
|
450 |
msgid "MailChimp settings for checkboxes"
|
451 |
-
msgstr "Ajustos de MailChimp per a caselles de verificació"
|
452 |
|
453 |
#: mailchimp-for-wordpress/includes/views/checkbox-settings.php:25
|
454 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:26
|
455 |
msgid ""
|
456 |
"If you want to use sign-up checkboxes, select at least one MailChimp list to"
|
457 |
" subscribe people to."
|
458 |
-
msgstr "Si vols emprar caselles de verificació en el registre, selecciona com a mínim una llista de MailChimp a què subscriure'
|
459 |
|
460 |
#: mailchimp-for-wordpress/includes/views/checkbox-settings.php:31
|
461 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:34
|
@@ -467,7 +467,7 @@ msgstr "Llistes de MailChimp"
|
|
467 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/required-form-settings.php:17
|
468 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:38
|
469 |
msgid "No lists found, <a href=\"%s\">are you connected to MailChimp</a>?"
|
470 |
-
msgstr "No s'han trobat llistes, ¿<a href=\"%s\">
|
471 |
|
472 |
#: mailchimp-for-wordpress/includes/views/checkbox-settings.php:42
|
473 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:45
|
@@ -507,7 +507,7 @@ msgstr "Afegir caselles de verificació en aquests formularis"
|
|
507 |
#: mailchimp-for-wordpress/includes/views/checkbox-settings.php:79
|
508 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:92
|
509 |
msgid "Selecting a form will automatically add the sign-up checkbox to it."
|
510 |
-
msgstr "Al seleccionar un formulari s'afegirà automàticament la casella de verificació
|
511 |
|
512 |
#: mailchimp-for-wordpress/includes/views/checkbox-settings.php:83
|
513 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:105
|
@@ -554,7 +554,7 @@ msgstr "Després de la informació extra"
|
|
554 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:129
|
555 |
msgid ""
|
556 |
"Choose the position for the checkbox in your WooCommerce checkout form."
|
557 |
-
msgstr "Escull la posició de les caselles de verificació en el
|
558 |
|
559 |
#: mailchimp-for-wordpress/includes/views/form-settings.php:15
|
560 |
msgid ""
|
@@ -625,7 +625,7 @@ msgstr "Si vols carregar els fulls d'estils CSS per defecte, selecciona \"Estils
|
|
625 |
#: mailchimp-for-wordpress/includes/views/form-settings.php:45
|
626 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/required-form-settings.php:14
|
627 |
msgid "Lists this form subscribes to"
|
628 |
-
msgstr "Les llistes d'aquest formulari
|
629 |
|
630 |
#: mailchimp-for-wordpress/includes/views/form-settings.php:63
|
631 |
msgid ""
|
@@ -862,7 +862,7 @@ msgstr "Pots afegir regles CSS al full d'estils del teu tema emprant l'<a href=\
|
|
862 |
msgid ""
|
863 |
"The <a href=\"%s\" target=\"_blank\">plugin FAQ</a> lists the various CSS "
|
864 |
"selectors you can use to target the different form elements."
|
865 |
-
msgstr "A les <a href=\"%s\" target=\"_blank\">
|
866 |
|
867 |
#: mailchimp-for-wordpress/includes/views/form-settings.php:270
|
868 |
msgid ""
|
@@ -933,7 +933,7 @@ msgstr "Es substitueix per l'hora actual (hh:mm:ss per exemple: %s)"
|
|
933 |
msgid ""
|
934 |
"Replaced with the logged in user's email (or nothing, if there is no logged "
|
935 |
"in user)"
|
936 |
-
msgstr "Es substitueix per l'adreça de correu electrònic de l'usuari que ha
|
937 |
|
938 |
#: mailchimp-for-wordpress/includes/views/form-settings.php:320
|
939 |
#: mailchimp-for-wordpress-pro/includes/views/parts/admin-text-variables.php:54
|
@@ -967,7 +967,7 @@ msgstr "Afegir un nou camp"
|
|
967 |
|
968 |
#: mailchimp-for-wordpress/includes/views/parts/admin-field-wizard.php:12
|
969 |
msgid "Use the tool below to generate the HTML for your form fields."
|
970 |
-
msgstr "Utilitza la següent eina per a generar el codi HTML
|
971 |
|
972 |
#: mailchimp-for-wordpress/includes/views/parts/admin-field-wizard.php:15
|
973 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/required-form-settings.php:35
|
@@ -976,7 +976,7 @@ msgstr "Selecciona el camp de MailChimp ..."
|
|
976 |
|
977 |
#: mailchimp-for-wordpress/includes/views/parts/admin-field-wizard.php:19
|
978 |
msgid "Submit Button"
|
979 |
-
msgstr "
|
980 |
|
981 |
#: mailchimp-for-wordpress/includes/views/parts/admin-field-wizard.php:20
|
982 |
msgid "Subscribe / unsubscribe choice"
|
@@ -995,7 +995,7 @@ msgstr "Etiqueta"
|
|
995 |
#: mailchimp-for-wordpress/includes/views/parts/admin-field-wizard.php:34
|
996 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/required-form-settings.php:54
|
997 |
msgid "Placeholder"
|
998 |
-
msgstr "
|
999 |
|
1000 |
#: mailchimp-for-wordpress/includes/views/parts/admin-field-wizard.php:44
|
1001 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/required-form-settings.php:64
|
@@ -1086,7 +1086,7 @@ msgstr "Valora el plugin al teu bloc i enllaça'ns a <a href=\"%s\">la pàgina d
|
|
1086 |
|
1087 |
#: mailchimp-for-wordpress/includes/views/parts/admin-need-support.php:19
|
1088 |
msgid "There is an <a href=\"%s\">affiliate program</a> as well."
|
1089 |
-
msgstr "També tenim un <a href=\"%s\">programa d'afiliats
|
1090 |
|
1091 |
#: mailchimp-for-wordpress/includes/views/parts/admin-need-support.php:20
|
1092 |
msgid "Vote \"works\" on the WordPress.org plugin page"
|
@@ -1168,7 +1168,7 @@ msgstr "Formulari guardat."
|
|
1168 |
|
1169 |
#: mailchimp-for-wordpress-pro/includes/admin/class-admin.php:365
|
1170 |
msgid "Optional Settings"
|
1171 |
-
msgstr "Propietats
|
1172 |
|
1173 |
#: mailchimp-for-wordpress-pro/includes/admin/class-admin.php:500
|
1174 |
msgid "MailChimp & Plugin License Settings"
|
@@ -1194,7 +1194,7 @@ msgstr "Sisplau, assegura't que el plugin està connectat a MailChimp. <a href=\
|
|
1194 |
msgid ""
|
1195 |
"You disabled logging using the %s filter. Re-enable it to use the Reports "
|
1196 |
"page."
|
1197 |
-
msgstr "Has deshabilitat
|
1198 |
|
1199 |
#: mailchimp-for-wordpress-pro/includes/admin/class-admin.php:840
|
1200 |
msgid ""
|
@@ -1211,7 +1211,7 @@ msgstr "La data final no pot ser anterior a la data inicial"
|
|
1211 |
msgid ""
|
1212 |
"Couldn't create the stylesheet. Manually add the generated CSS to your theme"
|
1213 |
" stylesheet or use a plugin like <em>%s</em>."
|
1214 |
-
msgstr "No s'ha pogut crear el full d'estils. Afegeix manualment el CSS generat al full d'
|
1215 |
|
1216 |
#: mailchimp-for-wordpress-pro/includes/admin/class-styles-builder.php:437
|
1217 |
msgid "%sShow generated CSS%s"
|
@@ -1223,13 +1223,13 @@ msgstr "S'ha creat el %full d'estils CSS%s."
|
|
1223 |
|
1224 |
#: mailchimp-for-wordpress-pro/includes/class-form-manager.php:263
|
1225 |
msgid "<strong>Error:</strong> Please specify a form ID. Example: %s."
|
1226 |
-
msgstr "<strong>Error:</
|
1227 |
|
1228 |
#: mailchimp-for-wordpress-pro/includes/class-form-manager.php:278
|
1229 |
msgid ""
|
1230 |
"<strong>Error:</strong> Sign-up form not found. Please check if you used the"
|
1231 |
" correct form ID."
|
1232 |
-
msgstr "<strong>Error:</
|
1233 |
|
1234 |
#: mailchimp-for-wordpress-pro/includes/class-mailchimp.php:140
|
1235 |
msgid "IP Address"
|
@@ -1273,13 +1273,13 @@ msgstr "Formulari MailChimp per a WordPress"
|
|
1273 |
|
1274 |
#: mailchimp-for-wordpress-pro/includes/class-widget.php:21
|
1275 |
msgid "Displays one of your MailChimp for WordPress sign-up forms"
|
1276 |
-
msgstr "Mostra un dels teus formularis MailChimp per a WordPress"
|
1277 |
|
1278 |
#: mailchimp-for-wordpress-pro/includes/class-widget.php:43
|
1279 |
msgid ""
|
1280 |
"Please select the sign-up form you'd like to show here in the <a "
|
1281 |
"href=\"%s\">widget settings</a>."
|
1282 |
-
msgstr "
|
1283 |
|
1284 |
#: mailchimp-for-wordpress-pro/includes/class-widget.php:86
|
1285 |
msgid "Form:"
|
@@ -1291,7 +1291,7 @@ msgstr "Selecciona el formulari a mostrar"
|
|
1291 |
|
1292 |
#: mailchimp-for-wordpress-pro/includes/class-widget.php:96
|
1293 |
msgid "You don't have any sign-up forms. <a href=\"%s\">Create one now.</a>"
|
1294 |
-
msgstr "No tens cap formulari de registre. <a href=\"%s\">
|
1295 |
|
1296 |
#: mailchimp-for-wordpress-pro/includes/config/default-options.php:34
|
1297 |
msgid ""
|
@@ -1337,11 +1337,11 @@ msgstr "Has arribat al límit de les teves activacions. Has de <a href=\"%s\">re
|
|
1337 |
msgid ""
|
1338 |
"Your license has expired. You must <a href=\"%s\">renew your license</a> if "
|
1339 |
"you want to use it again."
|
1340 |
-
msgstr "La teva llicència ha caducat. Has de <a href=\"%s\">renovar la teva llicència</a> si la vols tornar a
|
1341 |
|
1342 |
#: mailchimp-for-wordpress-pro/includes/license/class-license-manager.php:232
|
1343 |
msgid "Failed to activate your license, your license key seems to be invalid."
|
1344 |
-
msgstr "
|
1345 |
|
1346 |
#: mailchimp-for-wordpress-pro/includes/license/class-license-manager.php:257
|
1347 |
msgid "Your %s license has been deactivated."
|
@@ -1371,7 +1371,7 @@ msgstr "%s: Configuració de llicència"
|
|
1371 |
msgid ""
|
1372 |
"%s is network activated, please contact your site administrator to manage "
|
1373 |
"the license."
|
1374 |
-
msgstr "%s
|
1375 |
|
1376 |
#: mailchimp-for-wordpress-pro/includes/license/class-update-manager.php:64
|
1377 |
msgid ""
|
@@ -1506,89 +1506,89 @@ msgstr "Data"
|
|
1506 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:79
|
1507 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:153
|
1508 |
msgid "Success"
|
1509 |
-
msgstr ""
|
1510 |
|
1511 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:80
|
1512 |
msgid "Type"
|
1513 |
-
msgstr ""
|
1514 |
|
1515 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:81
|
1516 |
msgid "Source"
|
1517 |
-
msgstr ""
|
1518 |
|
1519 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:82
|
1520 |
msgid "Subscribed"
|
1521 |
-
msgstr ""
|
1522 |
|
1523 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:150
|
1524 |
msgid "Log items deleted."
|
1525 |
-
msgstr ""
|
1526 |
|
1527 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:324
|
1528 |
msgid "Registration"
|
1529 |
-
msgstr ""
|
1530 |
|
1531 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:333
|
1532 |
msgid "Top Bar"
|
1533 |
-
msgstr ""
|
1534 |
|
1535 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:341
|
1536 |
msgid "MultiSite registration"
|
1537 |
-
msgstr ""
|
1538 |
|
1539 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:354
|
1540 |
msgid "Contact Form 7"
|
1541 |
-
msgstr ""
|
1542 |
|
1543 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:358
|
1544 |
msgid "bbPress: New Topic"
|
1545 |
-
msgstr ""
|
1546 |
|
1547 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:362
|
1548 |
msgid "bbPress: New Reply"
|
1549 |
-
msgstr ""
|
1550 |
|
1551 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:368
|
1552 |
msgid "Other Form"
|
1553 |
-
msgstr ""
|
1554 |
|
1555 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:434
|
1556 |
msgid "No subscribe requests found."
|
1557 |
-
msgstr ""
|
1558 |
|
1559 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:456
|
1560 |
msgid "All"
|
1561 |
-
msgstr ""
|
1562 |
|
1563 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:468
|
1564 |
msgid "Checkbox"
|
1565 |
-
msgstr ""
|
1566 |
|
1567 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:529
|
1568 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:543
|
1569 |
msgid "Order"
|
1570 |
-
msgstr ""
|
1571 |
|
1572 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:532
|
1573 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:546
|
1574 |
msgid "Checkout"
|
1575 |
-
msgstr ""
|
1576 |
|
1577 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:558
|
1578 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:565
|
1579 |
msgid "Comment"
|
1580 |
-
msgstr ""
|
1581 |
|
1582 |
#: mailchimp-for-wordpress-pro/includes/tables/class-log-table.php:558
|
1583 |
msgid "deleted"
|
1584 |
-
msgstr ""
|
1585 |
|
1586 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:8
|
1587 |
msgid ""
|
1588 |
"Any settings you specify here will override the <a href=\"%s\">general form "
|
1589 |
"settings</a>. If no setting is specified, the corresponding general setting "
|
1590 |
"value will be used."
|
1591 |
-
msgstr ""
|
1592 |
|
1593 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:25
|
1594 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:45
|
@@ -1597,503 +1597,503 @@ msgstr ""
|
|
1597 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:106
|
1598 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:124
|
1599 |
msgid "Inherit"
|
1600 |
-
msgstr ""
|
1601 |
|
1602 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:137
|
1603 |
msgid "Send an email copy of the form data?"
|
1604 |
-
msgstr ""
|
1605 |
|
1606 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:141
|
1607 |
msgid ""
|
1608 |
"Tick \"yes\" if you want to receive an email with the form data for every "
|
1609 |
"sign-up request."
|
1610 |
-
msgstr ""
|
1611 |
|
1612 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:144
|
1613 |
msgid "Send the copy to this email:"
|
1614 |
-
msgstr ""
|
1615 |
|
1616 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:150
|
1617 |
msgid "Messages"
|
1618 |
-
msgstr ""
|
1619 |
|
1620 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/optional-form-settings.php:190
|
1621 |
msgid "Other errors"
|
1622 |
-
msgstr ""
|
1623 |
|
1624 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/required-form-settings.php:39
|
1625 |
msgid "Submit button"
|
1626 |
-
msgstr ""
|
1627 |
|
1628 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/required-form-settings.php:41
|
1629 |
msgid "Subscribe / unsubscribe action"
|
1630 |
-
msgstr ""
|
1631 |
|
1632 |
#: mailchimp-for-wordpress-pro/includes/views/metaboxes/required-form-settings.php:90
|
1633 |
msgid "Form usage"
|
1634 |
-
msgstr ""
|
1635 |
|
1636 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:78
|
1637 |
msgid ""
|
1638 |
"Select \"yes\" if you want to update existing subscribers with the data that"
|
1639 |
" is sent."
|
1640 |
-
msgstr ""
|
1641 |
|
1642 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:100
|
1643 |
msgid ""
|
1644 |
"Use %s in your Contact Form 7 mark-up to add a sign-up checkbox to your CF7 "
|
1645 |
"forms."
|
1646 |
-
msgstr ""
|
1647 |
|
1648 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:136
|
1649 |
msgid "Custom label texts"
|
1650 |
-
msgstr ""
|
1651 |
|
1652 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-checkbox-settings.php:137
|
1653 |
msgid ""
|
1654 |
"Override the default checkbox label text for any given checkbox using the "
|
1655 |
"fields below."
|
1656 |
-
msgstr ""
|
1657 |
|
1658 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-form-settings.php:13
|
1659 |
msgid "Forms & Settings"
|
1660 |
-
msgstr ""
|
1661 |
|
1662 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-form-settings.php:14
|
1663 |
msgid "CSS Styles Builder"
|
1664 |
-
msgstr ""
|
1665 |
|
1666 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-general-settings.php:10
|
1667 |
msgid "License & API Settings"
|
1668 |
-
msgstr ""
|
1669 |
|
1670 |
#: mailchimp-for-wordpress-pro/includes/views/pages/admin-general-settings.php:113
|
1671 |
msgid "No lists were found in your MailChimp account."
|
1672 |
-
msgstr ""
|
1673 |
|
1674 |
#: mailchimp-for-wordpress-pro/includes/views/parts/admin-footer.php:10
|
1675 |
msgid ""
|
1676 |
"Need help? Have a look at the <a href=\"%s\">plugin documentation</a> or "
|
1677 |
"email us directly at <a href=\"%s\">support@mc4wp.com</a>."
|
1678 |
-
msgstr ""
|
1679 |
|
1680 |
#: mailchimp-for-wordpress-pro/includes/views/parts/admin-footer.php:11
|
1681 |
msgid ""
|
1682 |
"Please use the same email address as you used when purchasing the plugin."
|
1683 |
-
msgstr ""
|
1684 |
|
1685 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:11
|
1686 |
msgid "Use the fields below to create custom styling rules for your forms."
|
1687 |
-
msgstr ""
|
1688 |
|
1689 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:16
|
1690 |
msgid ""
|
1691 |
"Tip: have a look at our <a href=\"%s\">knowledge base</a> articles on <a "
|
1692 |
"href=\"%s\">creating an inline form</a> or <a href=\"%s\">styling your "
|
1693 |
"form</a> in general."
|
1694 |
-
msgstr ""
|
1695 |
|
1696 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:22
|
1697 |
msgid ""
|
1698 |
"You are not loading your custom stylesheet at this moment. To apply these "
|
1699 |
"styles on your site, select \"load custom form styles\" in the <a "
|
1700 |
"href=\"%s\">MailChimp for WordPress form settings</a>."
|
1701 |
-
msgstr ""
|
1702 |
|
1703 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:30
|
1704 |
msgid "Select form to build styles for:"
|
1705 |
-
msgstr ""
|
1706 |
|
1707 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:41
|
1708 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:285
|
1709 |
msgid "Create at least one form first."
|
1710 |
-
msgstr ""
|
1711 |
|
1712 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:57
|
1713 |
msgid "You need to have JavaScript enabled to see a preview of your form."
|
1714 |
-
msgstr ""
|
1715 |
|
1716 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:62
|
1717 |
msgid "Form container style"
|
1718 |
-
msgstr ""
|
1719 |
|
1720 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:66
|
1721 |
msgid "Form width"
|
1722 |
-
msgstr ""
|
1723 |
|
1724 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:66
|
1725 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:118
|
1726 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:160
|
1727 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:202
|
1728 |
msgid "px or %"
|
1729 |
-
msgstr ""
|
1730 |
|
1731 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:70
|
1732 |
msgid "Text alignment"
|
1733 |
-
msgstr ""
|
1734 |
|
1735 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:73
|
1736 |
msgid "Choose alignment"
|
1737 |
-
msgstr ""
|
1738 |
|
1739 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:74
|
1740 |
msgid "Left"
|
1741 |
-
msgstr ""
|
1742 |
|
1743 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:75
|
1744 |
msgid "Center"
|
1745 |
-
msgstr ""
|
1746 |
|
1747 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:76
|
1748 |
msgid "Right"
|
1749 |
-
msgstr ""
|
1750 |
|
1751 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:81
|
1752 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:210
|
1753 |
msgid "Background color"
|
1754 |
-
msgstr ""
|
1755 |
|
1756 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:83
|
1757 |
msgid "Padding"
|
1758 |
-
msgstr ""
|
1759 |
|
1760 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:89
|
1761 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:168
|
1762 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:219
|
1763 |
msgid "Border color"
|
1764 |
-
msgstr ""
|
1765 |
|
1766 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:91
|
1767 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:170
|
1768 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:215
|
1769 |
msgid "Border width"
|
1770 |
-
msgstr ""
|
1771 |
|
1772 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:95
|
1773 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:126
|
1774 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:228
|
1775 |
msgid "Text color"
|
1776 |
-
msgstr ""
|
1777 |
|
1778 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:97
|
1779 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:128
|
1780 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:230
|
1781 |
msgid "Text size"
|
1782 |
-
msgstr ""
|
1783 |
|
1784 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:101
|
1785 |
msgid "Background image"
|
1786 |
-
msgstr ""
|
1787 |
|
1788 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:114
|
1789 |
msgid "Label styles"
|
1790 |
-
msgstr ""
|
1791 |
|
1792 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:118
|
1793 |
msgid "Label width"
|
1794 |
-
msgstr ""
|
1795 |
|
1796 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:132
|
1797 |
msgid "Text style"
|
1798 |
-
msgstr ""
|
1799 |
|
1800 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:135
|
1801 |
msgid "Choose text style.."
|
1802 |
-
msgstr ""
|
1803 |
|
1804 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:136
|
1805 |
msgid "Normal"
|
1806 |
-
msgstr ""
|
1807 |
|
1808 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:137
|
1809 |
msgid "Bold"
|
1810 |
-
msgstr ""
|
1811 |
|
1812 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:138
|
1813 |
msgid "Italic"
|
1814 |
-
msgstr ""
|
1815 |
|
1816 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:139
|
1817 |
msgid "Bold & Italic"
|
1818 |
-
msgstr ""
|
1819 |
|
1820 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:142
|
1821 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:174
|
1822 |
msgid "Display"
|
1823 |
-
msgstr ""
|
1824 |
|
1825 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:146
|
1826 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:178
|
1827 |
msgid "Inline"
|
1828 |
-
msgstr ""
|
1829 |
|
1830 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:147
|
1831 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:179
|
1832 |
msgid "New line"
|
1833 |
-
msgstr ""
|
1834 |
|
1835 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:156
|
1836 |
msgid "Field styles"
|
1837 |
-
msgstr ""
|
1838 |
|
1839 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:160
|
1840 |
msgid "Field width"
|
1841 |
-
msgstr ""
|
1842 |
|
1843 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:164
|
1844 |
msgid "Field height"
|
1845 |
-
msgstr ""
|
1846 |
|
1847 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:182
|
1848 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:224
|
1849 |
msgid "Border radius"
|
1850 |
-
msgstr ""
|
1851 |
|
1852 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:186
|
1853 |
msgid "Focus outline"
|
1854 |
-
msgstr ""
|
1855 |
|
1856 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:198
|
1857 |
msgid "Button styles"
|
1858 |
-
msgstr ""
|
1859 |
|
1860 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:202
|
1861 |
msgid "Button width"
|
1862 |
-
msgstr ""
|
1863 |
|
1864 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:206
|
1865 |
msgid "Button height"
|
1866 |
-
msgstr ""
|
1867 |
|
1868 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:238
|
1869 |
msgid "Error and success messages"
|
1870 |
-
msgstr ""
|
1871 |
|
1872 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:242
|
1873 |
msgid "Success text color"
|
1874 |
-
msgstr ""
|
1875 |
|
1876 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:244
|
1877 |
msgid "Error text color"
|
1878 |
-
msgstr ""
|
1879 |
|
1880 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:252
|
1881 |
msgid "Advanced"
|
1882 |
-
msgstr ""
|
1883 |
|
1884 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:256
|
1885 |
msgid "CSS Selector Prefix"
|
1886 |
-
msgstr ""
|
1887 |
|
1888 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:258
|
1889 |
msgid ""
|
1890 |
"Use this to create a more specific (and thus more \"important\") CSS "
|
1891 |
"selector."
|
1892 |
-
msgstr ""
|
1893 |
|
1894 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:261
|
1895 |
msgid "Manual CSS"
|
1896 |
-
msgstr ""
|
1897 |
|
1898 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:261
|
1899 |
msgid ""
|
1900 |
"The CSS rules you enter here will be appended to the custom stylesheet."
|
1901 |
-
msgstr ""
|
1902 |
|
1903 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:269
|
1904 |
msgid "Copy styles from other form"
|
1905 |
-
msgstr ""
|
1906 |
|
1907 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:283
|
1908 |
msgid "Copy Styles"
|
1909 |
-
msgstr ""
|
1910 |
|
1911 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:283
|
1912 |
msgid ""
|
1913 |
"Are you sure you want to copy form styles from another form? This will "
|
1914 |
"overwrite current styles for this form."
|
1915 |
-
msgstr ""
|
1916 |
|
1917 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:298
|
1918 |
msgid "Are you sure you want to delete all custom styles for this form?"
|
1919 |
-
msgstr ""
|
1920 |
|
1921 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:298
|
1922 |
msgid "Delete Form Styles"
|
1923 |
-
msgstr ""
|
1924 |
|
1925 |
#: mailchimp-for-wordpress-pro/includes/views/tabs/admin-forms-css-builder.php:305
|
1926 |
msgid "Form preview"
|
1927 |
-
msgstr ""
|
1928 |
|
1929 |
#: mailchimp-for-wo |