Email Subscribers & Newsletters - Version 4.3.13

Version Description

Download this release

Release Info

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

Code changes from version 4.3.12 to 4.3.13

email-subscribers.php CHANGED
@@ -3,7 +3,7 @@
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.3.12
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
@@ -29,7 +29,7 @@ if ( ! defined( 'WPINC' ) ) {
29
  * @since 4.3.0
30
  */
31
  if ( ! defined( 'IG_ES_FEEDBACK_TRACKER_VERSION' ) ) {
32
- define( 'IG_ES_FEEDBACK_TRACKER_VERSION', '1.0.16' );
33
  }
34
 
35
 
@@ -111,7 +111,7 @@ if ( $is_premium ) {
111
  /* ***************************** Initial Compatibility Work (End) ******************* */
112
 
113
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
114
- define( 'ES_PLUGIN_VERSION', '4.3.12' );
115
  }
116
 
117
  // Plugin Folder Path.
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.3.13
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
29
  * @since 4.3.0
30
  */
31
  if ( ! defined( 'IG_ES_FEEDBACK_TRACKER_VERSION' ) ) {
32
+ define( 'IG_ES_FEEDBACK_TRACKER_VERSION', '1.2.0' );
33
  }
34
 
35
 
111
  /* ***************************** Initial Compatibility Work (End) ******************* */
112
 
113
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
114
+ define( 'ES_PLUGIN_VERSION', '4.3.13' );
115
  }
116
 
117
  // Plugin Folder Path.
lite/includes/class-es-common.php CHANGED
@@ -1023,13 +1023,15 @@ Class ES_Common {
1023
  } elseif ( 'feedback' === $params['type'] ) {
1024
  $feedback->render_general_feedback( $params );
1025
  } elseif ( 'fb' === $params['type'] ) {
1026
-
1027
  /**
1028
  * We are not calling home for this event and we want to show
1029
  * this Widget only once. So, we are storing feedback data now.
1030
  */
1031
  $feedback->set_feedback_data( 'ig_es', $event );
1032
  $feedback->render_fb_widget( $params );
 
 
 
1033
  }
1034
  }
1035
  }
@@ -1224,7 +1226,7 @@ Class ES_Common {
1224
  */
1225
  public static function generate_hash( $length ) {
1226
 
1227
- $length = ( $length ) ? $length : 12;
1228
 
1229
  return substr( md5( uniqid() . uniqid() . wp_rand( $length, 64 ) ), 0, $length );
1230
  }
1023
  } elseif ( 'feedback' === $params['type'] ) {
1024
  $feedback->render_general_feedback( $params );
1025
  } elseif ( 'fb' === $params['type'] ) {
 
1026
  /**
1027
  * We are not calling home for this event and we want to show
1028
  * this Widget only once. So, we are storing feedback data now.
1029
  */
1030
  $feedback->set_feedback_data( 'ig_es', $event );
1031
  $feedback->render_fb_widget( $params );
1032
+ } elseif ( 'poll' === $params['type'] ) {
1033
+ $feedback->set_feedback_data( 'ig_es', $event );
1034
+ $feedback->render_poll_widget( $params );
1035
  }
1036
  }
1037
  }
1226
  */
1227
  public static function generate_hash( $length ) {
1228
 
1229
+ $length = ( $length ) ? $length : 12;
1230
 
1231
  return substr( md5( uniqid() . uniqid() . wp_rand( $length, 64 ) ), 0, $length );
1232
  }
lite/includes/feedback.php CHANGED
@@ -187,4 +187,82 @@ if ( ! function_exists( 'ig_es_can_ask_user_for_review' ) ) {
187
  }
188
  }
189
 
190
- add_filter( 'ig_es_can_ask_user_for_review', 'ig_es_can_ask_user_for_review', 10, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
187
  }
188
  }
189
 
