Email Subscribers & Newsletters - Version 4.1.2.1

Version Description

(30.05.2019) = * Fix: Unable to use sync functionality

Download this release

Release Info

Developer Icegram
Plugin Icon 128x128 Email Subscribers & Newsletters
Version 4.1.2.1
Comparing to
See all releases

Code changes from version 4.1.2 to 4.1.2.1

admin/css/email-subscribers-admin.css CHANGED
@@ -581,7 +581,7 @@ p.search-box.box-ma10 {
581
 
582
  .form-table td.es-emm-optin {
583
  /*padding: 15px 10px;*/
584
- width: 20%;
585
  padding: 1em;
586
  }
587
 
581
 
582
  .form-table td.es-emm-optin {
583
  /*padding: 15px 10px;*/
584
+ /*width: 20%;*/
585
  padding: 1em;
586
  }
587
 
email-subscribers.php CHANGED
@@ -3,11 +3,11 @@
3
  * Plugin Name: Email Subscribers & Newsletters
4
  * Plugin URI: https://www.icegram.com/
5
  * Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
6
- * Version: 4.1.2
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
10
- * Tested up to: 5.2
11
  * Text Domain: email-subscribers
12
  * Domain Path: /languages/
13
  * License: GPLv3
@@ -24,7 +24,7 @@ if ( ! defined( 'WPINC' ) ) {
24
  * Define constants
25
  */
26
  define( 'ES_PLUGIN_DIR', dirname( __FILE__ ) );
27
- define( 'ES_PLUGIN_VERSION', '4.1.2' );
28
  define( 'ES_PLUGIN_BASE_NAME', plugin_basename( __FILE__ ) );
29
 
30
  if ( ! defined( 'ES_PLUGIN_FILE' ) ) {
3
  * Plugin Name: Email Subscribers & Newsletters
4
  * Plugin URI: https://www.icegram.com/
5
  * Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
6
+ * Version: 4.1.2.1
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
10
+ * Tested up to: 5.2.1
11
  * Text Domain: email-subscribers
12
  * Domain Path: /languages/
13
  * License: GPLv3
24
  * Define constants
25
  */
26
  define( 'ES_PLUGIN_DIR', dirname( __FILE__ ) );
27
+ define( 'ES_PLUGIN_VERSION', '4.1.2.1' );
28
  define( 'ES_PLUGIN_BASE_NAME', plugin_basename( __FILE__ ) );
29
 
30
  if ( ! defined( 'ES_PLUGIN_FILE' ) ) {
includes/admin/class-es-forms-table.php CHANGED
@@ -349,7 +349,7 @@ class ES_Forms_Table extends WP_List_Table {
349
  }
350
  $url = 'https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=es_form_captcha&utm_campaign=es_upsale';
351
  ?>
352
- <div style=" background-image: linear-gradient(-100deg, rgba(250, 247, 133, 0.4), rgba(250, 247, 133, 0.8) 95%, rgba(250, 247, 133, 0.2)); padding: 10px; width: 35%; border-radius: 1em 0 1em 0; "><?php echo sprintf( __( 'Secure you form and avoid spam signups with Email Subscribers Starter Plan <a target="_blank" style="font-weight: bold; cursor:pointer; text-decoration:none" href="%s">Get started</a>',
353
  'email-subscribers' ), $url ) ?></div>
354
  </form>
355
  </div>
349
  }
350
  $url = 'https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=es_form_captcha&utm_campaign=es_upsale';
351
  ?>
352
+ <div style=" background-image: linear-gradient(-100deg, rgba(250, 247, 133, 0.4), rgba(250, 247, 133, 0.8) 95%, rgba(250, 247, 133, 0.2)); padding: 10px; width: 35%; border-radius: 1em 0 1em 0; "><?php echo sprintf( __( 'Secure your form and avoid spam signups with Email Subscribers Starter Plan <a target="_blank" style="font-weight: bold; cursor:pointer; text-decoration:none" href="%s">Get started</a>',
353
  'email-subscribers' ), $url ) ?></div>
354
  </form>
355
  </div>
includes/class-email-subscribers.php CHANGED
@@ -72,7 +72,7 @@ class Email_Subscribers {
72
  * @since 4.0
73
  */
74
  public function __construct() {
75
- global $ig_es_feedback;
76
 
77
  require_once plugin_dir_path( __FILE__ ) . 'class-email-subscribers-activator.php';
78
  require_once plugin_dir_path( __FILE__ ) . 'class-email-subscribers-deactivator.php';
@@ -92,6 +92,7 @@ class Email_Subscribers {
92
  $this->define_public_hooks();
93
 
94
 
 
95
  if ( is_admin() ) {
96
  $ig_es_feedback = new IG_Feedback_V_1_0_1( 'Email Subscribers', 'email-subscribers', 'ig_es', 'esfree.', false );
97
  $ig_es_feedback->render_deactivate_feedback();
@@ -102,6 +103,8 @@ class Email_Subscribers {
102
  }
103
 
104
  public function add_admin_notice() {
 
 
105
  $screen = get_current_screen();
106
  $screen_id = $screen ? $screen->id : '';
107
  $show_on_screens = array(
@@ -119,7 +122,7 @@ class Email_Subscribers {
119
  }
120
 
121
  //Email Subscribers Pro update notice
122
- $active_plugins = IG_Tracker_V_1_0_1::get_active_plugins();
123
 
124
  if ( is_admin() && in_array( 'email-subscribers-premium/email-subscribers-premium.php', $active_plugins ) ) {
125
  $es_pro_plugin_meta_data = get_plugin_data( WP_PLUGIN_DIR . '/email-subscribers-premium/email-subscribers-premium.php' );
@@ -142,7 +145,7 @@ class Email_Subscribers {
142
  }
143
  }
144
 
145
- $all_plugins = IG_Tracker_V_1_0_1::get_plugins();
146
 
147
  if ( ! in_array( 'email-subscribers-premium/email-subscribers-premium.php', $all_plugins ) ) {
148
 
72
  * @since 4.0
73
  */
74
  public function __construct() {
75
+ global $ig_es_feedback, $ig_es_tracker;
76
 
77
  require_once plugin_dir_path( __FILE__ ) . 'class-email-subscribers-activator.php';
78
  require_once plugin_dir_path( __FILE__ ) . 'class-email-subscribers-deactivator.php';
92
  $this->define_public_hooks();
93
 
94
 
95
+ $ig_es_tracker = 'IG_Tracker_V_1_0_1';
96
  if ( is_admin() ) {
97
  $ig_es_feedback = new IG_Feedback_V_1_0_1( 'Email Subscribers', 'email-subscribers', 'ig_es', 'esfree.', false );
98
  $ig_es_feedback->render_deactivate_feedback();
103
  }
104
 
105
  public function add_admin_notice() {
106
+ global $ig_es_tracker;
107
+
108
  $screen = get_current_screen();
109
  $screen_id = $screen ? $screen->id : '';
110
  $show_on_screens = array(
122
  }
123
 
124
  //Email Subscribers Pro update notice
125
+ $active_plugins = $ig_es_tracker::get_active_plugins();
126
 
127
  if ( is_admin() && in_array( 'email-subscribers-premium/email-subscribers-premium.php', $active_plugins ) ) {
128
  $es_pro_plugin_meta_data = get_plugin_data( WP_PLUGIN_DIR . '/email-subscribers-premium/email-subscribers-premium.php' );
145
  }
146
  }
147
 
148
+ $all_plugins = $ig_es_tracker::get_plugins();
149
 
150
  if ( ! in_array( 'email-subscribers-premium/email-subscribers-premium.php', $all_plugins ) ) {
151
 
includes/feedback.php CHANGED
@@ -7,16 +7,17 @@
7
  if ( ! function_exists( 'ig_es_get_additional_info' ) ) {
8
 
9
  function ig_es_get_additional_info( $additional_info, $system_info = false ) {
 
10
 
11
  $additional_info['version'] = ES_PLUGIN_VERSION;
12
 
13
  if ( $system_info ) {
14
 
15
- $additional_info['active_plugins'] = IG_Tracker_V_1_0_1::get_active_plugins();
16
- $additional_info['inactive_plugins'] = IG_Tracker_V_1_0_1::get_inactive_plugins();
17
- $additional_info['current_theme'] = IG_Tracker_V_1_0_1::get_current_theme_info();
18
- $additional_info['wp_info'] = IG_Tracker_V_1_0_1::get_wp_info();
19
- $additional_info['server_info'] = IG_Tracker_V_1_0_1::get_server_info();
20
 
21
  // ES Specific information
22
  $additional_info['plugin_meta_info'] = ES_Common::get_ig_es_meta_info();
@@ -67,13 +68,12 @@ function ig_es_render_feedback_widget() {
67
  if ( $total_contacts > 10 ) {
68
 
69
  $params = array(
70
- 'type' => 'emoji',
71
- 'event' => $event,
72
- 'title' => "How's your experience with Email Subscribers?",
73
- 'position' => 'center',
74
- 'width' => 600,
75
- //'force' => true,
76
- //'set_transient' => false
77
  );
78
 
79
  ES_Common::render_feedback_widget( $params );
7
  if ( ! function_exists( 'ig_es_get_additional_info' ) ) {
8
 
9
  function ig_es_get_additional_info( $additional_info, $system_info = false ) {
10
+ global $ig_es_tracker;
11
 
12
  $additional_info['version'] = ES_PLUGIN_VERSION;
13
 
14
  if ( $system_info ) {
15
 
16
+ $additional_info['active_plugins'] = $ig_es_tracker::get_active_plugins();
17
+ $additional_info['inactive_plugins'] = $ig_es_tracker::get_inactive_plugins();
18
+ $additional_info['current_theme'] = $ig_es_tracker::get_current_theme_info();
19
+ $additional_info['wp_info'] = $ig_es_tracker::get_wp_info();
20
+ $additional_info['server_info'] = $ig_es_tracker::get_server_info();
21
 
22
  // ES Specific information
23
  $additional_info['plugin_meta_info'] = ES_Common::get_ig_es_meta_info();
68
  if ( $total_contacts > 10 ) {
69
 
70
  $params = array(
71
+ 'type' => 'emoji',
72
+ 'event' => $event,
73
+ 'title' => "How's your experience with Email Subscribers?",
74
+ 'position' => 'top-end',
75
+ 'width' => 300,
76
+ 'confirmButtonText' => __( 'Send', 'email-subscribers' )
 
77
  );
78
 
79
  ES_Common::render_feedback_widget( $params );
includes/feedback/class-ig-feedback-v-1-0-1.php CHANGED
@@ -158,7 +158,9 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_1' ) ) {
158
  'set_transient' => true,
159
  'allowOutsideClick' => false,
160
  'allowEscapeKey' => true,
161
- 'showCloseButton' => true
 
 
162
  );
163
 
164
  $params = wp_parse_args( $params, $default_params );
@@ -172,14 +174,14 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_1' ) ) {
172
 
173
  <script>
174
 
175
- function doSend(rating, details) {
176
 
177
  var data = {
178
  action: '<?php echo $this->ajax_action; ?>',
179
  feedback: {
180
  type: '<?php echo $params['type']; ?>',
181
  slug: '<?php echo $slug; ?>',
182
- title: '<?php echo esc_js($title); ?>',
183
  value: rating,
184
  details: details
185
  },
@@ -197,7 +199,7 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_1' ) ) {
197
  };
198
 
199
  return jQuery.post(ajaxurl, data);
200
- }
201
 
202
  Swal.mixin({
203
  footer: '<?php echo $this->footer; ?>',
@@ -209,44 +211,51 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_1' ) ) {
209
  showCloseButton: '<?php echo $params['showCloseButton']; ?>',
210
  allowOutsideClick: '<?php echo $params['allowOutsideClick']; ?>',
211
  showLoaderOnConfirm: true,
 
 
212
  }).queue([
213
  {
214
- title: '<p class="ig-feedback-title"><?php echo esc_js($params['title']); ?></p>',
215
  html: '<?php echo $html; ?>',
216
  customClass: {
217
  popup: 'animated fadeInUpBig'
218
  },
219
- onOpen: () => {
220
  var clicked = false;
221
  var selectedReaction = '';
222
- jQuery('.ig-emoji').hover(function() {
223
  reaction = jQuery(this).attr('data-reaction');
224
  jQuery('#emoji-info').text(reaction);
225
- }, function() {
226
- if(!clicked) {
227
- jQuery('#emoji-info').text('');
228
- } else {
229
  jQuery('#emoji-info').text(selectedReaction);
230
- }
231
- });
232
 
233
- jQuery('.ig-emoji').on('click', function(){
234
  clicked = true;
235
  jQuery('.ig-emoji').removeClass('active');
236
- jQuery(this).addClass('active');
237
  selectedReaction = jQuery(this).attr('data-reaction');
238
  jQuery('#emoji-info').text(reaction);
239
- });
240
- },
241
  preConfirm: () => {
242
 
243
  var rating = jQuery("input[name='rating']:checked").val();
 
244
 
245
  if (rating === undefined) {
246
  Swal.showValidationMessage('Please give your input');
247
  return;
248
  }
249
 
 
 
 
 
250
  Swal.insertQueueStep({
251
  input: 'textarea',
252
  //html: '<textarea class="swal2-textarea" id="details" placeholder style="display: flex;"></textarea>' +
@@ -264,6 +273,7 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_1' ) ) {
264
 
265
  }
266
  });
 
267
  }
268
  },
269
 
@@ -281,9 +291,9 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_1' ) ) {
281
  animation: false
282
  });
283
 
284
- } else if(response.hasOwnProperty('dismiss')) {
285
- doSend(0, 'dismiss');
286
- }
287
  });
288
  </script>
289
  <?php
@@ -766,8 +776,8 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_1' ) ) {
766
  }
767
 
768
  /**
769
- * Set event into transient
770
- *
771
  * @param $event
772
  * @param int $expiry in days
773
  */
@@ -806,7 +816,7 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_1' ) ) {
806
  $system_info = ! empty( $data['misc']['system_info'] ) ? $data['misc']['system_info'] : false;
807
 
808
  $logger = get_ig_logger();
809
- $logger->info('DAta' . print_r($data, true));
810
 
811
  unset( $data['misc'] );
812
 
@@ -825,7 +835,7 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_1' ) ) {
825
 
826
  $data['meta'] = $meta_info;
827
 
828
- $data = wp_unslash($data);
829
 
830
  $args = array(
831
  'timeout' => 15,
@@ -841,8 +851,8 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_1' ) ) {
841
  $this->set_event_transient( $data['event'] );
842
  }
843
 
844
- $logger->info('DAta' . print_r($data, true));
845
-
846
  $response = wp_remote_post( $this->get_api_url( $is_dev_mode ), $args );
847
 
848
  $result['status'] = 'success';
158
  'set_transient' => true,
159
  'allowOutsideClick' => false,
160
  'allowEscapeKey' => true,
161
+ 'showCloseButton' => true,
162
+ 'confirmButtonText' => __( 'Ok', 'email-subscribers' ),
163
+ 'backdrop' => true
164
  );
165
 
166
  $params = wp_parse_args( $params, $default_params );
174
 
175
  <script>
176
 
177
+ function doSend(rating, details) {
178
 
179
  var data = {
180
  action: '<?php echo $this->ajax_action; ?>',
181
  feedback: {
182
  type: '<?php echo $params['type']; ?>',
183
  slug: '<?php echo $slug; ?>',
184
+ title: '<?php echo esc_js( $title ); ?>',
185
  value: rating,
186
  details: details
187
  },
199
  };
200
 
201
  return jQuery.post(ajaxurl, data);
202
+ }
203
 
204
  Swal.mixin({
205
  footer: '<?php echo $this->footer; ?>',
211
  showCloseButton: '<?php echo $params['showCloseButton']; ?>',
212
  allowOutsideClick: '<?php echo $params['allowOutsideClick']; ?>',
213
  showLoaderOnConfirm: true,
214
+ confirmButtonText: '<?php echo $params['confirmButtonText']; ?>',
215
+ backdrop: '<?php echo (int) $params['backdrop']; ?>'
216
  }).queue([
217
  {
218
+ title: '<p class="ig-feedback-title"><?php echo esc_js( $params['title'] ); ?></p>',
219
  html: '<?php echo $html; ?>',
220
  customClass: {
221
  popup: 'animated fadeInUpBig'
222
  },
223
+ onOpen: () => {
224
  var clicked = false;
225
  var selectedReaction = '';
226
+ jQuery('.ig-emoji').hover(function () {
227
  reaction = jQuery(this).attr('data-reaction');
228
  jQuery('#emoji-info').text(reaction);
229
+ }, function () {
230
+ if (!clicked) {
231
+ jQuery('#emoji-info').text('');
232
+ } else {
233
  jQuery('#emoji-info').text(selectedReaction);
234
+ }
235
+ });
236
 
237
+ jQuery('.ig-emoji').on('click', function () {
238
  clicked = true;
239
  jQuery('.ig-emoji').removeClass('active');
240
+ jQuery(this).addClass('active');
241
  selectedReaction = jQuery(this).attr('data-reaction');
242
  jQuery('#emoji-info').text(reaction);
243
+ });
244
+ },
245
  preConfirm: () => {
246
 
247
  var rating = jQuery("input[name='rating']:checked").val();
248
+ var details = '';
249
 
250
  if (rating === undefined) {
251
  Swal.showValidationMessage('Please give your input');
252
  return;
253
  }
254
 
255
+
256
+ return doSend(rating, details);
257
+
258
+ /*
259
  Swal.insertQueueStep({
260
  input: 'textarea',
261
  //html: '<textarea class="swal2-textarea" id="details" placeholder style="display: flex;"></textarea>' +
273
 
274
  }
275
  });
276
+ */
277
  }
278
  },
279
 
291
  animation: false
292
  });
293
 
294
+ } else if (response.hasOwnProperty('dismiss')) {
295
+ doSend(0, 'dismiss');
296
+ }
297
  });
298
  </script>
299
  <?php
776
  }
777
 
778
  /**
779
+ * Set event into transient
780
+ *
781
  * @param $event
782
  * @param int $expiry in days
783
  */
816
  $system_info = ! empty( $data['misc']['system_info'] ) ? $data['misc']['system_info'] : false;
817
 
818
  $logger = get_ig_logger();
819
+ $logger->info( 'DAta' . print_r( $data, true ) );
820
 
821
  unset( $data['misc'] );
822
 
835
 
836
  $data['meta'] = $meta_info;
837
 
838
+ $data = wp_unslash( $data );
839
 
840
  $args = array(
841
  'timeout' => 15,
851
  $this->set_event_transient( $data['event'] );
852
  }
853
 
854
+ $logger->info( 'DAta' . print_r( $data, true ) );
855
+
856
  $response = wp_remote_post( $this->get_api_url( $is_dev_mode ), $args );
857
 
858
  $result['status'] = 'success';
includes/pro-features.php CHANGED
@@ -42,6 +42,7 @@ function ig_es_add_upsale( $fields ) {
42
  }
43
 
44
  function ig_es_add_sync_users_tabs( $tabs ) {
 
45
 
46
  $tabs['comments'] = array(
47
  'name' => __( 'Comments', 'email-subscribers' ),
@@ -50,7 +51,7 @@ function ig_es_add_sync_users_tabs( $tabs ) {
50
  );
51
 
52
  $woocommerce_plugin = 'woocommerce/woocommerce.php';
53
- $active_plugins = IG_Tracker::get_active_plugins();
54
 
55
  if ( in_array( $woocommerce_plugin, $active_plugins ) ) {
56
  $tabs['woocommerce'] = array(
@@ -85,7 +86,7 @@ function ig_es_add_comments_tab_settings( $tab_options ) {
85
  <h2>How to setup?</h2>
86
  <p>Once you upgrade to <a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=comment_sync&utm_campaign=es_upsale#sync_comment_users">Email Subscribers Starter</a>, you will have settings panel where you need to enable Comment user sync and select the list in which you want to add people whenever someone post a comment.</p>
87
  <hr>
88
- <p class="help">Checkout <a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=comment_sync&utm_campaign=es_upsale#sync_comment_users">Email Subscribers Starter</a> Plan Now</p>
89
  </div>
90
  <?php
91
 
@@ -109,9 +110,9 @@ function ig_es_add_woocommerce_tab_settings( $tab_options ) {
109
  ?>
110
  <div class="">
111
  <h2>Sync WooCommerce Customers</h2>
112
- <p>Are you using WooCommerce for your online business? You can use this integration to add to a specific list whenever someone purchase something from you</p>
113
  <h2>How to setup?</h2>
114
- <p>Once you upgrade to <a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=woocommerce_sync&utm_campaign=es_upsale#sync_woocommerce_customers">Email Subscribers Starter</a>, you will have following settings panel where you need to enable WooCommerce sync and select the list in which you want to add people whenever they purchase something
115
  from you.</p>
116
  <hr>
117
  <p class="help">Checkout <a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=woocommerce_sync&utm_campaign=es_upsale#sync_woocommerce_customers">Email Subscribers Starter</a> Now</p>
42
  }
43
 
44
  function ig_es_add_sync_users_tabs( $tabs ) {
45
+ global $ig_es_tracker;
46
 
47
  $tabs['comments'] = array(
48
  'name' => __( 'Comments', 'email-subscribers' ),
51
  );
52
 
53
  $woocommerce_plugin = 'woocommerce/woocommerce.php';
54
+ $active_plugins = $ig_es_tracker::get_active_plugins();
55
 
56
  if ( in_array( $woocommerce_plugin, $active_plugins ) ) {
57
  $tabs['woocommerce'] = array(
86
  <h2>How to setup?</h2>
87
  <p>Once you upgrade to <a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=comment_sync&utm_campaign=es_upsale#sync_comment_users">Email Subscribers Starter</a>, you will have settings panel where you need to enable Comment user sync and select the list in which you want to add people whenever someone post a comment.</p>
88
  <hr>
89
+ <p class="help">Checkout <a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=comment_sync&utm_campaign=es_upsale#sync_comment_users">Email Subscribers Starter</a> now</p>
90
  </div>
91
  <?php
92
 
110
  ?>
111
  <div class="">
112
  <h2>Sync WooCommerce Customers</h2>
113
+ <p>Are you using WooCommerce for your online business? You can use this integration to add to a specific list whenever someone make a purchase from you</p>
114
  <h2>How to setup?</h2>
115
+ <p>Once you upgrade to <a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=woocommerce_sync&utm_campaign=es_upsale#sync_woocommerce_customers">Email Subscribers Starter</a>, you will have settings panel where you need to enable WooCommerce sync and select the list in which you want to add people whenever they purchase something
116
  from you.</p>
117
  <hr>
118
  <p class="help">Checkout <a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=woocommerce_sync&utm_campaign=es_upsale#sync_woocommerce_customers">Email Subscribers Starter</a> Now</p>
readme.txt CHANGED
@@ -4,8 +4,8 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Author URI: https://www.icegram.com/
5
  Tags: subscription, newsletter, email marketing, post notification, email newsletter form, email signup, email widget, newsletter signup, subscribe, subscription form, bulk emails, signup form, list builder, lead generation, welcome email, contacts
6
  Requires at least: 3.9
7
- Tested up to: 5.2
8
- Stable tag: 4.1.2
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses
11
 
@@ -301,6 +301,9 @@ Use our free plugin [Email Subscribers - Group Selector](https://wordpress.org/p
301
 
302
  == Changelog ==
303
 
 
 
 
304
  = 4.1.2 (29.05.2019) =
305
  * New: Added support to export "Unconfirmed" contacts.
306
 
4
  Author URI: https://www.icegram.com/
5
  Tags: subscription, newsletter, email marketing, post notification, email newsletter form, email signup, email widget, newsletter signup, subscribe, subscription form, bulk emails, signup form, list builder, lead generation, welcome email, contacts
6
  Requires at least: 3.9
7
+ Tested up to: 5.2.1
8
+ Stable tag: 4.1.2.1
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses
11
 
301
 
302
  == Changelog ==
303
 
304
+ = 4.1.2.1 (30.05.2019) =
305
+ * Fix: Unable to use sync functionality
306
+
307
  = 4.1.2 (29.05.2019) =
308
  * New: Added support to export "Unconfirmed" contacts.
309