190
+ add_filter( 'ig_es_can_ask_user_for_review', 'ig_es_can_ask_user_for_review', 10, 2 );
191
+
192
+ /**
193
+ * Render Icegram-Email Subscribers merge feedback widget.
194
+ *
195
+ * @since 4.3.13
196
+ */
197
+ function ig_es_render_iges_merge_feedback() {
198
+
199
+ global $ig_es_feedback;
200
+
201
+ if ( is_admin() ) {
202
+
203
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
204
+ return;
205
+ }
206
+
207
+ if ( ! ES()->is_es_admin_screen() ) {
208
+ return;
209
+ }
210
+
211
+ $total_contacts = ES()->contacts_db->count_active_contacts_by_list_id();
212
+
213
+ if ( $total_contacts >= 5 ) {
214
+
215
+ $event = 'poll.merge_iges';
216
+
217
+ // If user has already given feedback on Icegram page, don't ask them again
218
+ $is_event_tracked = $ig_es_feedback->is_event_tracked( 'ig', $event );
219
+
220
+ if ( $is_event_tracked ) {
221
+ return;
222
+ }
223
+
224
+ $params = array(
225
+ 'type' => 'poll',
226
+ 'title' => __( 'Subscription forms and CTAs??', 'email-subscribers' ),
227
+ 'event' => $event,
228
+ 'desc' => '<div><p>You use <a href="https://wordpress.org/plugins/email-subscribers" target="_blank"><b>Email Subscribers</b></a> to send email campaigns.</p> <p>Would you like us to include onsite popups and action bars in the plugin as well? This way you can <b>convert visitors to subscribers, drive traffic and run email marketing from a single plugin</b>.</p> <p>Why do we ask?</p> <p>Our <a href="https://wordpress.org/plugins/icegram" target="_blank"><b>Icegram</b></a> plugin already does onsite campaigns. We are thinking of merging Icegram & Email Subscribers into a single plugin.</p> <p><b>Will a comprehensive ConvertKit / MailChimp like email + onsite campaign plugin be useful to you?</b></p> </div>',
229
+ 'poll_options' => array(
230
+ 'yes' => array( 'text' => '<b>' . __( 'Yes', 'email-subscribers' ) . '</b>', 'color' => 'green' ),
231
+ 'no' => array( 'text' => '<b>' . __( 'No', 'email-subscribers' ) . '</b>', 'color' => 'red' )
232
+ ),
233
+ 'allow_multiple' => false,
234
+ 'position' => 'bottom-center',
235
+ 'width' => 400,
236
+ 'delay' => 2, // seconds
237
+ 'confirmButtonText' => __( 'Send my feedback to <b>Icegram team</b>', 'email-subscribers' ),
238
+ 'show_once' => true
239
+ );
240
+
241
+ ES_Common::render_feedback_widget( $params );
242
+
243
+ }
244
+
245
+ }
246
+ }
247
+
248
+ add_action( 'admin_footer', 'ig_es_render_iges_merge_feedback' );
249
+
250
+ /**
251
+ * Can load sweetalert js file
252
+ *
253
+ * @param bool $load
254
+ *
255
+ * @return bool
256
+ *
257
+ * @since 4.3.13
258
+ */
259
+ function ig_es_can_load_sweetalert_js( $load = false ) {
260
+
261
+ if ( ES()->is_es_admin_screen() ) {
262
+ return true;
263
+ }
264
+
265
+ return $load;
266
+ }
267
+
268
+ add_filter( 'ig_es_can_load_sweetalert_js', 'ig_es_can_load_sweetalert_js', 10, 1 );
lite/includes/feedback/assets/css/feedback.min.css CHANGED
@@ -56,4 +56,13 @@
56
  .email-subscribers_page_es_settings .ig-feedback-data-message textarea, .ig-feedback-data-message textarea {
57
  height: 200px;
58
  width: 92%
 
 
 
 
 
 
 
 
 
59
  }
56
  .email-subscribers_page_es_settings .ig-feedback-data-message textarea, .ig-feedback-data-message textarea {
57
  height: 200px;
58
  width: 92%
59
+ }
60
+
61
+ .ig-feedback-data-poll-message textarea {
62
+ height: 100px;
63
+ width: 100%;
64
+ }
65
+
66
+ .swal2-actions {
67
+ margin: 0px !important;
68
  }
lite/includes/feedback/class-ig-feedback.php CHANGED
@@ -4,21 +4,21 @@ if ( ! defined( 'ABSPATH' ) ) {
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
- if ( ! class_exists( 'IG_Feedback_V_1_0_16' ) ) {
8
  /**
9
  * IG Feedback
10
  *
11
  * The IG Feedback class adds functionality to get quick interactive feedback from users.
12
  * There are different types of feedabck widget like Stars, Emoji, Thubms Up/ Down, Number etc.
13
  *
14
- * @class IG_Feedback_V_1_0_16
15
  * @since 1.0.0
16
  * @copyright Copyright (c) 2019, Icegram
17
  * @license https://opensource.org/licenses/gpl-license GNU Public License
18
  * @author Icegram
19
  * @package feedback
20
  */
21
- class IG_Feedback_V_1_0_16 {
22
 
23
  /**
24
  * Version of Feedback Library
@@ -27,7 +27,7 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_16' ) ) {
27
  * @var string
28
  *
29
  */
30
- public $version = '1.0.16';
31
  /**
32
  * The API URL where we will send feedback data.
33
  *
@@ -344,9 +344,16 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_16' ) ) {
344
  * Load Javascripts
345
  *
346
  * @since 1.0.1
 
 
347
  */
348
  public function enqueue_scripts() {
349
- wp_enqueue_script( 'sweetalert', plugin_dir_url( __FILE__ ) . 'assets/js/sweetalert2.min.js', array( 'jquery' ) );
 
 
 
 
 
350
  }
351
 
352
  /**
@@ -355,20 +362,20 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_16' ) ) {
355
  * @since 1.0.1
356
  */
357
  public function enqueue_styles() {
358
- wp_register_style( 'sweetalert', plugin_dir_url( __FILE__ ) . 'assets/css/sweetalert2.min.css', array(), $this->version );
359
- wp_enqueue_style( 'sweetalert' );
360
 
361
- wp_register_style( 'animate', plugin_dir_url( __FILE__ ) . 'assets/css/animate.min.css', array(), $this->version );
362
- wp_enqueue_style( 'animate' );
363
 
364
- wp_register_style( 'ig-feedback-star-rating', plugin_dir_url( __FILE__ ) . 'assets/css/star-rating.min.css', array(), $this->version );
365
- wp_enqueue_style( 'ig-feedback-star-rating' );
366
 
367
- wp_register_style( 'ig-feedback-emoji', plugin_dir_url( __FILE__ ) . 'assets/css/emoji.min.css', array(), $this->version );
368
- wp_enqueue_style( 'ig-feedback-emoji' );
369
 
370
- wp_register_style( 'ig-feedback', plugin_dir_url( __FILE__ ) . 'assets/css/feedback.min.css', array(), $this->version );
371
- wp_enqueue_style( 'ig-feedback' );
372
  }
373
 
374
  /**
@@ -395,7 +402,8 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_16' ) ) {
395
  'backdrop' => true,
396
  'delay' => 3, // In Seconds
397
  'consent_text' => 'You are agree to our terms and condition',
398
- 'email' => $this->get_contact_email()
 
399
  );
400
 
401
  $params = wp_parse_args( $params, $default_params );
@@ -847,6 +855,164 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_16' ) ) {
847
  <?php
848
  }
849
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
850
  /**
851
  * Get Feedback API url
852
  *
@@ -1372,6 +1538,40 @@ if ( ! class_exists( 'IG_Feedback_V_1_0_16' ) ) {
1372
  return $event_feedback_data;
1373
  }
1374
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1375
  /**
1376
  * Set event into transient
1377
  *
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
+ if ( ! class_exists( 'IG_Feedback_V_1_2_0' ) ) {
8
  /**
9
  * IG Feedback
10
  *
11
  * The IG Feedback class adds functionality to get quick interactive feedback from users.
12
  * There are different types of feedabck widget like Stars, Emoji, Thubms Up/ Down, Number etc.
13
  *
14
+ * @class IG_Feedback_V_1_2_0
15
  * @since 1.0.0
16
  * @copyright Copyright (c) 2019, Icegram
17
  * @license https://opensource.org/licenses/gpl-license GNU Public License
18
  * @author Icegram
19
  * @package feedback
20
  */
21
+ class IG_Feedback_V_1_2_0 {
22
 
23
  /**
24
  * Version of Feedback Library
27
  * @var string
28
  *
29
  */
30
+ public $version = '1.2.0';
31
  /**
32
  * The API URL where we will send feedback data.
33
  *
344
  * Load Javascripts
345
  *
346
  * @since 1.0.1
347
+ *
348
+ * @modify 1.1.0
349
  */
350
  public function enqueue_scripts() {
351
+
352
+ $can_load = apply_filters( $this->plugin_abbr . '_can_load_sweetalert_js', false );
353
+
354
+ if ( $can_load ) {
355
+ wp_enqueue_script( 'sweetalert', plugin_dir_url( __FILE__ ) . 'assets/js/sweetalert2.min.js', array( 'jquery' ) );
356
+ }
357
  }
358
 
359
  /**
362
  * @since 1.0.1
363
  */
364
  public function enqueue_styles() {
365
+ wp_register_style( "sweetalert_{$this->version}", plugin_dir_url( __FILE__ ) . 'assets/css/sweetalert2.min.css', array(), $this->version );
366
+ wp_enqueue_style( "sweetalert_{$this->version}" );
367
 
368
+ wp_register_style( "animate_{$this->version}", plugin_dir_url( __FILE__ ) . 'assets/css/animate.min.css', array(), $this->version );
369
+ wp_enqueue_style( "animate_{$this->version}" );
370
 
371
+ wp_register_style( "ig-feedback-star-rating_{$this->version}", plugin_dir_url( __FILE__ ) . 'assets/css/star-rating.min.css', array(), $this->version );
372
+ wp_enqueue_style( "ig-feedback-star-rating_{$this->version}" );
373
 
374
+ wp_register_style( "ig-feedback-emoji_{$this->version}", plugin_dir_url( __FILE__ ) . 'assets/css/emoji.min.css', array(), $this->version );
375
+ wp_enqueue_style( "ig-feedback-emoji_{$this->version}" );
376
 
377
+ wp_register_style( "ig-feedback_{$this->version}", plugin_dir_url( __FILE__ ) . 'assets/css/feedback.min.css', array(), $this->version );
378
+ wp_enqueue_style( "ig-feedback_{$this->version}" );
379
  }
380
 
381
  /**
402
  'backdrop' => true,
403
  'delay' => 3, // In Seconds
404
  'consent_text' => 'You are agree to our terms and condition',
405
+ 'email' => $this->get_contact_email(),
406
+ 'name' => ''
407
  );
408
 
409
  $params = wp_parse_args( $params, $default_params );
855
  <?php
856
  }
857
 
858
+ /**
859
+ * Render Poll widget
860
+ *
861
+ * @param array $params
862
+ *
863
+ * @since 1.1.0
864
+ */
865
+ public function render_poll_widget( $params = array() ) {
866
+ $params = $this->prepare_widget_params( $params );
867
+
868
+ $poll_options = ! empty( $params['poll_options'] ) ? $params['poll_options'] : array();
869
+
870
+ if ( empty( $poll_options ) ) {
871
+ return;
872
+ }
873
+
874
+ $allow_multiple = ! empty( $params['allow_multiple'] ) ? $params['allow_multiple'] : false;
875
+
876
+ $title = $params['title'];
877
+ $slug = sanitize_title( $title );
878
+ $event = $this->event_prefix . $params['event'];
879
+ $desc = ! empty( $params['desc'] ) ? $params['desc'] : '';
880
+
881
+ ob_start();
882
+
883
+ ?>
884
+
885
+ <div class="ig-general-feedback" id="ig-general-feedback-<?php echo $this->plugin; ?>">
886
+ <form class="ig-general-feedback" id="ig-general-feedback">
887
+ <p><?php echo $desc; ?></p>
888
+
889
+ <p class="ig-general-feedback">
890
+ <?php foreach ( $poll_options as $value => $option ) { ?>
891
+ <input type="radio" name="feedback_data[poll_options]" value="<?php echo $value; ?>"><b style="color: <?php echo $option['color']; ?>"><?php echo $option['text']; ?></b><br/>
892
+ <?php } ?>
893
+ </p>
894
+ <p class="ig-feedback-data-poll-message" id="ig-feedback-data-poll-message">
895
+ <textarea name="feedback_data[details]" id="ig-feedback-data-poll-additional-message" placeholder="Additional feedback"></textarea>
896
+ </p>
897
+ </form>
898
+ </div>
899
+
900
+ <?php
901
+
902
+ $html = str_replace( array( "\r", "\n" ), '', trim( ob_get_clean() ) );
903
+
904
+ $params['html'] = $html;
905
+
906
+ $title = $params['title'];
907
+ $slug = sanitize_title( $title );
908
+ $event = $this->event_prefix . $params['event'];
909
+ $html = ! empty( $params['html'] ) ? $params['html'] : '';
910
+
911
+ ?>
912
+
913
+ <script type="text/javascript">
914
+
915
+ jQuery(document).ready(function ($) {
916
+
917
+ function doSend(data, meta, system_info) {
918
+
919
+ var data = {
920
+ action: '<?php echo $this->ajax_action; ?>',
921
+ feedback: {
922
+ type: '<?php echo $params['type']; ?>',
923
+ slug: '<?php echo $slug; ?>',
924
+ title: '<?php echo esc_js( $title ); ?>',
925
+ data: data
926
+ },
927
+
928
+ event: '<?php echo $event; ?>',
929
+
930
+ // Add additional information
931
+ misc: {
932
+ plugin: '<?php echo $this->plugin; ?>',
933
+ plugin_abbr: '<?php echo $this->plugin_abbr; ?>',
934
+ is_dev_mode: '<?php echo $this->is_dev_mode; ?>',
935
+ set_transient: '<?php echo $params['set_transient']; ?>',
936
+ meta_info: meta,
937
+ system_info: system_info
938
+ }
939
+ };
940
+
941
+ return jQuery.post(ajaxurl, data);
942
+ }
943
+
944
+ Swal.mixin({
945
+ footer: '',
946
+ position: '<?php echo $params['position']; ?>',
947
+ width: <?php echo $params['width']; ?>,
948
+ animation: false,
949
+ focusConfirm: false,
950
+ allowEscapeKey: true,
951
+ showCloseButton: '<?php echo $params['showCloseButton']; ?>',
952
+ allowOutsideClick: '<?php echo $params['allowOutsideClick']; ?>',
953
+ showLoaderOnConfirm: true,
954
+ confirmButtonText: '<?php echo $params['confirmButtonText']; ?>',
955
+ backdrop: '<?php echo (int) $params['backdrop']; ?>'
956
+ }).queue([
957
+ {
958
+ title: '<p class="ig-feedback-title"><?php echo esc_js( $params['title'] ); ?></p>',
959
+ html: '<?php echo $html; ?>',
960
+ customClass: {
961
+ popup: 'animated fadeInUpBig'
962
+ },
963
+ onOpen: () => {
964
+
965
+ },
966
+
967
+ preConfirm: () => {
968
+ var $overlay = $('#ig-general-feedback-<?php echo $this->plugin; ?>');
969
+ var $form = $overlay.find('form');
970
+ var poll_options = $form.find("input[name='feedback_data[poll_options]']:checked").val();
971
+ var message = $form.find("#ig-feedback-data-poll-additional-message").val();
972
+
973
+ if (poll_options === undefined) {
974
+ Swal.showValidationMessage('Please select option');
975
+ return;
976
+ }
977
+
978
+ var data = {
979
+ poll_option: poll_options,
980
+ additional_feedback: message
981
+ };
982
+
983
+ var meta = {};
984
+
985
+ return doSend(data, meta, true);
986
+ }
987
+ },
988
+
989
+ ]).then(response => {
990
+
991
+ if (response.hasOwnProperty('value')) {
992
+
993
+ Swal.fire({
994
+ type: 'success',
995
+ width: <?php echo $params['width']; ?>,
996
+ title: "Thank You!",
997
+ showConfirmButton: false,
998
+ position: '<?php echo $params['position']; ?>',
999
+ timer: 1500,
1000
+ animation: false
1001
+ });
1002
+
1003
+ }
1004
+ });
1005
+
1006
+
1007
+ });
1008
+
1009
+ </script>
1010
+
1011
+
1012
+ <?php
1013
+ }
1014
+
1015
+
1016
  /**
1017
  * Get Feedback API url
1018
  *
1538
  return $event_feedback_data;
1539
  }
1540
 
1541
+ /**
1542
+ * Check whether event tracked or not.
1543
+ *
1544
+ * @param $plugin_abbr
1545
+ * @param $event
1546
+ *
1547
+ * @return bool
1548
+ *
1549
+ * @since 1.1.0
1550
+ */
1551
+ public function is_event_tracked( $plugin_abbr = '', $event = '' ) {
1552
+
1553
+ if ( empty( $plugin_abbr ) || empty( $event ) ) {
1554
+ return false;
1555
+ }
1556
+
1557
+ $feedback_data = $this->get_feedback_data( $plugin_abbr );
1558
+
1559
+ if ( count( $feedback_data ) > 0 ) {
1560
+
1561
+ $events = array_keys( $feedback_data );
1562
+
1563
+ foreach ( $events as $key => $value ) {
1564
+ if ( strpos( $value, $event ) ) {
1565
+ return true;
1566
+ }
1567
+ }
1568
+
1569
+ }
1570
+
1571
+ return false;
1572
+ }
1573
+
1574
+
1575
  /**
1576
  * Set event into transient
1577
  *
lite/includes/feedback/class-ig-tracker.php CHANGED
@@ -4,15 +4,15 @@ if ( ! defined( 'ABSPATH' ) ) {
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
- if ( ! class_exists( 'IG_Tracker_V_1_0_16' ) ) {
8
 
9
  /**
10
- * Class IG_Tracker_V_1_0_16
11
  *
12
  * Icegram tracker handler class is responsible for sending anonymous plugin
13
  * data to Icegram servers for users that actively allowed data tracking.
14
  *
15
- * @class IG_Tracker_V_1_0_16
16
  * @since 1.0.0
17
  *
18
  * @copyright Copyright (c) 2019, Icegram
@@ -20,7 +20,7 @@ if ( ! class_exists( 'IG_Tracker_V_1_0_16' ) ) {
20
  * @author Icegram
21
  * @package feedback
22
  */
23
- class IG_Tracker_V_1_0_16 {
24
 
25
  /**
26
  * Get Active, Inactive or all plugins info
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
+ if ( ! class_exists( 'IG_Tracker_V_1_2_0' ) ) {
8
 
9
  /**
10
+ * Class IG_Tracker_V_1_2_0
11
  *
12
  * Icegram tracker handler class is responsible for sending anonymous plugin
13
  * data to Icegram servers for users that actively allowed data tracking.
14
  *
15
+ * @class IG_Tracker_V_1_2_0
16
  * @since 1.0.0
17
  *
18
  * @copyright Copyright (c) 2019, Icegram
20
  * @author Icegram
21
  * @package feedback
22
  */
23
+ class IG_Tracker_V_1_2_0 {
24
 
25
  /**
26
  * Get Active, Inactive or all plugins info
lite/public/class-email-subscribers-public.php CHANGED
@@ -181,13 +181,13 @@ class Email_Subscribers_Public {
181
  'guid' => $guid
182
  );
183
 
184
- ES()->mailer->send_welcome_email( $email, $data );
185
-
186
  $lists = ES()->lists_db->get_all_lists_name_by_contact( $db_id );
187
  $list_name = implode( ", ", $lists );
188
 
189
  $data['list_name'] = $list_name;
190
 
 
 
191
  ES()->mailer->send_add_new_contact_notification_to_admins( $data );
192
  } elseif ( $option === 'unsubscribe' ) {
193
  $unsubscribed = 1;
181
  'guid' => $guid
182
  );
183
 
 
 
184
  $lists = ES()->lists_db->get_all_lists_name_by_contact( $db_id );
185
  $list_name = implode( ", ", $lists );
186
 
187
  $data['list_name'] = $list_name;
188
 
189
+ ES()->mailer->send_welcome_email( $email, $data );
190
+
191
  ES()->mailer->send_add_new_contact_notification_to_admins( $data );
192
  } elseif ( $option === 'unsubscribe' ) {
193
  $unsubscribed = 1;
lite/public/partials/class-es-shortcode.php CHANGED
@@ -231,7 +231,7 @@ class ES_Shortcode {
231
 
232
 
233
  if($gdpr_consent === 'yes') { ?>
234
- <p><input type="checkbox" name="es_gdpr_consent" value="true" required /> <label><?php echo $gdpr_consent_text; ?></label> </p>
235
  <?php } else if ( ( in_array( 'gdpr/gdpr.php', $active_plugins ) || array_key_exists( 'gdpr/gdpr.php', $active_plugins ) ) ) {
236
  echo GDPR::consent_checkboxes();
237
  }
231
 
232
 
233
  if($gdpr_consent === 'yes') { ?>
234
+ <p><input type="checkbox" name="es_gdpr_consent" value="true" required />&nbsp;<label style="display: inline"><?php echo $gdpr_consent_text; ?></label></p>
235
  <?php } else if ( ( in_array( 'gdpr/gdpr.php', $active_plugins ) || array_key_exists( 'gdpr/gdpr.php', $active_plugins ) ) ) {
236
  echo GDPR::consent_checkboxes();
237
  }
readme.txt CHANGED
@@ -5,7 +5,7 @@ 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.3.2
8
- Stable tag: 4.3.12
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses
11
 
@@ -61,6 +61,7 @@ Email Subscribers is a fully-featured subscription plugin specially created keep
61
  * **New blog post notification email templates** - Awesome templates that will encourage contacts to read your blog post
62
  * **Automatic Background Sending**
63
  * **Connect with SMTP / Email Sending Services**
 
64
  * **UTM Tracking**
65
  * **Automatic Spam Score Checking**
66
  * **Automatically add people to your mailing list whenever someone posts a comment on your website**
@@ -101,10 +102,8 @@ Don’t believe it? Have a look at the review section. The support guys are frie
101
  > I highly recommend this product. It does everything it says it will do, is easily adaptable to your website, and Mansi’s level of support is fantastic. Unlike some of the other similar plugins, this one gives you total control over who requests to subscribe to your newsletter or blog.
102
  > - [ForPm](https://wordpress.org/support/topic/great-product-and-support-11/)
103
 
104
-
105
  Go to [Email Subscribers review section](https://wordpress.org/support/plugin/email-subscribers/reviews/) to know more about our recent reviews.
106
 
107
-
108
  **Help Fellow WordPressers by Writing a Review**
109
 
110
  If you like Email Subscribers, please leave a [5 stars](https://wordpress.org/support/view/plugin-reviews/email-subscribers?filter=5#postform) review on WordPress. That helps fellow website owners access Email Subscribers easily and benefit from it!
@@ -257,13 +256,17 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
257
 
258
  == Changelog ==
259
 
 
 
 
 
 
260
  **4.3.12 (17.02.2020)**
261
 
262
  * Update: Added support for HTML in GDPR consent text
263
  * Update: Now, contact will be deleted upon the deletion of WordPress user if WordPress sync is on.
264
  * Update: Removed .SVG images from templates as it's blocked by Gmail
265
  * Fix: Confirmation email did not go out if the subject is empty
266
- * Fix: **{{LIST}}** keyword did not work in the welcome email
267
  * Fix: Email Sending options was not saved properly
268
 
269
  **4.3.11 (12.02.2020)**
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.3.2
8
+ Stable tag: 4.3.13
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses
11
 
61
  * **New blog post notification email templates** - Awesome templates that will encourage contacts to read your blog post
62
  * **Automatic Background Sending**
63
  * **Connect with SMTP / Email Sending Services**
64
+ * **Link Tracking**
65
  * **UTM Tracking**
66
  * **Automatic Spam Score Checking**
67
  * **Automatically add people to your mailing list whenever someone posts a comment on your website**
102
  > I highly recommend this product. It does everything it says it will do, is easily adaptable to your website, and Mansi’s level of support is fantastic. Unlike some of the other similar plugins, this one gives you total control over who requests to subscribe to your newsletter or blog.
103
  > - [ForPm](https://wordpress.org/support/topic/great-product-and-support-11/)
104
 
 
105
  Go to [Email Subscribers review section](https://wordpress.org/support/plugin/email-subscribers/reviews/) to know more about our recent reviews.
106
 
 
107
  **Help Fellow WordPressers by Writing a Review**
108
 
109
  If you like Email Subscribers, please leave a [5 stars](https://wordpress.org/support/view/plugin-reviews/email-subscribers?filter=5#postform) review on WordPress. That helps fellow website owners access Email Subscribers easily and benefit from it!
256
 
257
  == Changelog ==
258
 
259
+ **4.3.13 (24.02.2020)**
260
+
261
+ * Update: Added custom style for consent text
262
+ * Fix: **{{LIST}}** keyword did not work in the welcome email
263
+
264
  **4.3.12 (17.02.2020)**
265
 
266
  * Update: Added support for HTML in GDPR consent text
267
  * Update: Now, contact will be deleted upon the deletion of WordPress user if WordPress sync is on.
268
  * Update: Removed .SVG images from templates as it's blocked by Gmail
269
  * Fix: Confirmation email did not go out if the subject is empty
 
270
  * Fix: Email Sending options was not saved properly
271
 
272
  **4.3.11 (12.02.2020)**