Email Subscribers & Newsletters - Version 4.1.15

Version Description

(12.09.2019) = * New: Stop email sending if hourly email sending limit exceeded. * Update: Added option to customize message after form submission (Email Subscribers > Settings Menu) * Fixed: Import contacts issue

Download this release

Release Info

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

Code changes from version 4.1.14 to 4.1.15

Files changed (42) hide show
  1. admin/class-email-subscribers-admin.php +22 -16
  2. admin/css/email-subscribers-admin.css +3 -3
  3. admin/partials/onboarding.php +6 -7
  4. admin/partials/sample.csv +4 -4
  5. email-subscribers.php +4 -4
  6. includes/admin/class-es-admin-settings.php +26 -12
  7. includes/admin/class-es-campaigns-table.php +42 -33
  8. includes/admin/class-es-cron.php +78 -77
  9. includes/admin/class-es-export-subscribers.php +10 -4
  10. includes/admin/class-es-form-widget.php +10 -18
  11. includes/admin/class-es-forms-table.php +38 -27
  12. includes/admin/class-es-handle-post-notification.php +12 -8
  13. includes/admin/class-es-handle-subscription.php +25 -23
  14. includes/admin/class-es-handle-sync-wp-user.php +6 -3
  15. includes/admin/class-es-import-subscribers.php +25 -11
  16. includes/admin/class-es-lists-table.php +31 -27
  17. includes/admin/class-es-newsletters.php +22 -21
  18. includes/admin/class-es-post-notifications.php +36 -31
  19. includes/admin/class-es-reports-table.php +30 -27
  20. includes/admin/class-es-subscribers-table.php +40 -34
  21. includes/admin/class-es-templates-table.php +76 -66
  22. includes/admin/class-es-tools.php +2 -1
  23. includes/class-email-subscribers.php +23 -20
  24. includes/class-es-common.php +89 -3
  25. includes/class-es-install.php +131 -9
  26. includes/class-es-mailer.php +2 -0
  27. includes/db/class-es-db-contacts.php +2 -1
  28. includes/db/class-es-db-notifications.php +3 -3
  29. includes/es-core-functions.php +185 -16
  30. includes/feedback/{class-ig-feedback-v-1-0-9.php → class-ig-feedback.php} +3 -3
  31. includes/feedback/{class-ig-tracker-v-1-0-9.php → class-ig-tracker.php} +4 -4
  32. includes/libraries/wp-async-request.php +0 -160
  33. includes/libraries/wp-background-process.php +0 -507
  34. includes/notices/class-es-admin-notices.php +3 -3
  35. includes/upgrade/class-es-background-process.php +0 -229
  36. includes/upgrade/class-es-background-updater.php +0 -151
  37. includes/upgrade/es-update-functions.php +76 -45
  38. languages/email-subscribers.pot +932 -898
  39. public/class-email-subscribers-public.php +8 -8
  40. public/partials/cron-message.php +23 -23
  41. public/partials/subscription-successfull.php +1 -1
  42. readme.txt +7 -2
admin/class-email-subscribers-admin.php CHANGED
@@ -112,8 +112,7 @@ class Email_Subscribers_Admin {
112
 
113
  wp_enqueue_style( $this->email_subscribers, plugin_dir_url( __FILE__ ) . 'css/email-subscribers-admin.css', array(), $this->version, 'all' );
114
 
115
-
116
- $get_page = Email_Subscribers::get_request( 'page' );
117
 
118
  if ( ! empty( $get_page ) && 'es_settings' === $get_page ) {
119
  // wp_enqueue_style( 'thickbox' );
@@ -197,11 +196,14 @@ class Email_Subscribers_Admin {
197
  // Function for Klawoo's Subscribe form on Help & Info page
198
  public static function klawoo_subscribe() {
199
  $url = 'http://app.klawoo.com/subscribe';
200
- if ( ! empty( $_REQUEST['form-source'] ) ) {
201
- update_option( 'ig_es_onboarding_status', $_REQUEST['form-source'] );
 
 
202
  }
 
203
  if ( ! empty( $_POST ) ) {
204
- $params = $_POST;
205
  } else {
206
  exit();
207
  }
@@ -357,9 +359,11 @@ class Email_Subscribers_Admin {
357
  $es_plugin_data = get_plugin_data( plugin_dir_path( __DIR__ ) . 'email-subscribers.php' );
358
  $es_current_version = $es_plugin_data['Version'];
359
  $admin_email = get_option( 'admin_email' );
360
- $ig_es_4015_db_updated_at = get_option( 'ig_es_4015_db_updated_at', false );
361
- $is_sa_option_exists = get_option('current_sa_email_subscribers_db_version', false);
362
- $onboarding_status = get_option( 'ig_es_onboarding_complete', 'no' );
 
 
363
  if ( ! $is_sa_option_exists && ! $ig_es_4015_db_updated_at && 'yes' !== $onboarding_status ) {
364
  include plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/onboarding.php';
365
  } else {
@@ -381,16 +385,15 @@ class Email_Subscribers_Admin {
381
  }
382
 
383
 
384
-
385
-
386
  function send_test_email() {
387
  $message = array();
388
  $message = array(
389
  'status' => 'ERROR',
390
  'message' => __( 'Something went wrong', 'email-subscribers' )
391
  );
392
- if ( ! empty( $_REQUEST['emails'] ) ) {
393
- $emails = $_REQUEST['emails'];
 
394
  $default_list = ES_DB_Lists::get_list_by_name( IG_DEFAULT_LIST );
395
  $list_id = $default_list['id'];
396
  //add to the default list
@@ -436,8 +439,11 @@ class Email_Subscribers_Admin {
436
 
437
  //save skip signup option
438
  function es_save_onboarding_skip() {
439
- if ( isset( $_GET['es_skip'] ) && $_GET['es_skip'] == '1' && isset( $_GET['option_name'] ) ) {
440
- $option_name = sanitize_text_field( $_GET['option_name'] );
 
 
 
441
  update_option( 'ig_es_ob_skip_' . $option_name, 'yes' );
442
  $referer = wp_get_referer();
443
  wp_safe_redirect( $referer );
@@ -447,8 +453,8 @@ class Email_Subscribers_Admin {
447
 
448
  public function count_contacts_by_list() {
449
 
450
- $list_id = ! empty( $_POST['list_id'] ) ? (int) $_POST['list_id'] : 0;
451
- $status = ! empty( $_POST['status'] ) ? $_POST['status'] : 'all';
452
 
453
  if ( $list_id == 0 ) {
454
  return 0;
112
 
113
  wp_enqueue_style( $this->email_subscribers, plugin_dir_url( __FILE__ ) . 'css/email-subscribers-admin.css', array(), $this->version, 'all' );
114
 
115
+ $get_page = ig_es_clean( ig_es_get_request_data( 'page' ) );
 
116
 
117
  if ( ! empty( $get_page ) && 'es_settings' === $get_page ) {
118
  // wp_enqueue_style( 'thickbox' );
196
  // Function for Klawoo's Subscribe form on Help & Info page
197
  public static function klawoo_subscribe() {
198
  $url = 'http://app.klawoo.com/subscribe';
199
+
200
+ $form_source = ig_es_clean( ig_es_get_request_data( 'from_source' ) );
201
+ if ( ! empty( $form_source ) ) {
202
+ update_option( 'ig_es_onboarding_status', $form_source );
203
  }
204
+
205
  if ( ! empty( $_POST ) ) {
206
+ $params = ig_es_get_post_data();
207
  } else {
208
  exit();
209
  }
359
  $es_plugin_data = get_plugin_data( plugin_dir_path( __DIR__ ) . 'email-subscribers.php' );
360
  $es_current_version = $es_plugin_data['Version'];
361
  $admin_email = get_option( 'admin_email' );
362
+ $ig_es_db_update_history = ES_Common::get_ig_option( 'db_update_history', array() );
363
+ $ig_es_4015_db_updated_at = ( is_array( $ig_es_db_update_history ) && isset( $ig_es_db_update_history['4.0.15'] ) ) ? $ig_es_db_update_history['4.0.15'] : false;
364
+
365
+ $is_sa_option_exists = get_option( 'current_sa_email_subscribers_db_version', false );
366
+ $onboarding_status = get_option( 'ig_es_onboarding_complete', 'no' );
367
  if ( ! $is_sa_option_exists && ! $ig_es_4015_db_updated_at && 'yes' !== $onboarding_status ) {
368
  include plugin_dir_path( dirname( __FILE__ ) ) . 'admin/partials/onboarding.php';
369
  } else {
385
  }
386
 
387
 
 
 
388
  function send_test_email() {
389
  $message = array();
390
  $message = array(
391
  'status' => 'ERROR',
392
  'message' => __( 'Something went wrong', 'email-subscribers' )
393
  );
394
+
395
+ $emails = ig_es_get_request_data( 'emails', array() );
396
+ if ( is_array( $emails ) && count( $emails ) > 0 ) {
397
  $default_list = ES_DB_Lists::get_list_by_name( IG_DEFAULT_LIST );
398
  $list_id = $default_list['id'];
399
  //add to the default list
439
 
440
  //save skip signup option
441
  function es_save_onboarding_skip() {
442
+
443
+ $es_skip = ig_es_clean( ig_es_get_request_data( 'es_skip' ) );
444
+ $option_name = ig_es_clean( ig_es_get_request_data( 'option_name' ) );
445
+
446
+ if ( $es_skip == '1' && ! empty( $option_name ) ) {
447
  update_option( 'ig_es_ob_skip_' . $option_name, 'yes' );
448
  $referer = wp_get_referer();
449
  wp_safe_redirect( $referer );
453
 
454
  public function count_contacts_by_list() {
455
 
456
+ $list_id = (int) ig_es_get_request_data( 'list_id', 0 );
457
+ $status = ig_es_get_request_data( 'status', 'all' );
458
 
459
  if ( $list_id == 0 ) {
460
  return 0;
admin/css/email-subscribers-admin.css CHANGED
@@ -1010,7 +1010,7 @@ a.button-send:hover,.es-error-actions .es-dashboard-btn:hover{
1010
 
1011
  }
1012
  .sp .es-actions{
1013
- margin: 0 auto;
1014
  display: block;
1015
  text-align: center;
1016
  width: 45%;
@@ -1031,7 +1031,7 @@ a.button-send:hover,.es-error-actions .es-dashboard-btn:hover{
1031
 
1032
 
1033
  #es-send-email-form input[type="email"]{
1034
- width: 60%;
1035
  padding: 0.4em 0.5em;
1036
  border: none;
1037
  box-shadow: none;
@@ -1213,4 +1213,4 @@ div.es .last {
1213
  /*color: #03a025;*/
1214
  color: #00a0d2;
1215
  font-weight: bold;
1216
- }
1010
 
1011
  }
1012
  .sp .es-actions{
1013
+ margin: 30px auto;
1014
  display: block;
1015
  text-align: center;
1016
  width: 45%;
1031
 
1032
 
1033
  #es-send-email-form input[type="email"]{
1034
+ width: 18em;
1035
  padding: 0.4em 0.5em;
1036
  border: none;
1037
  box-shadow: none;
1213
  /*color: #03a025;*/
1214
  color: #00a0d2;
1215
  font-weight: bold;
1216
+ }
admin/partials/onboarding.php CHANGED
@@ -8,16 +8,15 @@
8
  <li><?php _e('Added yourself', 'email-subscribers');?> <strong>(<?php echo get_option('admin_email'); ?>)</strong> <?php _e('to both lists', 'email-subscribers');?> </li>
9
  <li> <?php echo sprintf( __('Created a <a href="%s" target="_blank"> subscription / lead collection optin form</a>', 'email-subscribers'), admin_url('admin.php?page=es_forms') );?></li>
10
  <li> <?php echo sprintf( __('Added optin form to <a href="%s" target="_blank">default widget area</a> to show it on your site', 'email-subscribers'), admin_url('widgets.php'));?></li>
11
- <li> <?php echo sprintf( __('Created two Campaigns - "<a href="%s" target="_blank">Newsletter Broadcast</a>" and "<a href="%s" target="_blank">New Post Notification</a>"', 'email-subscribers'), admin_url('admin.php?page=es_campaigns'), admin_url('admin.php?page=es_campaigns'));?></li>
12
  </ol>
13
  <div class="es-form-wrapper">
14
  <div class="es-form-next"style="padding: 0.5em 0.8em; border-radius: 3px;">
15
- <?php _e('Next step is to test everything by <strong>sending a test mail</strong>. <br>We\'ve already added you, but recommend adding another email to test.', 'email-subscribers'); ?>
16
  </div>
17
  <form id="es-send-email-form">
18
  <label><strong><?php _e('Add an email to send a test to:', 'email-subscribers'); ?></strong></label><br/>
19
  <input type="email" placeholder="abc@gmail.com" name="es_test_email[]" class="es_email" required style="padding: 0.6em 0.5em; border: 1px solid #dcdcdc; "/>
20
- <a id="button-send" class="button-send"><?php _e('Send a test email', 'email-subscribers');?></a>
21
  <img class="es-loader" src="<?php echo EMAIL_SUBSCRIBERS_URL ?>/public/images/spinner.gif" style="display:none;"/>
22
  </form>
23
  </div>
@@ -31,7 +30,7 @@
31
  <div class="emoji" style="text-align: center; font-size: 10em; opacity: 0.45"> 📨 </div>
32
  <div class="es-actions">
33
  <div class="button button-hero es-receive-success-btn" style="width: 100%; text-align: center;padding: 0"><?php _e('Yes, I received the test emails', 'email-subscribers'); ?></div>
34
- <div style="margin-top: 0.7em; "><a href="#" style="text-decoration: none;color: #737373" class="es-secondary es-receive-error-btn""><?php _e('No, I haven\'t received them yet', 'email-subscribers'); ?></a></div>
35
  </div>
36
  </div>
37
  <div class="sp es-receive-success">
@@ -57,8 +56,8 @@
57
  <h1><?php _e('Check these few things below'); ?></h1>
58
  <ul>
59
  <li><?php _e('1. Check your spam or junk folder', 'email-subscribers')?></li>
60
- <li><?php echo sprintf(_e('2. <a href="%s" target="_blank">Go back and send another test email</a> with different email address ', 'email-subscribers'), admin_url('admin.php?page=es_settings'))?> </li>
61
- <li><?php echo '3. '.get_option('admin_email'); ?> address is free/disposable</li>
62
  <li><a href="https://www.icegram.com/documentation/reasons-why-you-havent-received-the-test-email/?utm_source=es&utm_medium=es_onboarding&utm_campaign=view_docs_help_page" target="_blank" style="color: #387bff; font-weight: 500; "> <?php _e('Explore more', 'email-subscribers')?></a></li>
63
  </ul>
64
  <div class="">
@@ -103,4 +102,4 @@
103
  </div>
104
 
105
  </div>
106
- </div>
8
  <li><?php _e('Added yourself', 'email-subscribers');?> <strong>(<?php echo get_option('admin_email'); ?>)</strong> <?php _e('to both lists', 'email-subscribers');?> </li>
9
  <li> <?php echo sprintf( __('Created a <a href="%s" target="_blank"> subscription / lead collection optin form</a>', 'email-subscribers'), admin_url('admin.php?page=es_forms') );?></li>
10
  <li> <?php echo sprintf( __('Added optin form to <a href="%s" target="_blank">default widget area</a> to show it on your site', 'email-subscribers'), admin_url('widgets.php'));?></li>
 
11
  </ol>
12
  <div class="es-form-wrapper">
13
  <div class="es-form-next"style="padding: 0.5em 0.8em; border-radius: 3px;">
14
+ <?php _e(' We will create "<strong>Newsletter Broadcast</strong>" and "<strong>New Post Notification</strong>" campaigns. Next step is to test everything by <strong>sending test campaigns</strong>.<br />We\'ve already added you, but recommend adding another email to test.', 'email-subscribers'); ?>
15
  </div>
16
  <form id="es-send-email-form">
17
  <label><strong><?php _e('Add an email to send a test to:', 'email-subscribers'); ?></strong></label><br/>
18
  <input type="email" placeholder="abc@gmail.com" name="es_test_email[]" class="es_email" required style="padding: 0.6em 0.5em; border: 1px solid #dcdcdc; "/>
19
+ <a id="button-send" class="button-send"><?php _e('Create and Send test camapigns', 'email-subscribers');?></a>
20
  <img class="es-loader" src="<?php echo EMAIL_SUBSCRIBERS_URL ?>/public/images/spinner.gif" style="display:none;"/>
21
  </form>
22
  </div>
30
  <div class="emoji" style="text-align: center; font-size: 10em; opacity: 0.45"> 📨 </div>
31
  <div class="es-actions">
32
  <div class="button button-hero es-receive-success-btn" style="width: 100%; text-align: center;padding: 0"><?php _e('Yes, I received the test emails', 'email-subscribers'); ?></div>
33
+ <div style="margin-top: 0.7em;"><a href="#" style="text-decoration: none;color: #737373" class="es-secondary es-receive-error-btn""><?php _e('No, I haven\'t received them yet', 'email-subscribers'); ?></a></div>
34
  </div>
35
  </div>
36
  <div class="sp es-receive-success">
56
  <h1><?php _e('Check these few things below'); ?></h1>
57
  <ul>
58
  <li><?php _e('1. Check your spam or junk folder', 'email-subscribers')?></li>
59
+ <li><?php echo sprintf(__('2. <a href="%s" target="_blank">Send another test email</a> with different email address ', 'email-subscribers'), admin_url('admin.php?page=es_settings#tabs-email_sending')); ?> </li>
60
+ <li><?php echo '3. Is <strong>'. get_option('admin_email') . '</strong>'; ?> email is free/disposable?</li>
61
  <li><a href="https://www.icegram.com/documentation/reasons-why-you-havent-received-the-test-email/?utm_source=es&utm_medium=es_onboarding&utm_campaign=view_docs_help_page" target="_blank" style="color: #387bff; font-weight: 500; "> <?php _e('Explore more', 'email-subscribers')?></a></li>
62
  </ul>
63
  <div class="">
102
  </div>
103
 
104
  </div>
105
+ </div>
admin/partials/sample.csv CHANGED
@@ -1,4 +1,4 @@
1
- First Name, Last Name, Email
2
- John, Doe, john@example.com
3
- Mark, T, mark.t@example.com
4
- Tracy, Thomas, tracy@example.com
1
+ First Name,Last Name,Email
2
+ John,Doe,john@example.com
3
+ Mark,T,mark.t@example.com
4
+ Tracy,Thomas,tracy@example.com
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.14
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
10
- * Tested up to: 5.2.2
11
  * Text Domain: email-subscribers
12
  * Domain Path: /languages/
13
  * License: GPLv3
@@ -24,8 +24,9 @@ if ( ! defined( 'WPINC' ) ) {
24
  * Define constants
25
  */
26
  define( 'ES_PLUGIN_DIR', dirname( __FILE__ ) );
27
- define( 'ES_PLUGIN_VERSION', '4.1.14' );
28
  define( 'ES_PLUGIN_BASE_NAME', plugin_basename( __FILE__ ) );
 
29
 
30
  if ( ! defined( 'ES_PLUGIN_FILE' ) ) {
31
  define( 'ES_PLUGIN_FILE', __FILE__ );
@@ -138,7 +139,6 @@ function es_subbox( $namefield = null, $desc = null, $group = null ) {
138
  function run_email_subscribers() {
139
  $plugin = new Email_Subscribers();
140
  $plugin->run();
141
-
142
  }
143
 
144
  run_email_subscribers();
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.15
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
10
+ * Tested up to: 5.2.3
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.15' );
28
  define( 'ES_PLUGIN_BASE_NAME', plugin_basename( __FILE__ ) );
29
+ define( 'IG_ES_FEEDBACK_VERSION', '1.0.10' );
30
 
31
  if ( ! defined( 'ES_PLUGIN_FILE' ) ) {
32
  define( 'ES_PLUGIN_FILE', __FILE__ );
139
  function run_email_subscribers() {
140
  $plugin = new Email_Subscribers();
141
  $plugin->run();
 
142
  }
143
 
144
  run_email_subscribers();
includes/admin/class-es-admin-settings.php CHANGED
@@ -29,13 +29,13 @@ class ES_Admin_Settings {
29
 
30
  public function es_settings_callback() {
31
 
32
- $submitted = ! empty( $_POST['submitted'] ) ? $_POST['submitted'] : '';
33
- $submit_action = ! empty( $_POST['submit_action'] ) ? $_POST['submit_action'] : '';
34
 
35
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
36
 
37
  if ( 'submitted' === $submitted && 'ig-es-save-admin-settings' === $submit_action ) {
38
- $options = $_POST;
39
  $options = apply_filters( 'ig_es_before_save_settings', $options );
40
 
41
  $options['ig_es_disable_wp_cron'] = isset( $options['ig_es_disable_wp_cron'] ) ? $options['ig_es_disable_wp_cron'] : 'no';
@@ -70,7 +70,8 @@ class ES_Admin_Settings {
70
  'ig_es_confirmation_mail_content',
71
  'ig_es_admin_new_contact_email_content',
72
  'ig_es_cron_admin_email',
73
- 'ig_es_blocked_domains'
 
74
  );
75
 
76
  $email_fields_to_sanitize = array(
@@ -230,7 +231,7 @@ class ES_Admin_Settings {
230
  'default' => 'full'
231
  ),
232
 
233
- 'ig_es_track_email_opens' => array(
234
  'id' => 'ig_es_track_email_opens',
235
  'name' => __( 'Track Opens', 'email-subscribers' ),
236
  'type' => 'checkbox',
@@ -238,8 +239,17 @@ class ES_Admin_Settings {
238
  'default' => 'yes'
239
  ),
240
 
241
- //'ig_es_unsubscribe_link' => array( 'type' => 'text', 'options' => false, 'placeholder' => '', 'readonly' => 'readonly', 'supplemental' => '', 'default' => '', 'id' => 'ig_es_unsubscribe_link', 'name' => __( 'Unsubscribe Link', 'email-subscribers' ), 'desc' => '', ),
242
- 'ig_es_unsubscribe_link_content' => array(
 
 
 
 
 
 
 
 
 
243
  'type' => 'textarea',
244
  'options' => false,
245
  'placeholder' => '',
@@ -506,7 +516,7 @@ class ES_Admin_Settings {
506
  ),
507
 
508
  'ig_es_hourly_email_send_limit' => array(
509
- 'type' => 'text',
510
  'placeholder' => '',
511
  'supplemental' => '',
512
  'default' => 50,
@@ -572,15 +582,18 @@ class ES_Admin_Settings {
572
 
573
  // Check which type of field we want
574
  switch ( $arguments['type'] ) {
 
575
  case 'text': // If it is a text field
576
  $field_html = sprintf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" %5$s />', $uid, $type, $placeholder, $value, $readonly );
577
  break;
578
- case 'password': // If it is a text field
579
- $field_html = sprintf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" %5$s />', $uid, $type, $placeholder, $value, $readonly );
580
  break;
 
581
  case 'email':
582
  $field_html = sprintf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" />', $uid, $type, $placeholder, $value );
583
  break;
 
584
  case 'textarea':
585
  $field_html = sprintf( '<textarea name="%1$s" id="%1$s" placeholder="%2$s" size="100" rows="12" cols="58">%3$s</textarea>',
586
  $uid, $placeholder, $value );
@@ -603,8 +616,9 @@ class ES_Admin_Settings {
603
  }
604
  break;
605
  case 'html' :
 
606
  $field_html = $html;
607
- default;
608
  }
609
 
610
  $field_html .= '<br />';
29
 
30
  public function es_settings_callback() {
31
 
32
+ $submitted = ig_es_clean( ig_es_get_request_data( 'submitted' ) );
33
+ $submit_action = ig_es_clean( ig_es_get_request_data( 'submit_action' ) );
34
 
35
+ $nonce = ig_es_clean( ig_es_get_request_data( '_wpnonce' ) );
36
 
37
  if ( 'submitted' === $submitted && 'ig-es-save-admin-settings' === $submit_action ) {
38
+ $options = ig_es_get_post_data();
39
  $options = apply_filters( 'ig_es_before_save_settings', $options );
40
 
41
  $options['ig_es_disable_wp_cron'] = isset( $options['ig_es_disable_wp_cron'] ) ? $options['ig_es_disable_wp_cron'] : 'no';
70
  'ig_es_confirmation_mail_content',
71
  'ig_es_admin_new_contact_email_content',
72
  'ig_es_cron_admin_email',
73
+ 'ig_es_blocked_domains',
74
+ 'ig_es_form_submission_success_message'
75
  );
76
 
77
  $email_fields_to_sanitize = array(
231
  'default' => 'full'
232
  ),
233
 
234
+ 'ig_es_track_email_opens' => array(
235
  'id' => 'ig_es_track_email_opens',
236
  'name' => __( 'Track Opens', 'email-subscribers' ),
237
  'type' => 'checkbox',
239
  'default' => 'yes'
240
  ),
241
 
242
+ 'ig_es_form_submission_success_message' => array(
243
+ 'type' => 'textarea',
244
+ 'options' => false,
245
+ 'placeholder' => '',
246
+ 'supplemental' => '',
247
+ 'default' => '',
248
+ 'id' => 'ig_es_form_submission_success_message',
249
+ 'name' => __( 'Message to display after form submission', 'email-subscribers' ),
250
+ 'desc' => '',
251
+ ),
252
+ 'ig_es_unsubscribe_link_content' => array(
253
  'type' => 'textarea',
254
  'options' => false,
255
  'placeholder' => '',
516
  ),
517
 
518
  'ig_es_hourly_email_send_limit' => array(
519
+ 'type' => 'number',
520
  'placeholder' => '',
521
  'supplemental' => '',
522
  'default' => 50,
582
 
583
  // Check which type of field we want
584
  switch ( $arguments['type'] ) {
585
+ case 'password':
586
  case 'text': // If it is a text field
587
  $field_html = sprintf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" %5$s />', $uid, $type, $placeholder, $value, $readonly );
588
  break;
589
+ case 'number': // If it is a number field
590
+ $field_html = sprintf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" %5$s min="0"/>', $uid, $type, $placeholder, $value, $readonly );
591
  break;
592
+
593
  case 'email':
594
  $field_html = sprintf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" />', $uid, $type, $placeholder, $value );
595
  break;
596
+
597
  case 'textarea':
598
  $field_html = sprintf( '<textarea name="%1$s" id="%1$s" placeholder="%2$s" size="100" rows="12" cols="58">%3$s</textarea>',
599
  $uid, $placeholder, $value );
616
  }
617
  break;
618
  case 'html' :
619
+ default:
620
  $field_html = $html;
621
+ break;
622
  }
623
 
624
  $field_html .= '<br />';
includes/admin/class-es-campaigns-table.php CHANGED
@@ -43,7 +43,8 @@ class ES_Campaigns_Table extends WP_List_Table {
43
 
44
  public function es_campaigns_callback() {
45
 
46
- $action = Email_Subscribers::get_request( 'action' );
 
47
  ?>
48
  <div class="wrap">
49
  <h1 class="wp-heading-inline"><?php _e( 'Campaigns', 'email-subscribers' ) ?>
@@ -70,7 +71,9 @@ class ES_Campaigns_Table extends WP_List_Table {
70
  }
71
 
72
  public function custom_admin_notice() {
73
- if ( Email_Subscribers::get_request( 'es_note_cat' ) ) {
 
 
74
  echo '<div class="updated"><p>Notification Added Successfully!</p></div>';
75
  }
76
  }
@@ -87,9 +90,9 @@ class ES_Campaigns_Table extends WP_List_Table {
87
 
88
  global $wpdb;
89
 
90
- $order_by = Email_Subscribers::get_request( 'orderby' );
91
- $order = Email_Subscribers::get_request( 'order' );
92
- $search = Email_Subscribers::get_request( 's' );
93
 
94
  if ( $do_count_only ) {
95
  $sql = "SELECT count(*) as total FROM " . IG_CAMPAIGNS_TABLE;
@@ -141,7 +144,6 @@ class ES_Campaigns_Table extends WP_List_Table {
141
  $sql .= " LIMIT $per_page";
142
  $sql .= ' OFFSET ' . ( $page_number - 1 ) * $per_page;
143
 
144
-
145
  $result = $wpdb->get_results( $sql, 'ARRAY_A' );
146
  } else {
147
  $result = $wpdb->get_var( $sql );
@@ -158,7 +160,8 @@ class ES_Campaigns_Table extends WP_List_Table {
158
  public function record_count() {
159
  global $wpdb;
160
 
161
- $sql = "SELECT COUNT(*) FROM " . IG_CAMPAIGNS_TABLE;
 
162
 
163
  return $wpdb->get_var( $sql );
164
  }
@@ -180,36 +183,38 @@ class ES_Campaigns_Table extends WP_List_Table {
180
  */
181
  public function column_default( $item, $column_name ) {
182
  switch ( $column_name ) {
183
- case 'base_template_id':
184
- return $item[ $column_name ];
185
  case 'list_ids':
186
  if ( ! empty( $item[ $column_name ] ) ) {
187
  return ES_DB_Lists::get_list_id_name_map( $item[ $column_name ] );
188
  } else {
189
  return '-';
190
  }
191
-
192
  case 'status':
193
  $status = ( $item[ $column_name ] == 1 ) ? __( 'Active', 'email-subscribers' ) : __( 'Inactive', 'email-subscribers' );
194
 
195
  return $status;
 
 
196
  case 'type':
197
  $type = ( $item[ $column_name ] === 'newsletter' ) ? __( 'Broadcast', 'email-subscribers' ) : $item[ $column_name ];
198
  $type = ucwords( str_replace( '_', ' ', $type ) );
199
 
200
  return $type;
201
-
202
  case 'categories':
203
  if ( ! empty( $item[ $column_name ] ) ) {
204
- $categories = ES_Common::convert_categories_string_to_array( $item[ $column_name ] , false);
205
- $categories = strpos($item[ $column_name ],'{a}All{a}') ? __('All','email-subscribers') : trim(trim(implode( ', ', $categories )), ',');
 
206
  return $categories;
207
  } else {
208
  return '-';
209
  }
210
-
211
  default:
212
- return $item[ $column_name ]; //Show the whole array for troubleshooting purposes
213
  }
214
  }
215
 
@@ -250,7 +255,7 @@ class ES_Campaigns_Table extends WP_List_Table {
250
  $title = '';
251
  }
252
 
253
- $slug = esc_attr('es_notifications');
254
 
255
  $actions ['edit'] = sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s">Edit</a>', 'email-subscribers' ), $slug, 'edit', absint( $item['id'] ), $nonce );
256
  $actions['delete'] = sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s" onclick="return checkDelete()">Delete</a>', 'email-subscribers' ), esc_attr( 'es_campaigns' ), 'delete', absint( $item['id'] ), $nonce );
@@ -331,7 +336,8 @@ class ES_Campaigns_Table extends WP_List_Table {
331
  $this->process_bulk_action();
332
 
333
  // Note: Disable Search box for now.
334
- $this->search_box( Email_Subscribers::get_request( 's' ), 'notification-search-input' );
 
335
 
336
  $per_page = $this->get_items_per_page( 'campaigns_per_page', 25 );
337
  $current_page = $this->get_pagenum();
@@ -350,13 +356,14 @@ class ES_Campaigns_Table extends WP_List_Table {
350
  if ( 'delete' === $this->current_action() ) {
351
 
352
  // In our file that handles the request, verify the nonce.
353
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
354
 
355
  if ( ! wp_verify_nonce( $nonce, 'es_post_notification' ) ) {
356
  $message = __( 'You are not allowed to delete campaign.', 'email-subscribers' );
357
  $status = 'error';
358
  } else {
359
- $this->delete_list( array( Email_Subscribers::get_request( 'list' ) ) );
 
360
  $message = __( 'Campaign has been deleted successfully!', 'email-subscribers' );
361
  $status = 'success';
362
  }
@@ -364,12 +371,12 @@ class ES_Campaigns_Table extends WP_List_Table {
364
  ES_Common::show_message( $message, $status );
365
  }
366
 
367
- $action = Email_Subscribers::get_request( 'action' );
368
- $action2 = Email_Subscribers::get_request( 'action2' );
369
  // If the delete bulk action is triggered
370
  if ( ( 'bulk_delete' === $action ) || ( 'bulk_delete' === $action2 ) ) {
371
 
372
- $ids = esc_sql( Email_Subscribers::get_request( 'campaigns' ) );
373
 
374
  if ( is_array( $ids ) && count( $ids ) > 0 ) {
375
 
@@ -396,15 +403,21 @@ class ES_Campaigns_Table extends WP_List_Table {
396
  */
397
  public function delete_list( $ids ) {
398
  global $wpdb;
399
- $ids = implode( ',', array_map( 'absint', $ids ) );
400
 
401
- $current_date = gmdate( 'Y-m-d G:i:s' );
402
- $query = "UPDATE " . IG_CAMPAIGNS_TABLE . " SET deleted_at = %s WHERE id IN ($ids)";
403
- $query = $wpdb->prepare( $query, array( $current_date ) );
404
- $result = $wpdb->query( $query );
405
 
406
- if ( $result ) {
407
- return true;
 
 
 
 
 
 
 
 
408
  }
409
 
410
  return false;
@@ -457,7 +470,3 @@ class ES_Campaigns_Table extends WP_List_Table {
457
 
458
  }
459
  }
460
-
461
- // add_action( 'admin_menu', function () {
462
- // ES_Campaigns_Table::get_instance();
463
- // } );
43
 
44
  public function es_campaigns_callback() {
45
 
46
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
47
+
48
  ?>
49
  <div class="wrap">
50
  <h1 class="wp-heading-inline"><?php _e( 'Campaigns', 'email-subscribers' ) ?>
71
  }
72
 
73
  public function custom_admin_notice() {
74
+ $es_note_cat = ig_es_clean( ig_es_get_request_data( 'es_note_cat' ) );
75
+
76
+ if ( $es_note_cat ) {
77
  echo '<div class="updated"><p>Notification Added Successfully!</p></div>';
78
  }
79
  }
90
 
91
  global $wpdb;
92
 
93
+ $order_by = sanitize_sql_orderby( ig_es_get_request_data( 'orderby' ) );
94
+ $order = ig_es_clean( ig_es_get_request_data( 'order' ) );
95
+ $search = ig_es_clean( ig_es_get_request_data( 's' ) );
96
 
97
  if ( $do_count_only ) {
98
  $sql = "SELECT count(*) as total FROM " . IG_CAMPAIGNS_TABLE;
144
  $sql .= " LIMIT $per_page";
145
  $sql .= ' OFFSET ' . ( $page_number - 1 ) * $per_page;
146
 
 
147
  $result = $wpdb->get_results( $sql, 'ARRAY_A' );
148
  } else {
149
  $result = $wpdb->get_var( $sql );
160
  public function record_count() {
161
  global $wpdb;
162
 
163
+ $campaigns_table = IG_CAMPAIGNS_TABLE;
164
+ $sql = "SELECT COUNT(*) FROM {$campaigns_table}";
165
 
166
  return $wpdb->get_var( $sql );
167
  }
183
  */
184
  public function column_default( $item, $column_name ) {
185
  switch ( $column_name ) {
186
+
 
187
  case 'list_ids':
188
  if ( ! empty( $item[ $column_name ] ) ) {
189
  return ES_DB_Lists::get_list_id_name_map( $item[ $column_name ] );
190
  } else {
191
  return '-';
192
  }
193
+ break;
194
  case 'status':
195
  $status = ( $item[ $column_name ] == 1 ) ? __( 'Active', 'email-subscribers' ) : __( 'Inactive', 'email-subscribers' );
196
 
197
  return $status;
198
+
199
+ break;
200
  case 'type':
201
  $type = ( $item[ $column_name ] === 'newsletter' ) ? __( 'Broadcast', 'email-subscribers' ) : $item[ $column_name ];
202
  $type = ucwords( str_replace( '_', ' ', $type ) );
203
 
204
  return $type;
205
+ break;
206
  case 'categories':
207
  if ( ! empty( $item[ $column_name ] ) ) {
208
+ $categories = ES_Common::convert_categories_string_to_array( $item[ $column_name ], false );
209
+ $categories = strpos( $item[ $column_name ], '{a}All{a}' ) ? __( 'All', 'email-subscribers' ) : trim( trim( implode( ', ', $categories ) ), ',' );
210
+
211
  return $categories;
212
  } else {
213
  return '-';
214
  }
215
+ break;
216
  default:
217
+ return $item[ $column_name ];
218
  }
219
  }
220
 
255
  $title = '';
256
  }
257
 
258
+ $slug = esc_attr( 'es_notifications' );
259
 
260
  $actions ['edit'] = sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s">Edit</a>', 'email-subscribers' ), $slug, 'edit', absint( $item['id'] ), $nonce );
261
  $actions['delete'] = sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s" onclick="return checkDelete()">Delete</a>', 'email-subscribers' ), esc_attr( 'es_campaigns' ), 'delete', absint( $item['id'] ), $nonce );
336
  $this->process_bulk_action();
337
 
338
  // Note: Disable Search box for now.
339
+ $search = ig_es_clean( ig_es_get_request_data( 's' ) );
340
+ $this->search_box( $search, 'notification-search-input' );
341
 
342
  $per_page = $this->get_items_per_page( 'campaigns_per_page', 25 );
343
  $current_page = $this->get_pagenum();
356
  if ( 'delete' === $this->current_action() ) {
357
 
358
  // In our file that handles the request, verify the nonce.
359
+ $nonce = ig_es_clean( ig_es_get_request_data( '_wpnonce' ) );
360
 
361
  if ( ! wp_verify_nonce( $nonce, 'es_post_notification' ) ) {
362
  $message = __( 'You are not allowed to delete campaign.', 'email-subscribers' );
363
  $status = 'error';
364
  } else {
365
+ $list = ig_es_clean( ig_es_get_request_data( 'list' ) );
366
+ $this->delete_list( array( $list ) );
367
  $message = __( 'Campaign has been deleted successfully!', 'email-subscribers' );
368
  $status = 'success';
369
  }
371
  ES_Common::show_message( $message, $status );
372
  }
373
 
374
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
375
+ $action2 = ig_es_clean( ig_es_get_request_data( 'action2' ) );
376
  // If the delete bulk action is triggered
377
  if ( ( 'bulk_delete' === $action ) || ( 'bulk_delete' === $action2 ) ) {
378
 
379
+ $ids = ig_es_clean( ig_es_get_request_data( 'campaigns' ) );
380
 
381
  if ( is_array( $ids ) && count( $ids ) > 0 ) {
382
 
403
  */
404
  public function delete_list( $ids ) {
405
  global $wpdb;
 
406
 
407
+ if ( is_array($ids) && count( $ids ) > 0 ) {
408
+
409
+ $campaigns_table = IG_CAMPAIGNS_TABLE;
 
410
 
411
+ $ids = implode( ',', array_map( 'absint', $ids ) );
412
+
413
+ $current_date = gmdate( 'Y-m-d G:i:s' );
414
+ $query = "UPDATE {$campaigns_table} SET deleted_at = %s WHERE id IN ($ids)";
415
+ $query = $wpdb->prepare( $query, array( $current_date ) );
416
+ $result = $wpdb->query( $query );
417
+
418
+ if ( $result ) {
419
+ return true;
420
+ }
421
  }
422
 
423
  return false;
470
 
471
  }
472
  }
 
 
 
 
includes/admin/class-es-cron.php CHANGED
@@ -25,10 +25,10 @@ class ES_Cron {
25
  $es_request = $es;
26
  $is_wp_cron = true;
27
  } else {
28
- $es_request = Email_Subscribers::get_request( 'es' );
29
  }
30
 
31
- // It's not a cron request. Say Goodbye!
32
  if ( 'cron' !== $es_request ) {
33
  return;
34
  }
@@ -39,7 +39,7 @@ class ES_Cron {
39
  return;
40
  }
41
 
42
- $self = ! empty( $_REQUEST['self'] ) ? $_REQUEST['self'] : 0;
43
 
44
  if ( 'cron' === $es_request ) {
45
  /*
@@ -55,34 +55,31 @@ class ES_Cron {
55
  }
56
 
57
  if ( $server_cron || ( $is_wp_cron && $time_diff >= 1 ) || $self == 1 ) {
58
- $guid = ( ! empty( $guid ) ) ? $guid : Email_Subscribers::get_request( 'guid' );
59
  if ( ! empty( $guid ) ) {
60
- $response = array( 'status' => 'SUCCESS', 'es_remaining_email_count' => 100 );
 
61
  $es_process_request = true;
62
 
63
  // filter request
64
  $es_process_request = apply_filters( 'es_process_request', $es_process_request );
 
65
  if ( true === $es_process_request ) {
66
  $security1 = strlen( $guid );
67
  $es_c_cronguid_noslash = str_replace( "-", "", $guid );
68
  $security2 = strlen( $es_c_cronguid_noslash );
69
  if ( $security1 == 34 && $security2 == 30 ) {
70
  if ( ! preg_match( '/[^a-z]/', $es_c_cronguid_noslash ) ) {
71
- $es_c_cronurl = ES_Common::get_cron_url();
72
- $es_c_croncount = get_option( 'ig_es_hourly_email_send_limit', 50 );
73
 
74
- // We are running wp cron at the interval of 15 minutes.
75
- if ( $is_wp_cron ) {
76
- $es_c_croncount = floor( $es_c_croncount / 4 );
 
77
  }
78
 
79
- // Modify cron count?
80
- $es_c_croncount = apply_filters( 'es_email_sending_limit', $es_c_croncount );
81
  parse_str( $es_c_cronurl, $output );
82
  if ( $guid === $output['guid'] ) {
83
- if ( ! is_numeric( $es_c_croncount ) ) { //if $es_c_croncount is coming empty, then set $es_c_croncount should be passed empty?
84
- $es_c_croncount = 50;
85
- }
86
 
87
  /**
88
  * - Get GUID from ig_es_mailing_queue table which are in queue
@@ -92,87 +89,90 @@ class ES_Cron {
92
  * - Update status in ig_es_mailing_queue table
93
  * - Update status in ig_es_sending_queue table
94
  */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
95
 
96
- // Get GUID from sentdetails report which are in queue
97
- $campaign_hash = Email_Subscribers::get_request( 'campaign_hash' );
98
-
99
- if ( $self ) {
100
- $es_c_croncount = ceil( $es_c_croncount / 4 ); // Send 1/4 of total limit
101
- }
102
-
103
- $notification = ES_DB_Mailing_Queue::get_notification_to_be_sent( $campaign_hash );
104
- $notification_guid = isset( $notification['hash'] ) ? $notification['hash'] : null;
105
-
106
- if ( ! is_null( $notification_guid ) ) {
107
- ES_DB_Mailing_Queue::update_sent_status( $notification_guid, 'Sending' );
108
-
109
- // Get subscribers from the deliverreport table based on fetched guid
110
- $emails = ES_DB_Sending_Queue::get_emails_to_be_sent_by_hash( $notification_guid, $es_c_croncount );
111
- $total_emails = count( $emails );
112
- // Found Subscribers to send notification?
113
- if ( $total_emails > 0 ) {
114
- $ids = array();
115
- foreach ( $emails as $email ) {
116
- $ids[] = $email['id'];
117
- }
118
-
119
- $updated = ES_DB_Sending_Queue::update_sent_status($ids, 'Sending');
120
 
121
- // Send out emails
122
- if($updated) {
123
- ES_Mailer::prepare_and_send_email( $emails, $notification );
124
- ES_DB_Sending_Queue::update_sent_status($ids, 'Sent');
125
- }
126
 
127
- $total_remaining_emails = ES_DB_Sending_Queue::get_total_emails_to_be_sent_by_hash( $notification_guid );
128
- $remaining_emails_to_be_sent = ES_DB_Sending_Queue::get_total_emails_to_be_sent();
129
 
130
- // No emails left for the $notification_guid??? Send admin notification for the
131
- // Completion of a job
132
- if ( $total_remaining_emails == 0 ) {
133
- ES_DB_Mailing_Queue::update_sent_status( $notification_guid, 'Sent' );
134
 
135
- $notify_admin = get_option( 'ig_es_enable_cron_admin_email', 'yes' );
136
 
137
- if ( 'yes' === $notify_admin ) {
138
 
139
- $admin_email_addresses = get_option( 'ig_es_admin_emails' );
140
- if ( ! empty( $admin_email_addresses ) ) {
141
- $template = ES_Mailer::prepare_es_cron_admin_email( $notification_guid );
142
 
143
- if ( ! empty( $template ) ) {
144
- $subject = get_option( 'ig_es_cron_admin_email_subject', __( 'Campaign Sent!', 'email-subscribers' ) );
145
- $notification = ES_DB_Mailing_Queue::get_notification_by_hash( $notification_guid );
146
- if ( isset( $notification['subject'] ) ) {
147
- $subject = str_replace( '{{SUBJECT}}', $notification['subject'], $subject );
148
- }
149
 
150
- $admin_emails = explode( ',', $admin_email_addresses );
151
- foreach ( $admin_emails as $admin_email ) {
152
- $admin_email = trim( $admin_email );
153
- ES_Mailer::send( $admin_email, $subject, $template );
 
154
  }
155
  }
156
  }
157
  }
158
- }
159
 
160
- $response['total_emails_sent'] = $total_emails;
161
- $response['es_remaining_email_count'] = $remaining_emails_to_be_sent;
162
- $response['message'] = 'EMAILS_SENT';
163
- $response['status'] = 'SUCCESS';
164
- // update last cron run time
165
- update_option( 'ig_es_last_cron_run', time() );
 
 
 
 
 
 
166
  } else {
167
  $response['es_remaining_email_count'] = 0;
168
- $response['message'] = 'EMAILS_NOT_FOUND';
169
  $response['status'] = 'SUCCESS';
170
- ES_DB_Mailing_Queue::update_sent_status( $notification_guid, 'Sent' );
171
  }
172
  } else {
173
- $response['es_remaining_email_count'] = 0;
174
- $response['message'] = 'NOTIFICATION_NOT_FOUND';
175
- $response['status'] = 'SUCCESS';
176
  }
177
  } else {
178
  $self = false;
@@ -263,6 +263,7 @@ class ES_Cron {
263
  'DO_NOT_PROCESS_REQUEST' => __( 'Not allowed to process request.', 'email-susbscribers' ),
264
  'EMPTY_CRON_GUID' => __( 'GUID is empty.', 'email-susbscribers' ),
265
  'PLEASE_TRY_AGAIN_LATER' => __( 'Please try after sometime.', 'email-susbscribers' ),
 
266
  );
267
 
268
  $message_text = ! empty( $status_messages[ $message ] ) ? $status_messages[ $message ] : '';
25
  $es_request = $es;
26
  $is_wp_cron = true;
27
  } else {
28
+ $es_request = ig_es_clean( ig_es_get_request_data( 'es' ) );
29
  }
30
 
31
+ // It's not a cron request . Say Goodbye!
32
  if ( 'cron' !== $es_request ) {
33
  return;
34
  }
39
  return;
40
  }
41
 
42
+ $self = ig_es_get_request_data( 'self', 0 );
43
 
44
  if ( 'cron' === $es_request ) {
45
  /*
55
  }
56
 
57
  if ( $server_cron || ( $is_wp_cron && $time_diff >= 1 ) || $self == 1 ) {
58
+ $guid = ( ! empty( $guid ) ) ? $guid : ig_es_clean( ig_es_get_request_data( 'guid' ) );
59
  if ( ! empty( $guid ) ) {
60
+ $response = array( 'status' => 'SUCCESS', 'es_remaining_email_count' => 100 );
61
+
62
  $es_process_request = true;
63
 
64
  // filter request
65
  $es_process_request = apply_filters( 'es_process_request', $es_process_request );
66
+
67
  if ( true === $es_process_request ) {
68
  $security1 = strlen( $guid );
69
  $es_c_cronguid_noslash = str_replace( "-", "", $guid );
70
  $security2 = strlen( $es_c_cronguid_noslash );
71
  if ( $security1 == 34 && $security2 == 30 ) {
72
  if ( ! preg_match( '/[^a-z]/', $es_c_cronguid_noslash ) ) {
73
+ $es_c_cronurl = ES_Common::get_cron_url();
 
74
 
75
+ // Modify cron count?
76
+ $es_c_croncount = apply_filters( 'es_email_sending_limit', 0 );
77
+ if ( ! is_numeric( $es_c_croncount ) ) {
78
+ $es_c_croncount = 50; // Set default
79
  }
80
 
 
 
81
  parse_str( $es_c_cronurl, $output );
82
  if ( $guid === $output['guid'] ) {
 
 
 
83
 
84
  /**
85
  * - Get GUID from ig_es_mailing_queue table which are in queue
89
  * - Update status in ig_es_mailing_queue table
90
  * - Update status in ig_es_sending_queue table
91
  */
92
+ $es_c_croncount = ES_Common::total_emails_to_be_sent( $es_c_croncount );
93
+ if ( $es_c_croncount > 0 ) {
94
+
95
+ // Get GUID from sentdetails report which are in queue
96
+ $campaign_hash = ig_es_clean( ig_es_get_request_data( 'campaign_hash' ) );
97
+
98
+ $notification = ES_DB_Mailing_Queue::get_notification_to_be_sent( $campaign_hash );
99
+ $notification_guid = isset( $notification['hash'] ) ? $notification['hash'] : null;
100
+
101
+ if ( ! is_null( $notification_guid ) ) {
102
+ ES_DB_Mailing_Queue::update_sent_status( $notification_guid, 'Sending' );
103
+
104
+ // Get subscribers from the deliverreport table based on fetched guid
105
+ $emails = ES_DB_Sending_Queue::get_emails_to_be_sent_by_hash( $notification_guid, $es_c_croncount );
106
+ $total_emails = count( $emails );
107
+ // Found Subscribers to send notification?
108
+ if ( $total_emails > 0 ) {
109
+ $ids = array();
110
+ foreach ( $emails as $email ) {
111
+ $ids[] = $email['id'];
112
+ }
113
 
114
+ $updated = ES_DB_Sending_Queue::update_sent_status( $ids, 'Sending' );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
115
 
116
+ // Send out emails
117
+ if ( $updated ) {
118
+ ES_Mailer::prepare_and_send_email( $emails, $notification );
119
+ ES_DB_Sending_Queue::update_sent_status( $ids, 'Sent' );
120
+ }
121
 
122
+ $total_remaining_emails = ES_DB_Sending_Queue::get_total_emails_to_be_sent_by_hash( $notification_guid );
123
+ $remaining_emails_to_be_sent = ES_DB_Sending_Queue::get_total_emails_to_be_sent();
124
 
125
+ // No emails left for the $notification_guid??? Send admin notification for the
126
+ // Completion of a job
127
+ if ( $total_remaining_emails == 0 ) {
128
+ ES_DB_Mailing_Queue::update_sent_status( $notification_guid, 'Sent' );
129
 
130
+ $notify_admin = get_option( 'ig_es_enable_cron_admin_email', 'yes' );
131
 
132
+ if ( 'yes' === $notify_admin ) {
133
 
134
+ $admin_email_addresses = get_option( 'ig_es_admin_emails' );
135
+ if ( ! empty( $admin_email_addresses ) ) {
136
+ $template = ES_Mailer::prepare_es_cron_admin_email( $notification_guid );
137
 
138
+ if ( ! empty( $template ) ) {
139
+ $subject = get_option( 'ig_es_cron_admin_email_subject', __( 'Campaign Sent!', 'email-subscribers' ) );
140
+ $notification = ES_DB_Mailing_Queue::get_notification_by_hash( $notification_guid );
141
+ if ( isset( $notification['subject'] ) ) {
142
+ $subject = str_replace( '{{SUBJECT}}', $notification['subject'], $subject );
143
+ }
144
 
145
+ $admin_emails = explode( ',', $admin_email_addresses );
146
+ foreach ( $admin_emails as $admin_email ) {
147
+ $admin_email = trim( $admin_email );
148
+ ES_Mailer::send( $admin_email, $subject, $template );
149
+ }
150
  }
151
  }
152
  }
153
  }
 
154
 
155
+ $response['total_emails_sent'] = $total_emails;
156
+ $response['es_remaining_email_count'] = $remaining_emails_to_be_sent;
157
+ $response['message'] = 'EMAILS_SENT';
158
+ $response['status'] = 'SUCCESS';
159
+ // update last cron run time
160
+ update_option( 'ig_es_last_cron_run', time() );
161
+ } else {
162
+ $response['es_remaining_email_count'] = 0;
163
+ $response['message'] = 'EMAILS_NOT_FOUND';
164
+ $response['status'] = 'SUCCESS';
165
+ ES_DB_Mailing_Queue::update_sent_status( $notification_guid, 'Sent' );
166
+ }
167
  } else {
168
  $response['es_remaining_email_count'] = 0;
169
+ $response['message'] = 'NOTIFICATION_NOT_FOUND';
170
  $response['status'] = 'SUCCESS';
 
171
  }
172
  } else {
173
+ $self = false;
174
+ $response['status'] = 'ERROR';
175
+ $response['message'] = 'EMAIL_SENDING_LIMIT_EXCEEDED';
176
  }
177
  } else {
178
  $self = false;
263
  'DO_NOT_PROCESS_REQUEST' => __( 'Not allowed to process request.', 'email-susbscribers' ),
264
  'EMPTY_CRON_GUID' => __( 'GUID is empty.', 'email-susbscribers' ),
265
  'PLEASE_TRY_AGAIN_LATER' => __( 'Please try after sometime.', 'email-susbscribers' ),
266
+ 'EMAIL_SENDING_LIMIT_EXCEEDED' => __( 'You have hit your hourly email sending limit. Please try after sometime.', 'email-susbscribers' ),
267
  );
268
 
269
  $message_text = ! empty( $status_messages[ $message ] ) ? $status_messages[ $message ] : '';
includes/admin/class-es-export-subscribers.php CHANGED
@@ -15,13 +15,18 @@ class Export_Subscribers {
15
  */
16
  public function __construct() {
17
 
18
- if ( isset( $_GET['report'] ) && isset( $_GET['status'] ) ) {
 
 
 
 
 
19
 
20
- $status = trim( $_GET['status'] );
21
  $selected_list_id = 0;
22
 
23
  if ( 'select_list' === $status ) {
24
- $selected_list_id = ! empty( $_GET['list_id'] ) ? $_GET['list_id'] : 0;
 
25
  if ( 0 === $selected_list_id ) {
26
  $message = __( "Please Select List", "email-subscribers" );
27
  ES_Common::show_message( $message, 'error' );
@@ -176,6 +181,7 @@ class Export_Subscribers {
176
  break;
177
 
178
  case 'select_list':
 
179
  return '-';
180
  break;
181
  }
@@ -309,7 +315,7 @@ class Export_Subscribers {
309
  foreach ( $contact_list_map[ $contact_id ] as $list_details ) {
310
  $data['list'] = $lists_id_name_map[ $list_details['list_id'] ];
311
  $data['status'] = ucfirst( $list_details['status'] );
312
- $data['optin_type'] = ($list_details['optin_type'] == 1) ? 'Single Opt-In' : 'Double Opt-In';
313
  $data['created_at'] = $subscriber['created_at'];
314
  $csv_output .= '"' . implode( '", "', $data ) . '"';
315
  $csv_output .= "\n";
15
  */
16
  public function __construct() {
17
 
18
+ $report = ig_es_clean( ig_es_get_request_data( 'report' ) );
19
+ $status = ig_es_clean( ig_es_get_request_data( 'status' ) );
20
+
21
+ if ( $report && $status ) {
22
+
23
+ $status = trim( $status );
24
 
 
25
  $selected_list_id = 0;
26
 
27
  if ( 'select_list' === $status ) {
28
+ $selected_list_id = ig_es_clean( ig_es_get_request_data( 'list_id', 0 ) );
29
+
30
  if ( 0 === $selected_list_id ) {
31
  $message = __( "Please Select List", "email-subscribers" );
32
  ES_Common::show_message( $message, 'error' );
181
  break;
182
 
183
  case 'select_list':
184
+ default:
185
  return '-';
186
  break;
187
  }
315
  foreach ( $contact_list_map[ $contact_id ] as $list_details ) {
316
  $data['list'] = $lists_id_name_map[ $list_details['list_id'] ];
317
  $data['status'] = ucfirst( $list_details['status'] );
318
+ $data['optin_type'] = ( $list_details['optin_type'] == 1 ) ? 'Single Opt-In' : 'Double Opt-In';
319
  $data['created_at'] = $subscriber['created_at'];
320
  $csv_output .= '"' . implode( '", "', $data ) . '"';
321
  $csv_output .= "\n";
includes/admin/class-es-form-widget.php CHANGED
@@ -32,25 +32,17 @@ class ES_Form_Widget extends WP_Widget {
32
  }
33
 
34
 
35
- $name_visible = ( ! empty( $form_data['name_visible'] ) && 'yes' === $form_data['name_visible'] ) ? 'yes' : '';
36
- $name_required = ( ! empty( $form_data['name_required'] ) && 'yes' === $form_data['name_required'] ) ? 'yes' : '';
37
- $list_visible = ( ! empty( $form_data['list_visible'] ) && 'yes' === $form_data['list_visible'] ) ? 'yes' : '';
38
- $lists = ( ! empty( $form_data['lists'] ) ) ? $form_data['lists'] : array();
39
- $desc = ( ! empty( $form_data['desc'] ) ) ? $form_data['desc'] : '';
40
- $name_label = ( ! empty( $form_data['name_label'] ) ) ? $form_data['name_label'] : '';
41
- $email_label = ( ! empty( $form_data['email_label'] ) ) ? $form_data['email_label'] : '';
42
- $button_label = ( ! empty( $form_data['button_label'] ) ) ? $form_data['button_label'] : '';
43
-
44
- $data['name_visible'] = $name_visible;
45
- $data['name_required'] = $name_required;
46
- $data['form_id'] = $form_id;
47
- $data['list_visible'] = $list_visible;
48
- $data['lists'] = $lists;
49
  $data['list'] = '';
50
- $data['desc'] = $desc;
51
- $data['name_label'] = $name_label;
52
- $data['email_label'] = $email_label;
53
- $data['button_label'] = $button_label;
 
 
 
 
54
 
55
  ES_Shortcode::render_form( $data );
56
 
32
  }
33
 
34
 
35
+ $data = array();
36
+ $data['form_id'] = 0;
 
 
 
 
 
 
 
 
 
 
 
 
37
  $data['list'] = '';
38
+ $data['name_visible'] = ( ! empty( $form_data['name_visible'] ) && 'yes' === $form_data['name_visible'] ) ? 'yes' : '';
39
+ $data['name_required'] = ( ! empty( $form_data['name_required'] ) && 'yes' === $form_data['name_required'] ) ? 'yes' : '';
40
+ $data['list_visible'] = ( ! empty( $form_data['list_visible'] ) && 'yes' === $form_data['list_visible'] ) ? 'yes' : '';
41
+ $data['lists'] = ( ! empty( $form_data['lists'] ) ) ? $form_data['lists'] : array();
42
+ $data['desc'] = ( ! empty( $form_data['desc'] ) ) ? $form_data['desc'] : '';
43
+ $data['name_label'] = ( ! empty( $form_data['name_label'] ) ) ? $form_data['name_label'] : '';
44
+ $data['email_label'] = ( ! empty( $form_data['email_label'] ) ) ? $form_data['email_label'] : '';
45
+ $data['button_label'] = ( ! empty( $form_data['button_label'] ) ) ? $form_data['button_label'] : '';
46
 
47
  ES_Shortcode::render_form( $data );
48
 
includes/admin/class-es-forms-table.php CHANGED
@@ -31,13 +31,14 @@ class ES_Forms_Table extends WP_List_Table {
31
 
32
  public function es_forms_callback() {
33
 
34
- $action = Email_Subscribers::get_request( 'action' );
35
  ?>
36
  <div class="wrap">
37
  <?php if ( 'new' === $action ) {
38
  $this->es_new_form_callback();
39
  } elseif ( 'edit' === $action ) {
40
- echo $this->edit_form( absint( Email_Subscribers::get_request( 'form' ) ) );
 
41
  } else { ?>
42
  <h1 class="wp-heading-inline"><?php _e( 'Forms', 'email-subscribers' ) ?><a href="admin.php?page=es_forms&action=new" class="page-title-action"> <?php _e( 'Add New', 'email-subscribers' ) ?></a></h1>
43
  <?php Email_Subscribers_Admin::es_feedback(); ?>
@@ -110,13 +111,14 @@ class ES_Forms_Table extends WP_List_Table {
110
 
111
  public function es_new_form_callback() {
112
 
113
- $submitted = Email_Subscribers::get_request( 'submitted' );
114
 
115
  if ( 'submitted' === $submitted ) {
116
 
117
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
118
- $form_data = Email_Subscribers::get_request( 'form_data' );
119
- $lists = Email_Subscribers::get_request( 'lists' );
 
120
  $form_data['lists'] = $lists;
121
 
122
  $validate_data = array(
@@ -148,21 +150,21 @@ class ES_Forms_Table extends WP_List_Table {
148
  global $wpdb;
149
 
150
  if ( $id ) {
 
151
 
152
  $data = $wpdb->get_results( "SELECT * FROM " . IG_FORMS_TABLE . " WHERE id = $id", ARRAY_A );
153
 
154
  if ( count( $data ) > 0 ) {
155
 
156
- $submitted = Email_Subscribers::get_request( 'submitted' );
157
-
158
 
159
  if ( 'submitted' === $submitted ) {
160
 
161
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
162
- $form_data = Email_Subscribers::get_request( 'form_data' );
163
- $lists = Email_Subscribers::get_request( 'lists' );
164
- $form_data['lists'] = $lists;
165
 
 
166
 
167
  $validate_data = array(
168
  'nonce' => $nonce,
@@ -514,15 +516,17 @@ class ES_Forms_Table extends WP_List_Table {
514
 
515
  global $wpdb;
516
 
517
- $order_by = Email_Subscribers::get_request( 'orderby' );
518
- $order = Email_Subscribers::get_request( 'order' );
519
- $search = stripslashes( Email_Subscribers::get_request( 's' ) );
520
 
 
521
  if ( $do_count_only ) {
522
- $sql = "SELECT count(*) as total FROM " . IG_FORMS_TABLE;
523
  } else {
524
- $sql = "SELECT * FROM " . IG_FORMS_TABLE;
525
  }
 
526
  $args = $query = array();
527
 
528
  $add_where_clause = true;
@@ -585,10 +589,13 @@ class ES_Forms_Table extends WP_List_Table {
585
  public function delete_list( $ids ) {
586
  global $wpdb;
587
 
 
 
588
  $ids = "'" . implode( "', '", array_map( 'absint', $ids ) ) . "'";
589
  $current_date = ig_get_current_date_time();
590
- $query = "UPDATE " . IG_FORMS_TABLE . " SET deleted_at = %s WHERE id IN ({$ids})";
591
  $query = $wpdb->prepare( $query, array( $current_date ) );
 
592
  $wpdb->query( $query );
593
  }
594
 
@@ -654,10 +661,12 @@ class ES_Forms_Table extends WP_List_Table {
654
 
655
  $list_nonce = wp_create_nonce( 'es_form' );
656
 
657
- $title = '<strong>' . stripslashes( $item['name'] ) . '</strong>';
 
 
658
  $actions = array(
659
- 'edit' => sprintf( __( '<a href="?page=%s&action=%s&form=%s&_wpnonce=%s">Edit</a>', 'email-subscribers' ), esc_attr( Email_Subscribers::get_request( 'page' ) ), 'edit', absint( $item['id'] ), $list_nonce ),
660
- 'delete' => sprintf( __( '<a href="?page=%s&action=%s&form=%s&_wpnonce=%s" onclick="return checkDelete()">Delete</a>', 'email-subscribers' ), esc_attr( Email_Subscribers::get_request( 'page' ) ), 'delete', absint( $item['id'] ), $list_nonce )
661
  );
662
 
663
  return $title . $this->row_actions( $actions );
@@ -726,7 +735,9 @@ class ES_Forms_Table extends WP_List_Table {
726
 
727
  /** Process bulk action */
728
  $this->process_bulk_action();
729
- $this->search_box( Email_Subscribers::get_request( 's' ), 'form-search-input' );
 
 
730
 
731
  $per_page = $this->get_items_per_page( 'forms_per_page', 25 );
732
  $current_page = $this->get_pagenum();
@@ -745,14 +756,14 @@ class ES_Forms_Table extends WP_List_Table {
745
  if ( 'delete' === $this->current_action() ) {
746
 
747
  // In our file that handles the request, verify the nonce.
748
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
749
 
750
  if ( ! wp_verify_nonce( $nonce, 'es_form' ) ) {
751
  $message = __( 'You do not have permission to delete this form.', 'email-subscribers' );
752
  ES_Common::show_message( $message, 'error' );
753
  } else {
754
 
755
- $form = Email_Subscribers::get_request( 'form' );
756
 
757
  $this->delete_list( array( $form ) );
758
  $message = __( 'Form has been deleted successfully!', 'email-subscribers' );
@@ -760,12 +771,12 @@ class ES_Forms_Table extends WP_List_Table {
760
  }
761
  }
762
 
763
- $action = Email_Subscribers::get_request( 'action' );
764
- $action2 = Email_Subscribers::get_request( 'action2' );
765
  // If the delete bulk action is triggered
766
  if ( ( 'bulk_delete' === $action ) || ( 'bulk_delete' === $action2 ) ) {
767
 
768
- $forms = Email_Subscribers::get_request( 'forms' );
769
 
770
  if ( ! empty( $forms ) > 0 ) {
771
  $this->delete_list( $forms );
31
 
32
  public function es_forms_callback() {
33
 
34
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
35
  ?>
36
  <div class="wrap">
37
  <?php if ( 'new' === $action ) {
38
  $this->es_new_form_callback();
39
  } elseif ( 'edit' === $action ) {
40
+ $form = ig_es_clean( ig_es_get_request_data( 'form' ) );
41
+ echo $this->edit_form( absint( $form ) );
42
  } else { ?>
43
  <h1 class="wp-heading-inline"><?php _e( 'Forms', 'email-subscribers' ) ?><a href="admin.php?page=es_forms&action=new" class="page-title-action"> <?php _e( 'Add New', 'email-subscribers' ) ?></a></h1>
44
  <?php Email_Subscribers_Admin::es_feedback(); ?>
111
 
112
  public function es_new_form_callback() {
113
 
114
+ $submitted = ig_es_clean( ig_es_get_request_data( 'submitted' ) );
115
 
116
  if ( 'submitted' === $submitted ) {
117
 
118
+ $nonce = ig_es_clean( ig_es_get_request_data( '_wpnonce' ) );
119
+ $form_data = ig_es_clean( ig_es_get_request_data( 'form_data' ) );
120
+ $lists = ig_es_clean( ig_es_get_request_data( 'lists' ) );
121
+
122
  $form_data['lists'] = $lists;
123
 
124
  $validate_data = array(
150
  global $wpdb;
151
 
152
  if ( $id ) {
153
+ $form_data = array();
154
 
155
  $data = $wpdb->get_results( "SELECT * FROM " . IG_FORMS_TABLE . " WHERE id = $id", ARRAY_A );
156
 
157
  if ( count( $data ) > 0 ) {
158
 
159
+ $submitted = ig_es_clean( ig_es_get_request_data( 'submitted' ) );
 
160
 
161
  if ( 'submitted' === $submitted ) {
162
 
163
+ $nonce = ig_es_clean( ig_es_get_request_data( '_wpnonce' ) );
164
+ $form_data = ig_es_clean( ig_es_get_request_data( 'form_data' ) );
165
+ $lists = ig_es_clean( ig_es_get_request_data( 'lists' ) );
 
166
 
167
+ $form_data['lists'] = $lists;
168
 
169
  $validate_data = array(
170
  'nonce' => $nonce,
516
 
517
  global $wpdb;
518
 
519
+ $order_by = sanitize_sql_orderby( ig_es_get_request_data( 'orderby' ) );
520
+ $order = ig_es_clean( ig_es_get_request_data( 'order' ) );
521
+ $search = ig_es_clean( ig_es_get_request_data( 's' ) );
522
 
523
+ $forms_table = IG_FORMS_TABLE;
524
  if ( $do_count_only ) {
525
+ $sql = "SELECT count(*) as total FROM {$forms_table}";
526
  } else {
527
+ $sql = "SELECT * FROM {$forms_table}";
528
  }
529
+
530
  $args = $query = array();
531
 
532
  $add_where_clause = true;
589
  public function delete_list( $ids ) {
590
  global $wpdb;
591
 
592
+ $forms_table = IG_FORMS_TABLE;
593
+
594
  $ids = "'" . implode( "', '", array_map( 'absint', $ids ) ) . "'";
595
  $current_date = ig_get_current_date_time();
596
+ $query = "UPDATE {$forms_table} SET deleted_at = %s WHERE id IN ({$ids})";
597
  $query = $wpdb->prepare( $query, array( $current_date ) );
598
+
599
  $wpdb->query( $query );
600
  }
601
 
661
 
662
  $list_nonce = wp_create_nonce( 'es_form' );
663
 
664
+ $title = '<strong>' . stripslashes( $item['name'] ) . '</strong>';
665
+
666
+ $page = ig_es_clean( ig_es_get_request_data( 'page' ) );
667
  $actions = array(
668
+ 'edit' => sprintf( __( '<a href="?page=%s&action=%s&form=%s&_wpnonce=%s">Edit</a>', 'email-subscribers' ), esc_attr( $page ), 'edit', absint( $item['id'] ), $list_nonce ),
669
+ 'delete' => sprintf( __( '<a href="?page=%s&action=%s&form=%s&_wpnonce=%s" onclick="return checkDelete()">Delete</a>', 'email-subscribers' ), esc_attr( $page ), 'delete', absint( $item['id'] ), $list_nonce )
670
  );
671
 
672
  return $title . $this->row_actions( $actions );
735
 
736
  /** Process bulk action */
737
  $this->process_bulk_action();
738
+
739
+ $search_str = ig_es_clean( ig_es_get_request_data( 's' ) );
740
+ $this->search_box( $search_str, 'form-search-input' );
741
 
742
  $per_page = $this->get_items_per_page( 'forms_per_page', 25 );
743
  $current_page = $this->get_pagenum();
756
  if ( 'delete' === $this->current_action() ) {
757
 
758
  // In our file that handles the request, verify the nonce.
759
+ $nonce = ig_es_clean( ig_es_get_request_data( '_wpnonce' ) );
760
 
761
  if ( ! wp_verify_nonce( $nonce, 'es_form' ) ) {
762
  $message = __( 'You do not have permission to delete this form.', 'email-subscribers' );
763
  ES_Common::show_message( $message, 'error' );
764
  } else {
765
 
766
+ $form = ig_es_clean( ig_es_get_request_data( 'form' ) );
767
 
768
  $this->delete_list( array( $form ) );
769
  $message = __( 'Form has been deleted successfully!', 'email-subscribers' );
771
  }
772
  }
773
 
774
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
775
+ $action2 = ig_es_clean( ig_es_get_request_data( 'action2' ) );
776
  // If the delete bulk action is triggered
777
  if ( ( 'bulk_delete' === $action ) || ( 'bulk_delete' === $action2 ) ) {
778
 
779
+ $forms = ig_es_clean( ig_es_get_request_data( 'forms' ) );
780
 
781
  if ( ! empty( $forms ) > 0 ) {
782
  $this->delete_list( $forms );
includes/admin/class-es-handle-post-notification.php CHANGED
@@ -102,7 +102,9 @@ class ES_Handle_Post_Notification {
102
  /*check again for unique subscribers count
103
  if unique count it 0 then skip this report
104
  */
105
- if( count( $subscribers ) <= 0 ) continue;
 
 
106
 
107
  $post = get_post( $post_id );
108
 
@@ -127,7 +129,7 @@ class ES_Handle_Post_Notification {
127
  'finish_at' => '',
128
  'created_at' => ig_get_current_date_time(),
129
  'updated_at' => ig_get_current_date_time(),
130
- 'meta' => maybe_serialize(array( 'post_id'=> $post_id, 'type' => 'post_notification' ))
131
  );
132
 
133
  // Add entry into mailing queue table
@@ -192,6 +194,7 @@ class ES_Handle_Post_Notification {
192
  $post_thumbnail = get_the_post_thumbnail( $post_id, 'medium' );
193
  break;
194
  case 'thumbnail':
 
195
  $post_thumbnail = get_the_post_thumbnail( $post_id, 'thumbnail' );
196
  break;
197
  }
@@ -242,13 +245,14 @@ class ES_Handle_Post_Notification {
242
  return $content;
243
  }
244
 
245
- public static function refresh_post_content( $post_id, $campaign_id ){
246
- $post = get_post( $post_id );
247
- $template_id = ES_DB_Campaigns::get_templateid_by_campaign( $campaign_id );
248
- $template = get_post( $template_id );
249
- $template_content = $template->post_content;
250
  $content['subject'] = self::prepare_subject( $post, $template );
251
- $content['body'] = self::prepare_body( $template_content, $post_id, $template_id );
 
252
  return $content;
253
 
254
  }
102
  /*check again for unique subscribers count
103
  if unique count it 0 then skip this report
104
  */
105
+ if ( count( $subscribers ) <= 0 ) {
106
+ continue;
107
+ }
108
 
109
  $post = get_post( $post_id );
110
 
129
  'finish_at' => '',
130
  'created_at' => ig_get_current_date_time(),
131
  'updated_at' => ig_get_current_date_time(),
132
+ 'meta' => maybe_serialize( array( 'post_id' => $post_id, 'type' => 'post_notification' ) )
133
  );
134
 
135
  // Add entry into mailing queue table
194
  $post_thumbnail = get_the_post_thumbnail( $post_id, 'medium' );
195
  break;
196
  case 'thumbnail':
197
+ default:
198
  $post_thumbnail = get_the_post_thumbnail( $post_id, 'thumbnail' );
199
  break;
200
  }
245
  return $content;
246
  }
247
 
248
+ public static function refresh_post_content( $post_id, $campaign_id ) {
249
+ $post = get_post( $post_id );
250
+ $template_id = ES_DB_Campaigns::get_templateid_by_campaign( $campaign_id );
251
+ $template = get_post( $template_id );
252
+ $template_content = $template->post_content;
253
  $content['subject'] = self::prepare_subject( $post, $template );
254
+ $content['body'] = self::prepare_body( $template_content, $post_id, $template_id );
255
+
256
  return $content;
257
 
258
  }
includes/admin/class-es-handle-subscription.php CHANGED
@@ -47,9 +47,12 @@ class ES_Handle_Subscription {
47
 
48
  $response = array( 'status' => 'ERROR', 'message' => '' );
49
 
50
- if ( ( isset( $_POST['es'] ) ) && ( 'subscribe' === $_POST['es'] ) && ! empty( $_POST['esfpx_es-subscribe'] ) ) {
 
51
 
52
- $form_data = wp_unslash( $_POST );
 
 
53
  $validate_response = $this->validate_data( $form_data );
54
  if ( $validate_response['status'] === 'ERROR' ) {
55
 
@@ -57,7 +60,7 @@ class ES_Handle_Subscription {
57
  // So, we are setting as "SUCCESS" even if this email is blocked
58
  if ( $validate_response['message'] === 'es_email_address_blocked' ) {
59
  $validate_response['status'] = 'SUCCESS';
60
- $validate_response['message'] = 'es_single_optin_success_message';
61
  }
62
 
63
  $this->do_response( $validate_response );
@@ -149,7 +152,7 @@ class ES_Handle_Subscription {
149
  $this->db_id = $contact_id;
150
  if ( $this->is_double_optin ) {
151
  $this->send_double_optin_notification();
152
- $response['message'] = 'es_double_optin_success_message';
153
  } else {
154
  $enable_welcome_email = get_option( 'ig_es_enable_welcome_email', 'no' );
155
  if ( 'yes' === $enable_welcome_email ) {
@@ -160,8 +163,8 @@ class ES_Handle_Subscription {
160
  if ( 'yes' === $ig_es_notifyadmin ) {
161
  $this->send_admin_signup_notification();
162
  }
163
-
164
- $response['message'] = 'es_single_optin_success_message';
165
  }
166
 
167
 
@@ -199,7 +202,7 @@ class ES_Handle_Subscription {
199
  public function send_welcome_notification() {
200
 
201
  // Get comma(,) separated lists name based on ids.
202
- $list_name = ES_Common::prepare_list_name_by_ids($this->list_ids);
203
 
204
  $template_data = array(
205
  'email' => $this->email,
@@ -212,7 +215,7 @@ class ES_Handle_Subscription {
212
  );
213
 
214
  // Send Welcome Email
215
- ES_Mailer::send_welcome_email($this->email, $template_data);
216
  }
217
 
218
  public function send_double_optin_notification() {
@@ -379,21 +382,20 @@ class ES_Handle_Subscription {
379
  }
380
 
381
  public function get_messages( $message ) {
382
-
383
- $messages = array(
384
- 'es_empty_email_notice' => __( 'Please enter email address', 'email-subscribers' ),
385
- 'es_rate_limit_notice' => __( 'You need to wait for sometime before subscribing again', 'email-subscribers' ),
386
- 'es_single_optin_success_message' => __( 'Successfully Subscribed.', 'email-subscribers' ),
387
- 'es_double_optin_success_message' => __( 'Your subscription was successful! Kindly check your mailbox and confirm your subscription. If you don\'t see the email within a few minutes, check the spam/junk folder.', 'email-subscribers' ),
388
- 'es_email_exists_notice' => __( 'Email Address already exists!', 'email-subscribers' ),
389
- 'es_unexpected_error_notice' => __( 'Oops.. Unexpected error occurred.', 'email-subscribers' ),
390
- 'es_invalid_email_notice' => __( 'Invalid email address', 'email-subscribers' ),
391
- 'es_invalid_name_notice' => __( 'Invalid name', 'email-subscribers' ),
392
- 'es_try_later_notice' => __( 'Please try after some time', 'email-subscribers' ),
393
- 'es_db_error_notice' => __( 'Oops...unable to add subscriber', 'email-subscribers' ),
394
- 'es_permission_denied_notice' => __( 'You do not have permission to add subscriber', 'email-subscribers' ),
395
- 'es_no_list_selected' => __( 'Please select the list', 'email-subscribers' ),
396
- 'es_invalid_captcha' => __( 'Invalid Captcha', 'email-subscribers' )
397
  );
398
 
399
  $messages = apply_filters( 'ig_es_subscription_messages', $messages );
47
 
48
  $response = array( 'status' => 'ERROR', 'message' => '' );
49
 
50
+ $es = ig_es_clean( ig_es_get_post_data( 'es' ) );
51
+ $es_subscribe = ig_es_clean( ig_es_get_post_data( 'esfpx_es-subscribe' ) );
52
 
53
+ if ( 'subscribe' === $es && ! empty( $es_subscribe ) ) {
54
+
55
+ $form_data = ig_es_clean( ig_es_get_post_data() );
56
  $validate_response = $this->validate_data( $form_data );
57
  if ( $validate_response['status'] === 'ERROR' ) {
58
 
60
  // So, we are setting as "SUCCESS" even if this email is blocked
61
  if ( $validate_response['message'] === 'es_email_address_blocked' ) {
62
  $validate_response['status'] = 'SUCCESS';
63
+ $validate_response['message'] = 'es_optin_success_message';
64
  }
65
 
66
  $this->do_response( $validate_response );
152
  $this->db_id = $contact_id;
153
  if ( $this->is_double_optin ) {
154
  $this->send_double_optin_notification();
155
+ $response['message'] = 'es_optin_success_message';
156
  } else {
157
  $enable_welcome_email = get_option( 'ig_es_enable_welcome_email', 'no' );
158
  if ( 'yes' === $enable_welcome_email ) {
163
  if ( 'yes' === $ig_es_notifyadmin ) {
164
  $this->send_admin_signup_notification();
165
  }
166
+
167
+ $response['message'] = 'es_optin_success_message';
168
  }
169
 
170
 
202
  public function send_welcome_notification() {
203
 
204
  // Get comma(,) separated lists name based on ids.
205
+ $list_name = ES_Common::prepare_list_name_by_ids( $this->list_ids );
206
 
207
  $template_data = array(
208
  'email' => $this->email,
215
  );
216
 
217
  // Send Welcome Email
218
+ ES_Mailer::send_welcome_email( $this->email, $template_data );
219
  }
220
 
221
  public function send_double_optin_notification() {
382
  }
383
 
384
  public function get_messages( $message ) {
385
+ $ig_es_form_submission_success_message = get_option( 'ig_es_form_submission_success_message' );
386
+ $messages = array(
387
+ 'es_empty_email_notice' => __( 'Please enter email address', 'email-subscribers' ),
388
+ 'es_rate_limit_notice' => __( 'You need to wait for sometime before subscribing again', 'email-subscribers' ),
389
+ 'es_optin_success_message' => ! empty( $ig_es_form_submission_success_message ) ? $ig_es_form_submission_success_message : __( 'Successfully Subscribed.', 'email-subscribers' ),
390
+ 'es_email_exists_notice' => __( 'Email Address already exists!', 'email-subscribers' ),
391
+ 'es_unexpected_error_notice' => __( 'Oops.. Unexpected error occurred.', 'email-subscribers' ),
392
+ 'es_invalid_email_notice' => __( 'Invalid email address', 'email-subscribers' ),
393
+ 'es_invalid_name_notice' => __( 'Invalid name', 'email-subscribers' ),
394
+ 'es_try_later_notice' => __( 'Please try after some time', 'email-subscribers' ),
395
+ 'es_db_error_notice' => __( 'Oops...unable to add subscriber', 'email-subscribers' ),
396
+ 'es_permission_denied_notice' => __( 'You do not have permission to add subscriber', 'email-subscribers' ),
397
+ 'es_no_list_selected' => __( 'Please select the list', 'email-subscribers' ),
398
+ 'es_invalid_captcha' => __( 'Invalid Captcha', 'email-subscribers' )
 
399
  );
400
 
401
  $messages = apply_filters( 'ig_es_subscription_messages', $messages );
includes/admin/class-es-handle-sync-wp-user.php CHANGED
@@ -18,8 +18,11 @@ class ES_Handle_Sync_Wp_User {
18
  if ( ! empty( $wordpress_tab['indicator_option'] ) ) {
19
  update_option( $wordpress_tab['indicator_option'], 'no' );
20
  }
21
- if ( ! empty( $_POST['submitted'] ) && 'submitted' === $_POST['submitted'] ) {
22
- $form_data = $_POST['form_data'];
 
 
 
23
 
24
  $error = false;
25
  if ( ! empty( $form_data['es_registered'] ) && 'YES' === $form_data['es_registered'] ) {
@@ -154,7 +157,7 @@ class ES_Handle_Sync_Wp_User {
154
 
155
  $logger = get_ig_logger();
156
  $logger->trace( 'Sync Users' );
157
- $active_tab = ! empty( $_GET['tab'] ) ? $_GET['tab'] : 'wordpress';
158
 
159
  $tabs = array(
160
  'wordpress' => array(
18
  if ( ! empty( $wordpress_tab['indicator_option'] ) ) {
19
  update_option( $wordpress_tab['indicator_option'], 'no' );
20
  }
21
+
22
+ $submitted = ig_es_clean(ig_es_get_post_data('submitted'));
23
+ if ( 'submitted' === $submitted ) {
24
+
25
+ $form_data = ig_es_clean(ig_es_get_post_data('form_data'));
26
 
27
  $error = false;
28
  if ( ! empty( $form_data['es_registered'] ) && 'YES' === $form_data['es_registered'] ) {
157
 
158
  $logger = get_ig_logger();
159
  $logger->trace( 'Sync Users' );
160
+ $active_tab = ig_es_clean(ig_es_get_request_data('tab', 'wordpress'));
161
 
162
  $tabs = array(
163
  'wordpress' => array(
includes/admin/class-es-import-subscribers.php CHANGED
@@ -21,9 +21,10 @@ class ES_Import_Subscribers {
21
  public function import_report_callback() {
22
  require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
23
 
24
- if ( isset( $_POST["submit"] ) ) {
25
-
26
- if (! isset( $_POST['import_contacts'] ) || ! wp_verify_nonce( $_POST['import_contacts'], 'import-contacts' ) ) {
 
27
  $message = __( "Sorry, you do not have permission to import contacts.", 'email-subscribers' );
28
  ES_Common::show_message( $message, 'error' );
29
  }
@@ -36,20 +37,30 @@ class ES_Import_Subscribers {
36
 
37
  if ( $ext == ".csv" ) {
38
 
39
- $statuses = ES_Common::get_statuses_key_name_map();
40
- $status = isset( $_POST["es_email_status"] ) ? ( in_array( $_POST["es_email_status"], array_keys( $statuses ) ) ? $_POST["es_email_status"] : '' ) : '';
 
 
 
 
 
41
 
42
  if ( ! empty( $status ) ) {
43
 
44
- $lists = ES_Common::get_list_id_details_map();
45
- $list_id = isset( $_POST['list_id'] ) ? ( in_array( $_POST['list_id'], array_keys( $lists ) ) ? $_POST['list_id'] : '' ) : '';
 
 
 
 
 
46
 
47
  if ( ! empty( $list_id ) ) {
48
 
49
  $handle = fopen( $_FILES["file"]["tmp_name"], 'r' );
50
 
51
  // Get Headers
52
- $headers = fgetcsv( $handle );
53
 
54
  $existing_contacts_email_id_map = ES_DB_Contacts::get_email_id_map();
55
 
@@ -67,7 +78,10 @@ class ES_Import_Subscribers {
67
  $i = 0;
68
  while ( ( $data = fgetcsv( $handle ) ) !== false ) {
69
 
70
- $data = array_combine( $headers, $data );
 
 
 
71
  $email = isset( $data['Email'] ) ? sanitize_email( trim( $data['Email'] ) ) : '';
72
 
73
  if ( empty( $email ) ) {
@@ -82,7 +96,7 @@ class ES_Import_Subscribers {
82
  $last_name = isset( $data['Last Name'] ) ? sanitize_text_field( trim( $data['Last Name'] ) ) : '';
83
 
84
  // If we don't get the first_name & last_name, consider Name field.
85
- // If name empty, get the name from Email
86
  if ( empty( $first_name ) && empty( $last_name ) ) {
87
 
88
  if ( empty( $name ) ) {
@@ -219,7 +233,7 @@ class ES_Import_Subscribers {
219
  </tbody>
220
  </table>
221
  <p style="padding-top:10px;">
222
- <?php wp_nonce_field( 'import-contacts', 'import_contacts' ); ?>
223
  <input type="submit" name="submit" class="button-primary" value=<?php _e( "Import", 'email-subscribers' ); ?>>
224
  </p>
225
  </form>
21
  public function import_report_callback() {
22
  require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
23
 
24
+ $submit = ig_es_clean( ig_es_get_post_data( 'submit' ) );
25
+ if ( $submit ) {
26
+ $import_contacts_nonce = ig_es_clean( ig_es_get_post_data( 'import_contacts' ) );
27
+ if ( ! isset( $_POST['import_contacts'] ) || ! wp_verify_nonce( sanitize_key( $import_contacts_nonce ), 'import-contacts' ) ) {
28
  $message = __( "Sorry, you do not have permission to import contacts.", 'email-subscribers' );
29
  ES_Common::show_message( $message, 'error' );
30
  }
37
 
38
  if ( $ext == ".csv" ) {
39
 
40
+ $statuses = ES_Common::get_statuses_key_name_map();
41
+ $es_email_status = ig_es_clean( ig_es_get_post_data( 'es_email_status' ) );
42
+
43
+ $status = '';
44
+ if ( in_array( $es_email_status, array_keys( $statuses ) ) ) {
45
+ $status = $es_email_status;
46
+ }
47
 
48
  if ( ! empty( $status ) ) {
49
 
50
+ $lists = ES_Common::get_list_id_details_map();
51
+
52
+ $list_id = ig_es_clean( ig_es_get_post_data( 'list_id' ) );
53
+
54
+ if ( ! in_array( $list_id, array_keys( $lists ) ) ) {
55
+ $list_id = '';
56
+ }
57
 
58
  if ( ! empty( $list_id ) ) {
59
 
60
  $handle = fopen( $_FILES["file"]["tmp_name"], 'r' );
61
 
62
  // Get Headers
63
+ $headers = array_map( 'trim', fgetcsv( $handle ) );
64
 
65
  $existing_contacts_email_id_map = ES_DB_Contacts::get_email_id_map();
66
 
78
  $i = 0;
79
  while ( ( $data = fgetcsv( $handle ) ) !== false ) {
80
 
81
+ $data = array_map( 'trim', $data );
82
+
83
+ $data = array_combine( $headers, $data );
84
+
85
  $email = isset( $data['Email'] ) ? sanitize_email( trim( $data['Email'] ) ) : '';
86
 
87
  if ( empty( $email ) ) {
96
  $last_name = isset( $data['Last Name'] ) ? sanitize_text_field( trim( $data['Last Name'] ) ) : '';
97
 
98
  // If we don't get the first_name & last_name, consider Name field.
99
+ // If name empty, get the name from Email
100
  if ( empty( $first_name ) && empty( $last_name ) ) {
101
 
102
  if ( empty( $name ) ) {
233
  </tbody>
234
  </table>
235
  <p style="padding-top:10px;">
236
+ <?php wp_nonce_field( 'import-contacts', 'import_contacts' ); ?>
237
  <input type="submit" name="submit" class="button-primary" value=<?php _e( "Import", 'email-subscribers' ); ?>>
238
  </p>
239
  </form>
includes/admin/class-es-lists-table.php CHANGED
@@ -31,13 +31,14 @@ class ES_Lists_Table extends WP_List_Table {
31
 
32
  public function es_lists_callback() {
33
 
34
- $action = Email_Subscribers::get_request( 'action' );
35
  ?>
36
  <div class="wrap">
37
  <?php if ( 'new' === $action ) {
38
  $this->es_new_lists_callback();
39
  } elseif ( 'edit' === $action ) {
40
- echo $this->edit_list( absint( Email_Subscribers::get_request( 'list' ) ) );
 
41
  } else { ?>
42
  <h1 class="wp-heading-inline"><?php _e( 'Audience > Lists', 'email-subscribers' ); ?> <a href="admin.php?page=es_lists&action=new" class="page-title-action">Add New</a></h1>
43
  <?php Email_Subscribers_Admin::es_feedback(); ?>
@@ -98,12 +99,13 @@ class ES_Lists_Table extends WP_List_Table {
98
 
99
  public function es_new_lists_callback() {
100
 
101
- $submitted = Email_Subscribers::get_request( 'submitted' );
102
 
103
  if ( 'submitted' === $submitted ) {
104
 
105
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
106
- $list_name = Email_Subscribers::get_request( 'list_name' );
 
107
 
108
  $validate_data = array(
109
  'nonce' => $nonce,
@@ -138,13 +140,12 @@ class ES_Lists_Table extends WP_List_Table {
138
 
139
  $list = $wpdb->get_results( "SELECT * FROM " . IG_LISTS_TABLE . " WHERE id = $id" );
140
 
141
- $submitted = Email_Subscribers::get_request( 'submitted' );
142
-
143
 
144
  if ( 'submitted' === $submitted ) {
145
 
146
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
147
- $list_name = Email_Subscribers::get_request( 'list_name' );
148
 
149
  $validate_data = array(
150
  'nonce' => $nonce,
@@ -241,7 +242,7 @@ class ES_Lists_Table extends WP_List_Table {
241
 
242
  global $wpdb;
243
 
244
- $list_data['name'] = sanitize_text_field($data['list_name']);
245
  $list_data['slug'] = sanitize_title( $list_data['name'] );
246
  $list_data['created_at'] = ig_get_current_date_time();
247
 
@@ -266,9 +267,9 @@ class ES_Lists_Table extends WP_List_Table {
266
 
267
  global $wpdb;
268
 
269
- $order_by = Email_Subscribers::get_request( 'orderby' );
270
- $order = Email_Subscribers::get_request( 'order' );
271
- $search = Email_Subscribers::get_request( 's' );
272
 
273
  if ( $do_count_only ) {
274
  $sql = "SELECT count(*) as total FROM " . IG_LISTS_TABLE;
@@ -301,9 +302,9 @@ class ES_Lists_Table extends WP_List_Table {
301
  if ( ! $do_count_only ) {
302
 
303
  // Prepare Order by clause
304
- $order = ! empty( $order ) ? strtolower($order) : 'desc';
305
- $expected_order_values = array('asc', 'desc');
306
- if(!in_array($order, $expected_order_values)) {
307
  $order = 'desc';
308
  }
309
 
@@ -429,9 +430,10 @@ class ES_Lists_Table extends WP_List_Table {
429
  $title = '<strong>' . $item['name'] . '</strong>';
430
  $actions = array();
431
  if ( $item['id'] != 1 ) {
 
432
  $actions = array(
433
- 'edit' => sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s">Edit</a>', 'email-subscribers' ), esc_attr( Email_Subscribers::get_request( 'page' ) ), 'edit', absint( $item['id'] ), $list_nonce ),
434
- 'delete' => sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s" onclick="return checkDelete()">Delete</a>', 'email-subscribers' ), esc_attr( Email_Subscribers::get_request( 'page' ) ), 'delete', absint( $item['id'] ), $list_nonce )
435
  );
436
  }
437
 
@@ -502,7 +504,7 @@ class ES_Lists_Table extends WP_List_Table {
502
 
503
  /** Process bulk action */
504
  $this->process_bulk_action();
505
- $this->search_box( Email_Subscribers::get_request( 's' ), 'list-search-input' );
506
 
507
  $per_page = $this->get_items_per_page( 'lists_per_page', 10 );
508
  $current_page = $this->get_pagenum();
@@ -522,13 +524,13 @@ class ES_Lists_Table extends WP_List_Table {
522
  if ( 'edit' === $this->current_action() ) {
523
 
524
  // In our file that handles the request, verify the nonce.
525
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
526
 
527
  if ( ! wp_verify_nonce( $nonce, 'es_list' ) ) {
528
  $message = __( 'You do not have permission to edit list', 'email-subscribers' );
529
  ES_Common::show_message( $message, 'error' );
530
  } else {
531
- $this->edit_list( absint( Email_Subscribers::get_request( 'list' ) ) );
532
  $message = __( 'List has been updated successfully!', 'email-subscribers' );
533
  ES_Common::show_message( $message, 'success' );
534
  }
@@ -538,26 +540,28 @@ class ES_Lists_Table extends WP_List_Table {
538
  if ( 'delete' === $this->current_action() ) {
539
 
540
  // In our file that handles the request, verify the nonce.
541
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
542
 
543
  if ( ! wp_verify_nonce( $nonce, 'es_list' ) ) {
544
  $message = __( 'You do not have permission to delete list', 'email-subscribers' );
545
  ES_Common::show_message( $message, 'error' );
546
  } else {
547
- if ( Email_Subscribers::get_request( 'list' ) != 1 ) {
548
- $this->delete_list( array( absint( Email_Subscribers::get_request( 'list' ) ) ) );
 
 
549
  $message = __( 'List has been deleted successfully!', 'email-subscribers' );
550
  ES_Common::show_message( $message, 'success' );
551
  }
552
  }
553
  }
554
 
555
- $action = Email_Subscribers::get_request( 'action' );
556
- $action2 = Email_Subscribers::get_request( 'action2' );
557
  // If the delete bulk action is triggered
558
  if ( ( 'bulk_delete' === $action ) || ( 'bulk_delete' === $action2 ) ) {
559
 
560
- $lists = esc_sql( Email_Subscribers::get_request( 'lists' ) );
561
 
562
  if ( ! empty( $lists ) > 0 ) {
563
  $this->delete_list( $lists );
31
 
32
  public function es_lists_callback() {
33
 
34
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
35
  ?>
36
  <div class="wrap">
37
  <?php if ( 'new' === $action ) {
38
  $this->es_new_lists_callback();
39
  } elseif ( 'edit' === $action ) {
40
+ $list = ig_es_clean( ig_es_get_request_data( 'list' ) );
41
+ echo $this->edit_list( absint( $list ) );
42
  } else { ?>
43
  <h1 class="wp-heading-inline"><?php _e( 'Audience > Lists', 'email-subscribers' ); ?> <a href="admin.php?page=es_lists&action=new" class="page-title-action">Add New</a></h1>
44
  <?php Email_Subscribers_Admin::es_feedback(); ?>
99
 
100
  public function es_new_lists_callback() {
101
 
102
+ $submitted = ig_es_clean( ig_es_get_request_data( 'submitted' ) );
103
 
104
  if ( 'submitted' === $submitted ) {
105
 
106
+ $nonce = ig_es_clean( ig_es_get_request_data( '_wpnonce' ) );
107
+
108
+ $list_name = ig_es_clean( ig_es_get_request_data( 'list_name' ) );
109
 
110
  $validate_data = array(
111
  'nonce' => $nonce,
140
 
141
  $list = $wpdb->get_results( "SELECT * FROM " . IG_LISTS_TABLE . " WHERE id = $id" );
142
 
143
+ $submitted = ig_es_clean( ig_es_get_request_data( 'submitted' ) );
 
144
 
145
  if ( 'submitted' === $submitted ) {
146
 
147
+ $nonce = ig_es_clean( ig_es_get_request_data( '_wpnonce' ) );
148
+ $list_name = ig_es_clean( ig_es_get_request_data( 'list_name' ) );
149
 
150
  $validate_data = array(
151
  'nonce' => $nonce,
242
 
243
  global $wpdb;
244
 
245
+ $list_data['name'] = sanitize_text_field( $data['list_name'] );
246
  $list_data['slug'] = sanitize_title( $list_data['name'] );
247
  $list_data['created_at'] = ig_get_current_date_time();
248
 
267
 
268
  global $wpdb;
269
 
270
+ $order_by = sanitize_sql_orderby( ig_es_get_request_data( 'orderby' ) );
271
+ $order = ig_es_clean( ig_es_get_request_data( 'order' ) );
272
+ $search = ig_es_clean( ig_es_get_request_data( 's' ) );
273
 
274
  if ( $do_count_only ) {
275
  $sql = "SELECT count(*) as total FROM " . IG_LISTS_TABLE;
302
  if ( ! $do_count_only ) {
303
 
304
  // Prepare Order by clause
305
+ $order = ! empty( $order ) ? strtolower( $order ) : 'desc';
306
+ $expected_order_values = array( 'asc', 'desc' );
307
+ if ( ! in_array( $order, $expected_order_values ) ) {
308
  $order = 'desc';
309
  }
310
 
430
  $title = '<strong>' . $item['name'] . '</strong>';
431
  $actions = array();
432
  if ( $item['id'] != 1 ) {
433
+ $page = ig_es_clean( ig_es_get_request_data( 'page' ) );
434
  $actions = array(
435
+ 'edit' => sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s">Edit</a>', 'email-subscribers' ), esc_attr( $page ), 'edit', absint( $item['id'] ), $list_nonce ),
436
+ 'delete' => sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s" onclick="return checkDelete()">Delete</a>', 'email-subscribers' ), esc_attr( $page ), 'delete', absint( $item['id'] ), $list_nonce )
437
  );
438
  }
439
 
504
 
505
  /** Process bulk action */
506
  $this->process_bulk_action();
507
+ $this->search_box( ig_es_clean( ig_es_get_request_data( 's' ) ), 'list-search-input' );
508
 
509
  $per_page = $this->get_items_per_page( 'lists_per_page', 10 );
510
  $current_page = $this->get_pagenum();
524
  if ( 'edit' === $this->current_action() ) {
525
 
526
  // In our file that handles the request, verify the nonce.
527
+ $nonce = esc_attr( ig_es_clean( ig_es_get_request_data( '_wpnonce' ) ) );
528
 
529
  if ( ! wp_verify_nonce( $nonce, 'es_list' ) ) {
530
  $message = __( 'You do not have permission to edit list', 'email-subscribers' );
531
  ES_Common::show_message( $message, 'error' );
532
  } else {
533
+ $this->edit_list( absint( ig_es_clean( ig_es_get_request_data( 'list' ) ) ) );
534
  $message = __( 'List has been updated successfully!', 'email-subscribers' );
535
  ES_Common::show_message( $message, 'success' );
536
  }
540
  if ( 'delete' === $this->current_action() ) {
541
 
542
  // In our file that handles the request, verify the nonce.
543
+ $nonce = esc_attr( ig_es_clean( ig_es_get_request_data( '_wpnonce' ) ) );
544
 
545
  if ( ! wp_verify_nonce( $nonce, 'es_list' ) ) {
546
  $message = __( 'You do not have permission to delete list', 'email-subscribers' );
547
  ES_Common::show_message( $message, 'error' );
548
  } else {
549
+ $list = ig_es_clean( ig_es_get_request_data( 'list' ) );
550
+ if ( $list != 1 ) {
551
+ $list = ig_es_clean( ig_es_get_request_data( 'list' ) );
552
+ $this->delete_list( array( $list ) );
553
  $message = __( 'List has been deleted successfully!', 'email-subscribers' );
554
  ES_Common::show_message( $message, 'success' );
555
  }
556
  }
557
  }
558
 
559
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
560
+ $action2 = ig_es_clean( ig_es_get_request_data( 'action2' ) );
561
  // If the delete bulk action is triggered
562
  if ( ( 'bulk_delete' === $action ) || ( 'bulk_delete' === $action2 ) ) {
563
 
564
+ $lists = ig_es_clean( ig_es_get_request_data( 'lists' ) );
565
 
566
  if ( ! empty( $lists ) > 0 ) {
567
  $this->delete_list( $lists );
includes/admin/class-es-newsletters.php CHANGED
@@ -33,14 +33,14 @@ class ES_Newsletters {
33
 
34
  $this->email_subscribers_settings_fields();
35
 
36
- $submitted = Email_Subscribers::get_request( 'submitted' );
37
 
38
 
39
  if ( 'submitted' === $submitted ) {
40
 
41
  // $email_sent_type = __('Active', 'email-subscribers');
42
- $list_id = Email_Subscribers::get_request( 'ig_es_broadcast_list_ids' );
43
- $template_id = Email_Subscribers::get_request( 'ig_es_broadcast_base_template_id' );
44
  if ( empty( $template_id ) ) {
45
  $message = __( 'Please select template.', 'email-subscribers' );
46
  ES_Common::show_message( $message, 'error' );
@@ -62,7 +62,7 @@ class ES_Newsletters {
62
 
63
  ES_Common::show_message( $message, 'success' );
64
 
65
- do_action('ig_es_broadcast_created');
66
  }
67
 
68
  }
@@ -167,17 +167,11 @@ class ES_Newsletters {
167
 
168
  // Check which type of field we want
169
  switch ( $arguments['type'] ) {
170
- case 'text': // If it is a text field
171
- printf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" />', $arguments['uid'], $arguments['type'], $arguments['placeholder'], $value );
172
- break;
173
 
174
  case 'label': // If it is a text field
175
  printf( '<p id="%1$s">%2$s</p>', $arguments['uid'], $value );
176
  break;
177
 
178
- case 'email':
179
- printf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" />', $arguments['uid'], $arguments['type'], $arguments['placeholder'], $value );
180
- break;
181
  case 'textarea':
182
  printf( '<textarea name="%1$s" id="%1$s" placeholder="%2$s" rows="5" cols="50">%3$s</textarea>', $arguments['uid'], $arguments['placeholder'], $value );
183
  break;
@@ -190,6 +184,12 @@ class ES_Newsletters {
190
  printf( '<select name="%1$s" id="%1$s">%2$s</select>', $arguments['uid'], $arguments['options'] );
191
  }
192
  break;
 
 
 
 
 
 
193
  }
194
 
195
  // If there is help text
@@ -209,10 +209,10 @@ class ES_Newsletters {
209
  $template_id = ! empty( $data['base_template_id'] ) ? $data['base_template_id'] : '';
210
  $list_id = ! empty( $data['list_ids'] ) ? $data['list_ids'] : '';
211
 
212
- $data['type'] = 'newsletter';
213
- $data['name'] = get_the_title( $template_id );
214
- $data['slug'] = sanitize_title( $data['name'] );
215
- $data['list_ids'] = $list_id;
216
  $data['base_template_id'] = $template_id;
217
 
218
  $data = apply_filters( 'ig_es_broadcast_data', $data );
@@ -239,11 +239,11 @@ class ES_Newsletters {
239
  'body' => $post_template_content,
240
  'count' => count( $subscribers ),
241
  'status' => 'In Queue',
242
- 'start_at' => !empty($data['start_at']) ? $data['start_at'] : '',
243
  'finish_at' => '',
244
  'created_at' => ig_get_current_date_time(),
245
  'updated_at' => ig_get_current_date_time(),
246
- 'meta' => maybe_serialize(array( 'type' => 'newsletter' ))
247
  );
248
 
249
  $last_report_id = ES_DB_Mailing_Queue::add_notification( $data );
@@ -262,12 +262,13 @@ class ES_Newsletters {
262
 
263
  }
264
 
265
- public static function refresh_newsletter_content( $campaign_id ){
266
- $template_id = ES_DB_Campaigns::get_templateid_by_campaign( $campaign_id );
267
- $template = get_post( $template_id );
268
  $content['subject'] = ! empty( $template->post_title ) ? $template->post_title : '';
269
- $content['body'] = ! empty( $template->post_content ) ? $template->post_content : '';
270
- $content['body'] = ES_Common::es_process_template_body( $content['body'], $template_id );
 
271
  return $content;
272
  }
273
 
33
 
34
  $this->email_subscribers_settings_fields();
35
 
36
+ $submitted = ig_es_clean( ig_es_get_request_data( 'submitted' ) );
37
 
38
 
39
  if ( 'submitted' === $submitted ) {
40
 
41
  // $email_sent_type = __('Active', 'email-subscribers');
42
+ $list_id = ig_es_clean( ig_es_get_request_data( 'ig_es_broadcast_list_ids' ) );
43
+ $template_id = ig_es_clean( ig_es_get_request_data( 'ig_es_broadcast_base_template_id' ) );
44
  if ( empty( $template_id ) ) {
45
  $message = __( 'Please select template.', 'email-subscribers' );
46
  ES_Common::show_message( $message, 'error' );
62
 
63
  ES_Common::show_message( $message, 'success' );
64
 
65
+ do_action( 'ig_es_broadcast_created' );
66
  }
67
 
68
  }
167
 
168
  // Check which type of field we want
169
  switch ( $arguments['type'] ) {
 
 
 
170
 
171
  case 'label': // If it is a text field
172
  printf( '<p id="%1$s">%2$s</p>', $arguments['uid'], $value );
173
  break;
174
 
 
 
 
175
  case 'textarea':
176
  printf( '<textarea name="%1$s" id="%1$s" placeholder="%2$s" rows="5" cols="50">%3$s</textarea>', $arguments['uid'], $arguments['placeholder'], $value );
177
  break;
184
  printf( '<select name="%1$s" id="%1$s">%2$s</select>', $arguments['uid'], $arguments['options'] );
185
  }
186
  break;
187
+
188
+ case 'text':
189
+ case 'email':
190
+ default:
191
+ printf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" />', $arguments['uid'], $arguments['type'], $arguments['placeholder'], $value );
192
+
193
  }
194
 
195
  // If there is help text
209
  $template_id = ! empty( $data['base_template_id'] ) ? $data['base_template_id'] : '';
210
  $list_id = ! empty( $data['list_ids'] ) ? $data['list_ids'] : '';
211
 
212
+ $data['type'] = 'newsletter';
213
+ $data['name'] = get_the_title( $template_id );
214
+ $data['slug'] = sanitize_title( $data['name'] );
215
+ $data['list_ids'] = $list_id;
216
  $data['base_template_id'] = $template_id;
217
 
218
  $data = apply_filters( 'ig_es_broadcast_data', $data );
239
  'body' => $post_template_content,
240
  'count' => count( $subscribers ),
241
  'status' => 'In Queue',
242
+ 'start_at' => ! empty( $data['start_at'] ) ? $data['start_at'] : '',
243
  'finish_at' => '',
244
  'created_at' => ig_get_current_date_time(),
245
  'updated_at' => ig_get_current_date_time(),
246
+ 'meta' => maybe_serialize( array( 'type' => 'newsletter' ) )
247
  );
248
 
249
  $last_report_id = ES_DB_Mailing_Queue::add_notification( $data );
262
 
263
  }
264
 
265
+ public static function refresh_newsletter_content( $campaign_id ) {
266
+ $template_id = ES_DB_Campaigns::get_templateid_by_campaign( $campaign_id );
267
+ $template = get_post( $template_id );
268
  $content['subject'] = ! empty( $template->post_title ) ? $template->post_title : '';
269
+ $content['body'] = ! empty( $template->post_content ) ? $template->post_content : '';
270
+ $content['body'] = ES_Common::es_process_template_body( $content['body'], $template_id );
271
+
272
  return $content;
273
  }
274
 
includes/admin/class-es-post-notifications.php CHANGED
@@ -15,14 +15,15 @@ class ES_Post_Notifications_Table {
15
 
16
  public function es_notifications_callback() {
17
 
18
- $action = Email_Subscribers::get_request( 'action' );
19
 
20
  ?>
21
  <div class="wrap">
22
  <?php if ( 'new' === $action ) {
23
  $this->es_newnotification_callback();
24
  } elseif ( 'edit' === $action ) {
25
- $this->edit_list( absint( Email_Subscribers::get_request( 'list' ) ) );
 
26
  }
27
  ?>
28
  </div>
@@ -31,12 +32,13 @@ class ES_Post_Notifications_Table {
31
 
32
  public function es_newnotification_callback() {
33
 
34
- $submitted = Email_Subscribers::get_request( 'submitted' );
 
35
  if ( 'submitted' === $submitted ) {
36
 
37
- $list_id = Email_Subscribers::get_request( 'list_id' );
38
- $template_id = Email_Subscribers::get_request( 'template_id' );
39
- $cat = Email_Subscribers::get_request( 'es_note_cat' );
40
 
41
  if ( empty( $list_id ) ) {
42
  $message = __( 'Please select list.', 'email-subscribers' );
@@ -65,7 +67,7 @@ class ES_Post_Notifications_Table {
65
  $type = 'post_notification';
66
  $title = get_the_title( $template_id );
67
 
68
- $data = array(
69
  'categories' => ES_Common::convert_categories_array_to_string( $cat ),
70
  'list_ids' => $list_id,
71
  'base_template_id' => $template_id,
@@ -85,7 +87,9 @@ class ES_Post_Notifications_Table {
85
  }
86
 
87
  public function custom_admin_notice() {
88
- if ( Email_Subscribers::get_request( 'es_note_cat' ) ) {
 
 
89
  echo '<div class="updated"><p>Notification Added Successfully!</p></div>';
90
  }
91
  }
@@ -93,11 +97,11 @@ class ES_Post_Notifications_Table {
93
  public function update_list( $id ) {
94
 
95
  global $wpdb;
96
- $cat = Email_Subscribers::get_request( 'es_note_cat' );
97
  $data = array(
98
  'categories' => ES_Common::convert_categories_array_to_string( $cat ),
99
- 'list_ids' => Email_Subscribers::get_request( 'list_id' ),
100
- 'base_template_id' => Email_Subscribers::get_request( 'template_id' ),
101
  'status' => 'active'
102
  );
103
  $wpdb->update( IG_CAMPAIGNS_TABLE, $data, array( 'id' => $id ) );
@@ -120,9 +124,9 @@ class ES_Post_Notifications_Table {
120
 
121
  global $wpdb;
122
 
123
- $order_by = Email_Subscribers::get_request( 'orderby' );
124
- $order = Email_Subscribers::get_request( 'order' );
125
- $search = Email_Subscribers::get_request( 's' );
126
 
127
  $add_where_clause = false;
128
  $sql = "SELECT * FROM " . IG_CAMPAIGNS_TABLE;
@@ -167,33 +171,33 @@ class ES_Post_Notifications_Table {
167
 
168
  $notifications = $wpdb->get_results( "SELECT * FROM " . IG_CAMPAIGNS_TABLE . " WHERE id = $id LIMIT 0, 1", ARRAY_A );
169
 
170
- $submitted = Email_Subscribers::get_request( 'submitted' );
171
  if ( 'submitted' === $submitted ) {
172
 
173
- $categories = Email_Subscribers::get_request( 'es_note_cat' );
174
  //all categories selected
175
- $parent_category_option = Email_Subscribers::get_request( 'es_note_cat_parent' );
176
- if( $parent_category_option === '{a}All{a}' ){
177
- array_unshift($categories,$parent_category_option);
178
  }
179
 
180
- $data = array(
181
  'categories' => ES_Common::convert_categories_array_to_string( $categories ),
182
- 'list_ids' => Email_Subscribers::get_request( 'list_id' ),
183
- 'base_template_id' => Email_Subscribers::get_request( 'template_id' ),
184
- 'status' => Email_Subscribers::get_request( 'status' )
185
  );
186
 
187
  $title = '';
188
- if(!empty($data['base_template_id'])) {
189
- $title = get_the_title( $data['base_template_id'] );
190
- }
191
- $data['name'] = $title;
192
 
193
  $this->save_list( $data, $id );
194
 
195
- $data['categories'] = ES_Common::convert_categories_string_to_array($data['categories'], true);
196
- $message = __( 'Post notification has been updated successfully!', 'email-subscribers' );
197
  ES_Common::show_message( $message, 'success' );
198
  } else {
199
 
@@ -236,7 +240,7 @@ class ES_Post_Notifications_Table {
236
  <a href="admin.php?page=es_campaigns" class="page-title-action"><?php _e( 'Campaigns', 'email-subscribers' ) ?></a>
237
  <?php if ( $action === 'edit' ) { ?>
238
  <a href="admin.php?page=es_notifications&action=new" class="page-title-action"><?php _e( 'Add New', 'email-subscribers' ) ?></a>
239
- <?php } ?>
240
  <a href="edit.php?post_type=es_template" class="page-title-action es-imp-button"><?php _e( 'Manage Templates', 'email-subscribers' ) ?></a>
241
  </h2>
242
  <hr class="wp-header-end">
@@ -305,7 +309,8 @@ class ES_Post_Notifications_Table {
305
  <td>
306
  <table border="0" cellspacing="0">
307
  <tbody>
308
- <?php $custom_post_type =''; echo ES_Common::prepare_custom_post_type_checkbox( $cat ); ?>
 
309
  </tbody>
310
  </table>
311
  </td>
15
 
16
  public function es_notifications_callback() {
17
 
18
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
19
 
20
  ?>
21
  <div class="wrap">
22
  <?php if ( 'new' === $action ) {
23
  $this->es_newnotification_callback();
24
  } elseif ( 'edit' === $action ) {
25
+ $list = ig_es_clean( ig_es_get_request_data( 'list' ) );
26
+ $this->edit_list( absint( $list ) );
27
  }
28
  ?>
29
  </div>
32
 
33
  public function es_newnotification_callback() {
34
 
35
+ $submitted = ig_es_clean( ig_es_get_request_data( 'submitted' ) );
36
+
37
  if ( 'submitted' === $submitted ) {
38
 
39
+ $list_id = ig_es_clean( ig_es_get_request_data( 'list_id' ) );
40
+ $template_id = ig_es_clean( ig_es_get_request_data( 'template_id' ) );
41
+ $cat = ig_es_clean( ig_es_get_request_data( 'es_note_cat' ) );
42
 
43
  if ( empty( $list_id ) ) {
44
  $message = __( 'Please select list.', 'email-subscribers' );
67
  $type = 'post_notification';
68
  $title = get_the_title( $template_id );
69
 
70
+ $data = array(
71
  'categories' => ES_Common::convert_categories_array_to_string( $cat ),
72
  'list_ids' => $list_id,
73
  'base_template_id' => $template_id,
87
  }
88
 
89
  public function custom_admin_notice() {
90
+ $es_note_cate = ig_es_clean( ig_es_get_request_data( 'es_note_cate' ) );
91
+
92
+ if ( $es_note_cate ) {
93
  echo '<div class="updated"><p>Notification Added Successfully!</p></div>';
94
  }
95
  }
97
  public function update_list( $id ) {
98
 
99
  global $wpdb;
100
+ $cat = ig_es_clean( ig_es_get_request_data( 'es_note_cat' ) );
101
  $data = array(
102
  'categories' => ES_Common::convert_categories_array_to_string( $cat ),
103
+ 'list_ids' => ig_es_clean( ig_es_get_request_data( 'list_id' ) ),
104
+ 'base_template_id' => ig_es_clean( ig_es_get_request_data( 'template_id' ) ),
105
  'status' => 'active'
106
  );
107
  $wpdb->update( IG_CAMPAIGNS_TABLE, $data, array( 'id' => $id ) );
124
 
125
  global $wpdb;
126
 
127
+ $order_by = sanitize_sql_orderby( ig_es_get_request_data( 'orderby' ) );
128
+ $order = ig_es_clean( ig_es_get_request_data( 'order' ) );
129
+ $search = ig_es_clean( ig_es_get_request_data( 's' ) );
130
 
131
  $add_where_clause = false;
132
  $sql = "SELECT * FROM " . IG_CAMPAIGNS_TABLE;
171
 
172
  $notifications = $wpdb->get_results( "SELECT * FROM " . IG_CAMPAIGNS_TABLE . " WHERE id = $id LIMIT 0, 1", ARRAY_A );
173
 
174
+ $submitted = ig_es_clean( ig_es_get_request_data( 'submitted' ) );
175
  if ( 'submitted' === $submitted ) {
176
 
177
+ $categories = ig_es_clean( ig_es_get_request_data( 'es_note_cat' ) );
178
  //all categories selected
179
+ $parent_category_option = ig_es_clean( ig_es_get_request_data( 'es_note_cat_parent' ) );
180
+ if ( $parent_category_option === '{a}All{a}' ) {
181
+ array_unshift( $categories, $parent_category_option );
182
  }
183
 
184
+ $data = array(
185
  'categories' => ES_Common::convert_categories_array_to_string( $categories ),
186
+ 'list_ids' => ig_es_clean( ig_es_get_request_data( 'list_id' ) ),
187
+ 'base_template_id' => ig_es_clean( ig_es_get_request_data( 'template_id' ) ),
188
+ 'status' => ig_es_clean( ig_es_get_request_data( 'status' ) )
189
  );
190
 
191
  $title = '';
192
+ if ( ! empty( $data['base_template_id'] ) ) {
193
+ $title = get_the_title( $data['base_template_id'] );
194
+ }
195
+ $data['name'] = $title;
196
 
197
  $this->save_list( $data, $id );
198
 
199
+ $data['categories'] = ES_Common::convert_categories_string_to_array( $data['categories'], true );
200
+ $message = __( 'Post notification has been updated successfully!', 'email-subscribers' );
201
  ES_Common::show_message( $message, 'success' );
202
  } else {
203
 
240
  <a href="admin.php?page=es_campaigns" class="page-title-action"><?php _e( 'Campaigns', 'email-subscribers' ) ?></a>
241
  <?php if ( $action === 'edit' ) { ?>
242
  <a href="admin.php?page=es_notifications&action=new" class="page-title-action"><?php _e( 'Add New', 'email-subscribers' ) ?></a>
243
+ <?php } ?>
244
  <a href="edit.php?post_type=es_template" class="page-title-action es-imp-button"><?php _e( 'Manage Templates', 'email-subscribers' ) ?></a>
245
  </h2>
246
  <hr class="wp-header-end">
309
  <td>
310
  <table border="0" cellspacing="0">
311
  <tbody>
312
+ <?php $custom_post_type = '';
313
+ echo ES_Common::prepare_custom_post_type_checkbox( $cat ); ?>
314
  </tbody>
315
  </table>
316
  </td>
includes/admin/class-es-reports-table.php CHANGED
@@ -32,9 +32,9 @@ class ES_Reports_Table extends WP_List_Table {
32
 
33
  public function es_reports_callback() {
34
 
35
- $action = Email_Subscribers::get_request( 'action' );
36
  if ( 'view' === $action ) {
37
- $list = Email_Subscribers::get_request( 'list' );
38
  $this->view_list( $list );
39
  } else {
40
  ?>
@@ -107,16 +107,16 @@ class ES_Reports_Table extends WP_List_Table {
107
  public function view_list( $id ) {
108
  global $wpdb;
109
 
110
- $emails = ES_DB_Sending_Queue::get_emails_by_hash( $id );
111
  $email_viewed_count = ES_DB_Sending_Queue::get_viewed_count_by_hash( $id );
112
- $total_email_sent = ES_DB_Sending_Queue::get_total_email_count_by_hash( $id );
113
 
114
  ?>
115
  <div class="wrap">
116
  <div class="tool-box">
117
- <div class="tablenav">
118
- <div class="alignleft" style="padding-bottom:10px;"><?php echo 'Viewed ' . $email_viewed_count . '/' .$total_email_sent; ?></div>
119
- </div>
120
  <form name="frm_es_display" method="post">
121
  <table width="100%" class="widefat" id="straymanage">
122
  <thead>
@@ -188,9 +188,9 @@ class ES_Reports_Table extends WP_List_Table {
188
  */
189
  public function column_default( $item, $column_name ) {
190
  global $wpdb;
 
191
  switch ( $column_name ) {
192
  case 'start_at':
193
- return ig_es_format_date_time( $item[ $column_name ] );
194
  case 'finish_at':
195
  return ig_es_format_date_time( $item[ $column_name ] );
196
  case 'type':
@@ -252,13 +252,14 @@ class ES_Reports_Table extends WP_List_Table {
252
  function column_subject( $item ) {
253
 
254
  $es_nonce = wp_create_nonce( 'es_notification' );
 
255
 
256
  $title = '<strong>' . $item['subject'] . '</strong>';
257
 
258
  $actions = array(
259
- 'view' => sprintf( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s">%s</a>', esc_attr( Email_Subscribers::get_request( 'page' ) ), 'view', $item['hash'], $es_nonce, __( 'View', 'email-subscribers' ) ),
260
- 'delete' => sprintf( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s">%s</a>', esc_attr( Email_Subscribers::get_request( 'page' ) ), 'delete', absint( $item['id'] ), $es_nonce, __( 'Delete', 'email-subscribers' ) ),
261
- 'preview_email' => sprintf( '<a target="_blank" href="?page=%s&action=%s&list=%s&_wpnonce=%s">%s</a>', esc_attr( Email_Subscribers::get_request( 'page' ) ), 'preview', absint( $item['id'] ), $es_nonce, __( 'Preview', 'email-subscribers' ) )
262
  );
263
 
264
  return $title . $this->row_actions( $actions );
@@ -289,9 +290,9 @@ class ES_Reports_Table extends WP_List_Table {
289
  $campaign_hash = $item['hash'];
290
 
291
  $total_emails_sent = $total_emails_to_be_sent = $item['count'];
292
- if ( ! empty( $campaign_hash ) ) {
293
- //$total_emails_sent = ES_DB_Sending_Queue::get_total_emails_sent_by_hash( $campaign_hash );
294
- }
295
 
296
  // $content = $total_emails_sent . "/" . $total_emails_to_be_sent;
297
 
@@ -372,8 +373,8 @@ class ES_Reports_Table extends WP_List_Table {
372
  public function get_notifications( $per_page = 5, $page_number = 1, $do_count_only = false ) {
373
  global $wpdb;
374
 
375
- $order_by = Email_Subscribers::get_request( 'orderby' );
376
- $order = Email_Subscribers::get_request( 'order' );
377
 
378
  $ig_mailing_queue_table = IG_MAILING_QUEUE_TABLE;
379
 
@@ -386,7 +387,8 @@ class ES_Reports_Table extends WP_List_Table {
386
  if ( ! $do_count_only ) {
387
 
388
  // Prepare Order by clause
389
- $order = ! empty( $order ) ? strtolower( $order ) : 'desc';
 
390
  $expected_order_values = array( 'asc', 'desc' );
391
  if ( ! in_array( $order, $expected_order_values ) ) {
392
  $order = 'desc';
@@ -421,49 +423,50 @@ class ES_Reports_Table extends WP_List_Table {
421
  if ( 'view' === $this->current_action() ) {
422
 
423
  // In our file that handles the request, verify the nonce.
424
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
425
 
426
  if ( ! wp_verify_nonce( $nonce, 'es_notification' ) ) {
427
  $message = __( 'You do not have permission to view notification', 'email-subscribers' );
428
  ES_Common::show_message( $message, 'error' );
429
  } else {
430
- $this->view_list( Email_Subscribers::get_request( 'list' ) );
431
  }
432
 
433
  } elseif ( 'delete' === $this->current_action() ) {
434
 
435
  // In our file that handles the request, verify the nonce.
436
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
437
 
438
  if ( ! wp_verify_nonce( $nonce, 'es_notification' ) ) {
439
  $message = __( 'You do not have permission to delete notification', 'email-subscribers' );
440
  ES_Common::show_message( $message, 'error' );
441
  } else {
442
- ES_DB_Mailing_Queue::delete_notifications( array( absint( Email_Subscribers::get_request( 'list' ) ) ) );
443
- ES_DB_Sending_Queue::delete_sending_queue_by_mailing_id( array( absint( Email_Subscribers::get_request( 'list' ) ) ) );
 
444
  $message = __( 'Report has been deleted successfully!', 'email-subscribers' );
445
  ES_Common::show_message( $message, 'success' );
446
  }
447
 
448
  } elseif ( 'preview' === $this->current_action() ) {
449
  // In our file that handles the request, verify the nonce.
450
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
451
 
452
  if ( ! wp_verify_nonce( $nonce, 'es_notification' ) ) {
453
  $message = __( 'You do not have permission to preview notification', 'email-subscribers' );
454
  ES_Common::show_message( $message, 'error' );
455
  } else {
456
- $report_id = Email_Subscribers::get_request( 'list' );
457
  echo $this->preview_email( $report_id );
458
  die();
459
  }
460
  }
461
 
462
- $action = Email_Subscribers::get_request( 'action' );
463
- $action2 = Email_Subscribers::get_request( 'action2' );
464
  // If the delete bulk action is triggered
465
  if ( ( 'bulk_delete' === $action ) || ( 'bulk_delete' === $action2 ) ) {
466
- $notification_ids = esc_sql( Email_Subscribers::get_request( 'bulk_delete' ) );
467
 
468
  if ( count( $notification_ids ) > 0 ) {
469
  ES_DB_Mailing_Queue::delete_notifications( $notification_ids );
32
 
33
  public function es_reports_callback() {
34
 
35
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
36
  if ( 'view' === $action ) {
37
+ $list = ig_es_clean( ig_es_get_request_data( 'list' ) );
38
  $this->view_list( $list );
39
  } else {
40
  ?>
107
  public function view_list( $id ) {
108
  global $wpdb;
109
 
110
+ $emails = ES_DB_Sending_Queue::get_emails_by_hash( $id );
111
  $email_viewed_count = ES_DB_Sending_Queue::get_viewed_count_by_hash( $id );
112
+ $total_email_sent = ES_DB_Sending_Queue::get_total_email_count_by_hash( $id );
113
 
114
  ?>
115
  <div class="wrap">
116
  <div class="tool-box">
117
+ <div class="tablenav">
118
+ <div class="alignleft" style="padding-bottom:10px;"><?php echo 'Viewed ' . $email_viewed_count . '/' . $total_email_sent; ?></div>
119
+ </div>
120
  <form name="frm_es_display" method="post">
121
  <table width="100%" class="widefat" id="straymanage">
122
  <thead>
188
  */
189
  public function column_default( $item, $column_name ) {
190
  global $wpdb;
191
+
192
  switch ( $column_name ) {
193
  case 'start_at':
 
194
  case 'finish_at':
195
  return ig_es_format_date_time( $item[ $column_name ] );
196
  case 'type':
252
  function column_subject( $item ) {
253
 
254
  $es_nonce = wp_create_nonce( 'es_notification' );
255
+ $page = ig_es_clean( ig_es_get_request_data( 'page' ) );
256
 
257
  $title = '<strong>' . $item['subject'] . '</strong>';
258
 
259
  $actions = array(
260
+ 'view' => sprintf( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s">%s</a>', esc_attr( $page ), 'view', $item['hash'], $es_nonce, __( 'View', 'email-subscribers' ) ),
261
+ 'delete' => sprintf( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s">%s</a>', esc_attr( $page ), 'delete', absint( $item['id'] ), $es_nonce, __( 'Delete', 'email-subscribers' ) ),
262
+ 'preview_email' => sprintf( '<a target="_blank" href="?page=%s&action=%s&list=%s&_wpnonce=%s">%s</a>', esc_attr( $page ), 'preview', absint( $item['id'] ), $es_nonce, __( 'Preview', 'email-subscribers' ) )
263
  );
264
 
265
  return $title . $this->row_actions( $actions );
290
  $campaign_hash = $item['hash'];
291
 
292
  $total_emails_sent = $total_emails_to_be_sent = $item['count'];
293
+ // if ( ! empty( $campaign_hash ) ) {
294
+ // $total_emails_sent = ES_DB_Sending_Queue::get_total_emails_sent_by_hash( $campaign_hash );
295
+ // }
296
 
297
  // $content = $total_emails_sent . "/" . $total_emails_to_be_sent;
298
 
373
  public function get_notifications( $per_page = 5, $page_number = 1, $do_count_only = false ) {
374
  global $wpdb;
375
 
376
+ $order_by = sanitize_sql_orderby( ig_es_get_request_data( 'orderby' ) );
377
+ $order = ig_es_clean( ig_es_get_request_data( 'order' ) );
378
 
379
  $ig_mailing_queue_table = IG_MAILING_QUEUE_TABLE;
380
 
387
  if ( ! $do_count_only ) {
388
 
389
  // Prepare Order by clause
390
+ $order = ! empty( $order ) ? strtolower( $order ) : 'desc';
391
+
392
  $expected_order_values = array( 'asc', 'desc' );
393
  if ( ! in_array( $order, $expected_order_values ) ) {
394
  $order = 'desc';
423
  if ( 'view' === $this->current_action() ) {
424
 
425
  // In our file that handles the request, verify the nonce.
426
+ $nonce = ig_es_clean( ig_es_get_request_data( '_wpnonce' ) );
427
 
428
  if ( ! wp_verify_nonce( $nonce, 'es_notification' ) ) {
429
  $message = __( 'You do not have permission to view notification', 'email-subscribers' );
430
  ES_Common::show_message( $message, 'error' );
431
  } else {
432
+ $this->view_list( ig_es_clean( ig_es_get_request_data( 'list' ) ) );
433
  }
434
 
435
  } elseif ( 'delete' === $this->current_action() ) {
436
 
437
  // In our file that handles the request, verify the nonce.
438
+ $nonce = ig_es_clean( ig_es_get_request_data( '_wpnonce' ) );
439
 
440
  if ( ! wp_verify_nonce( $nonce, 'es_notification' ) ) {
441
  $message = __( 'You do not have permission to delete notification', 'email-subscribers' );
442
  ES_Common::show_message( $message, 'error' );
443
  } else {
444
+ $notification_ids = absint( ig_es_clean( ig_es_get_request_data( 'list' ) ) );
445
+ ES_DB_Mailing_Queue::delete_notifications( array( $notification_ids ) );
446
+ ES_DB_Sending_Queue::delete_sending_queue_by_mailing_id( array( $notification_ids ) );
447
  $message = __( 'Report has been deleted successfully!', 'email-subscribers' );
448
  ES_Common::show_message( $message, 'success' );
449
  }
450
 
451
  } elseif ( 'preview' === $this->current_action() ) {
452
  // In our file that handles the request, verify the nonce.
453
+ $nonce = ig_es_clean( ig_es_get_request_data( '_wpnonce' ) );
454
 
455
  if ( ! wp_verify_nonce( $nonce, 'es_notification' ) ) {
456
  $message = __( 'You do not have permission to preview notification', 'email-subscribers' );
457
  ES_Common::show_message( $message, 'error' );
458
  } else {
459
+ $report_id = ig_es_clean( ig_es_get_request_data( 'list' ) );
460
  echo $this->preview_email( $report_id );
461
  die();
462
  }
463
  }
464
 
465
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
466
+ $action2 = ig_es_clean( ig_es_get_request_data( 'action2' ) );
467
  // If the delete bulk action is triggered
468
  if ( ( 'bulk_delete' === $action ) || ( 'bulk_delete' === $action2 ) ) {
469
+ $notification_ids = ig_es_clean( ig_es_get_request_data( 'bulk_delete' ) );
470
 
471
  if ( count( $notification_ids ) > 0 ) {
472
  ES_DB_Mailing_Queue::delete_notifications( $notification_ids );
includes/admin/class-es-subscribers-table.php CHANGED
@@ -103,13 +103,13 @@ class ES_Subscribers_Table extends WP_List_Table {
103
 
104
  <?php
105
 
106
- $action = Email_Subscribers::get_request( 'action' );
107
  if ( 'import' === $action ) {
108
  $this->load_import();
109
  } elseif ( 'export' === $action ) {
110
  $this->load_export();
111
  } elseif ( 'new' === $action || 'edit' === $action ) {
112
- $contact_id = absint( Email_Subscribers::get_request( 'subscriber' ) );
113
  $this->save_contact( $contact_id );
114
  } elseif ( 'sync' === $action ) {
115
  update_option( 'ig_es_show_sync_tab', 'no' ); // yes/no
@@ -210,15 +210,15 @@ class ES_Subscribers_Table extends WP_List_Table {
210
  $email = ! empty( $contact['email'] ) ? $contact['email'] : '';
211
  $list_ids = ES_DB_Lists_Contacts::get_list_ids_by_contact( $id );
212
  $guid = $contact['hash'];
213
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
214
  }
215
  }
216
 
217
- $submitted = Email_Subscribers::get_request( 'submitted' );
218
  if ( 'submitted' === $submitted ) {
219
- $contact_data = ! empty( $_POST['contact_data'] ) ? $_POST['contact_data'] : array();
220
 
221
- $is_error = false;
 
222
  if ( ! empty( $contact_data ) ) {
223
 
224
  $email = ! empty( $contact_data['email'] ) ? sanitize_email( $contact_data['email'] ) : '';
@@ -356,12 +356,11 @@ class ES_Subscribers_Table extends WP_List_Table {
356
  public function get_subscribers( $per_page = 5, $page_number = 1, $do_count_only = false ) {
357
  global $wpdb;
358
 
359
- $order_by = Email_Subscribers::get_request( 'orderby' );
360
- $order = Email_Subscribers::get_request( 'order' );
361
- $search = Email_Subscribers::get_request( 's' );
362
- $filter_by_list_id = Email_Subscribers::get_request( 'filter_by_list_id' );
363
- $filter_by_status = Email_Subscribers::get_request( 'filter_by_status' );
364
-
365
 
366
  $contacts_table = IG_CONTACTS_TABLE;
367
  $lists_contacts_table = IG_LISTS_CONTACTS_TABLE;
@@ -463,13 +462,15 @@ class ES_Subscribers_Table extends WP_List_Table {
463
  $title = $notificationid[0]->first_name . ' ' . $notificationid[0]->last_name;
464
  $email = $notificationid[0]->email;
465
  $contact_lists = ES_DB_Lists_Contacts::get_list_ids_by_contact( $notificationid[0]->id );
466
- if ( 'updated' === Email_Subscribers::get_request( 'status' ) ) {
467
 
468
- $email_address = Email_Subscribers::get_request( 'email' );
 
 
 
469
  if ( ! empty( $email_address ) ) {
470
  $this->update_list( $id );
471
- $title = Email_Subscribers::get_request( 'subscriber_name' );
472
- $contact_lists = Email_Subscribers::get_request( 'lists' );
473
  $email = $email_address;
474
  }
475
  }
@@ -477,7 +478,7 @@ class ES_Subscribers_Table extends WP_List_Table {
477
  $id = $notificationid[0]->id;
478
  $guid = $notificationid[0]->hash;
479
  $created = $notificationid[0]->created_at;
480
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
481
 
482
  $data = array(
483
  'id' => $id,
@@ -489,7 +490,8 @@ class ES_Subscribers_Table extends WP_List_Table {
489
  'selected_list_ids' => $contact_lists
490
  );
491
 
492
- if ( Email_Subscribers::get_request( 'subscriber_name' ) ) {
 
493
  $message = __( 'Contact updated successfully!', 'email-subscribers' );
494
  ES_Common::show_message( $message, 'success' );
495
  }
@@ -712,15 +714,17 @@ class ES_Subscribers_Table extends WP_List_Table {
712
  $name = ES_Common::prepare_name_from_first_name_last_name( $item['first_name'], $item['last_name'] );
713
  $title = '<strong>' . $name . '</strong>';
714
 
 
 
715
  $actions = array(
716
- 'edit' => sprintf( __( '<a href="?page=%s&action=%s&subscriber=%s&_wpnonce=%s">Edit</a>', 'email-subscribers' ), esc_attr( Email_Subscribers::get_request( 'page' ) ), 'edit', absint( $item['id'] ), $delete_nonce ),
717
- 'delete' => sprintf( __( '<a href="?page=%s&action=%s&subscriber=%s&_wpnonce=%s" onclick="return checkDelete()">Delete</a>', 'email-subscribers' ), esc_attr( Email_Subscribers::get_request( 'page' ) ), 'delete', absint( $item['id'] ), $delete_nonce ),
718
  );
719
 
720
  $optin_type = get_option( 'ig_es_optin_type' );
721
 
722
  //if ( in_array( $optin_type, array( 'double_optin', 'double_opt_in' ) ) ) {
723
- $actions['resend'] = sprintf( __( '<a href="?page=%s&action=%s&subscriber=%s&_wpnonce=%s">Resend Confirmation<a>', 'email-subscribers' ), esc_attr( Email_Subscribers::get_request( 'page' ) ), 'resend', absint( $item['id'] ), $delete_nonce );
724
 
725
  //}
726
 
@@ -792,13 +796,13 @@ class ES_Subscribers_Table extends WP_List_Table {
792
  <?php submit_button( __( 'Search Contacts', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
793
  </p>
794
  <p class="search-box search-group-box box-ma10">
795
- <?php $filter_by_status = Email_Subscribers::get_request( 'filter_by_status' ); ?>
796
  <select name="filter_by_status">
797
  <?php echo ES_Common::prepare_statuses_dropdown_options( $filter_by_status, __( 'All Statuses', 'email-subscribers' ) ); ?>
798
  </select>
799
  </p>
800
  <p class="search-box search-group-box box-ma10">
801
- <?php $filter_by_list_id = Email_Subscribers::get_request( 'filter_by_list_id' ); ?>
802
  <select name="filter_by_list_id">
803
  <?php echo ES_Common::prepare_list_dropdown_options( $filter_by_list_id, __( 'All Lists', 'email-subscribers' ) ); ?>
804
  </select>
@@ -817,7 +821,7 @@ class ES_Subscribers_Table extends WP_List_Table {
817
 
818
  /** Process bulk action */
819
  $this->process_bulk_action();
820
- $this->search_box( Email_Subscribers::get_request( 's' ), 'subscriber-search-input' );
821
  $this->edit_group();
822
  $this->edit_status();
823
 
@@ -882,12 +886,13 @@ class ES_Subscribers_Table extends WP_List_Table {
882
  if ( 'delete' === $this->current_action() ) {
883
 
884
  // In our file that handles the request, verify the nonce.
885
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
886
 
887
  if ( ! wp_verify_nonce( $nonce, 'ig_es_delete_subscriber' ) ) {
888
  die( 'You do not have a permission to delete contact(s)' );
889
  } else {
890
- $deleted = ES_DB_Contacts::delete_subscribers( array( absint( Email_Subscribers::get_request( 'subscriber' ) ) ) );
 
891
  if ( $deleted ) {
892
  $message = __( 'Contact(s) have been deleted successfully!', 'email-subscribers' );
893
  ES_Common::show_message( $message, 'success' );
@@ -900,12 +905,12 @@ class ES_Subscribers_Table extends WP_List_Table {
900
 
901
  if ( 'resend' === $this->current_action() ) {
902
  // In our file that handles the request, verify the nonce.
903
- $nonce = esc_attr( Email_Subscribers::get_request( '_wpnonce' ) );
904
 
905
  if ( ! wp_verify_nonce( $nonce, 'ig_es_delete_subscriber' ) ) {
906
  die( 'You do not have a permission to resend email confirmation' );
907
  } else {
908
- $id = absint( Email_Subscribers::get_request( 'subscriber' ) );
909
  $subscriber = ES_DB_Contacts::get_subscribers_by_id( $id );
910
  $template_data = array(
911
  'email' => $subscriber['email'],
@@ -931,13 +936,13 @@ class ES_Subscribers_Table extends WP_List_Table {
931
 
932
  }
933
 
934
- $action = Email_Subscribers::get_request( 'action' );
935
- $action2 = Email_Subscribers::get_request( 'action2' );
936
 
937
  $actions = array( 'bulk_delete', 'bulk_status_update', 'bulk_list_update', 'bulk_list_add' );
938
  if ( in_array( $action, $actions ) || in_array( $action2, $actions ) ) {
939
 
940
- $subscriber_ids = esc_sql( Email_Subscribers::get_request( 'subscribers' ) );
941
  if ( empty( $subscriber_ids ) ) {
942
  $message = __( 'Please select subscribers to update.', 'email-subscribers' );
943
  ES_Common::show_message( $message, 'error' );
@@ -959,7 +964,7 @@ class ES_Subscribers_Table extends WP_List_Table {
959
  }
960
 
961
  if ( ( 'bulk_status_update' === $action ) || ( 'bulk_status_update' === $action2 ) ) {
962
- $status = Email_Subscribers::get_request( 'status_select' );
963
 
964
  if ( empty( $status ) ) {
965
  $message = __( 'Please select status.', 'email-subscribers' );
@@ -981,7 +986,7 @@ class ES_Subscribers_Table extends WP_List_Table {
981
 
982
  if ( ( 'bulk_list_update' === $action ) || ( 'bulk_list_update' === $action2 ) ) {
983
 
984
- $list_id = Email_Subscribers::get_request( 'list_id' );
985
  if ( empty( $list_id ) ) {
986
  $message = __( 'Please select list.', 'email-subscribers' );
987
  ES_Common::show_message( $message, 'error' );
@@ -1001,7 +1006,8 @@ class ES_Subscribers_Table extends WP_List_Table {
1001
 
1002
  if ( ( 'bulk_list_add' === $action ) || ( 'bulk_list_add' === $action2 ) ) {
1003
 
1004
- $list_id = Email_Subscribers::get_request( 'list_id' );
 
1005
  if ( empty( $list_id ) ) {
1006
  $message = __( 'Please select list.', 'email-subscribers' );
1007
  ES_Common::show_message( $message, 'error' );
103
 
104
  <?php
105
 
106
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
107
  if ( 'import' === $action ) {
108
  $this->load_import();
109
  } elseif ( 'export' === $action ) {
110
  $this->load_export();
111
  } elseif ( 'new' === $action || 'edit' === $action ) {
112
+ $contact_id = absint( ig_es_clean( ig_es_get_request_data( 'subscriber' ) ) );
113
  $this->save_contact( $contact_id );
114
  } elseif ( 'sync' === $action ) {
115
  update_option( 'ig_es_show_sync_tab', 'no' ); // yes/no
210
  $email = ! empty( $contact['email'] ) ? $contact['email'] : '';
211
  $list_ids = ES_DB_Lists_Contacts::get_list_ids_by_contact( $id );
212
  $guid = $contact['hash'];
213
+ $nonce = esc_attr( ig_es_clean( ig_es_get_request_data( '_wpnonce' ) ) );
214
  }
215
  }
216
 
217
+ $submitted = ig_es_clean( ig_es_get_request_data( 'submitted' ) );
218
  if ( 'submitted' === $submitted ) {
 
219
 
220
+ $contact_data = ig_es_clean( ig_es_get_post_data( 'contact_data', array() ) );
221
+ $is_error = false;
222
  if ( ! empty( $contact_data ) ) {
223
 
224
  $email = ! empty( $contact_data['email'] ) ? sanitize_email( $contact_data['email'] ) : '';
356
  public function get_subscribers( $per_page = 5, $page_number = 1, $do_count_only = false ) {
357
  global $wpdb;
358
 
359
+ $order_by = sanitize_sql_orderby( ig_es_get_request_data( 'orderby' ) );
360
+ $order = ig_es_clean( ig_es_get_request_data( 'order' ) );
361
+ $search = ig_es_clean( ig_es_get_request_data( 's' ) );
362
+ $filter_by_list_id = ig_es_clean( ig_es_get_request_data( 'filter_by_list_id' ) );
363
+ $filter_by_status = ig_es_clean( ig_es_get_request_data( 'filter_by_status' ) );
 
364
 
365
  $contacts_table = IG_CONTACTS_TABLE;
366
  $lists_contacts_table = IG_LISTS_CONTACTS_TABLE;
462
  $title = $notificationid[0]->first_name . ' ' . $notificationid[0]->last_name;
463
  $email = $notificationid[0]->email;
464
  $contact_lists = ES_DB_Lists_Contacts::get_list_ids_by_contact( $notificationid[0]->id );
 
465
 
466
+ $status = ig_es_clean( ig_es_get_request_data( 'status' ) );
467
+ if ( 'updated' === $status ) {
468
+ $email_address = sanitize_email( ig_es_get_request_data( 'email' ) );
469
+
470
  if ( ! empty( $email_address ) ) {
471
  $this->update_list( $id );
472
+ $title = ig_es_clean( ig_es_get_request_data( 'subscriber_name' ) );
473
+ $contact_lists = ig_es_clean( ig_es_get_request_data( 'lists' ) );
474
  $email = $email_address;
475
  }
476
  }
478
  $id = $notificationid[0]->id;
479
  $guid = $notificationid[0]->hash;
480
  $created = $notificationid[0]->created_at;
481
+ $nonce = esc_attr( ig_es_clean( ig_es_get_request_data( '_wpnonce' ) ) );
482
 
483
  $data = array(
484
  'id' => $id,
490
  'selected_list_ids' => $contact_lists
491
  );
492
 
493
+ $contact_name = ig_es_clean( ig_es_get_request_data( 'subscriber_name' ) );
494
+ if ( $contact_name ) {
495
  $message = __( 'Contact updated successfully!', 'email-subscribers' );
496
  ES_Common::show_message( $message, 'success' );
497
  }
714
  $name = ES_Common::prepare_name_from_first_name_last_name( $item['first_name'], $item['last_name'] );
715
  $title = '<strong>' . $name . '</strong>';
716
 
717
+ $page = ig_es_clean( ig_es_get_request_data( 'page' ) );
718
+
719
  $actions = array(
720
+ 'edit' => sprintf( __( '<a href="?page=%s&action=%s&subscriber=%s&_wpnonce=%s">Edit</a>', 'email-subscribers' ), esc_attr( $page ), 'edit', absint( $item['id'] ), $delete_nonce ),
721
+ 'delete' => sprintf( __( '<a href="?page=%s&action=%s&subscriber=%s&_wpnonce=%s" onclick="return checkDelete()">Delete</a>', 'email-subscribers' ), esc_attr( $page ), 'delete', absint( $item['id'] ), $delete_nonce ),
722
  );
723
 
724
  $optin_type = get_option( 'ig_es_optin_type' );
725
 
726
  //if ( in_array( $optin_type, array( 'double_optin', 'double_opt_in' ) ) ) {
727
+ $actions['resend'] = sprintf( __( '<a href="?page=%s&action=%s&subscriber=%s&_wpnonce=%s">Resend Confirmation<a>', 'email-subscribers' ), esc_attr( ig_es_clean( ig_es_get_request_data( 'page' ) ) ), 'resend', absint( $item['id'] ), $delete_nonce );
728
 
729
  //}
730
 
796
  <?php submit_button( __( 'Search Contacts', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
797
  </p>
798
  <p class="search-box search-group-box box-ma10">
799
+ <?php $filter_by_status = ig_es_clean( ig_es_get_request_data( 'filter_by_status' ) ); ?>
800
  <select name="filter_by_status">
801
  <?php echo ES_Common::prepare_statuses_dropdown_options( $filter_by_status, __( 'All Statuses', 'email-subscribers' ) ); ?>
802
  </select>
803
  </p>
804
  <p class="search-box search-group-box box-ma10">
805
+ <?php $filter_by_list_id = ig_es_clean( ig_es_get_request_data( 'filter_by_list_id' ) ); ?>
806
  <select name="filter_by_list_id">
807
  <?php echo ES_Common::prepare_list_dropdown_options( $filter_by_list_id, __( 'All Lists', 'email-subscribers' ) ); ?>
808
  </select>
821
 
822
  /** Process bulk action */
823
  $this->process_bulk_action();
824
+ $this->search_box( ig_es_clean( ig_es_get_request_data( 's' ) ), 'subscriber-search-input' );
825
  $this->edit_group();
826
  $this->edit_status();
827
 
886
  if ( 'delete' === $this->current_action() ) {
887
 
888
  // In our file that handles the request, verify the nonce.
889
+ $nonce = esc_attr( ig_es_clean( ig_es_get_request_data( '_wpnonce' ) ) );
890
 
891
  if ( ! wp_verify_nonce( $nonce, 'ig_es_delete_subscriber' ) ) {
892
  die( 'You do not have a permission to delete contact(s)' );
893
  } else {
894
+ $subscriber_id = absint( ig_es_clean( ig_es_get_request_data( 'subscriber' ) ) );
895
+ $deleted = ES_DB_Contacts::delete_subscribers( array( $subscriber_id ) );
896
  if ( $deleted ) {
897
  $message = __( 'Contact(s) have been deleted successfully!', 'email-subscribers' );
898
  ES_Common::show_message( $message, 'success' );
905
 
906
  if ( 'resend' === $this->current_action() ) {
907
  // In our file that handles the request, verify the nonce.
908
+ $nonce = esc_attr( ig_es_clean( ig_es_get_request_data( '_wpnonce' ) ) );
909
 
910
  if ( ! wp_verify_nonce( $nonce, 'ig_es_delete_subscriber' ) ) {
911
  die( 'You do not have a permission to resend email confirmation' );
912
  } else {
913
+ $id = absint( ig_es_clean( ig_es_get_request_data( 'subscriber' ) ) );
914
  $subscriber = ES_DB_Contacts::get_subscribers_by_id( $id );
915
  $template_data = array(
916
  'email' => $subscriber['email'],
936
 
937
  }
938
 
939
+ $action = ig_es_clean( ig_es_get_request_data( 'action' ) );
940
+ $action2 = ig_es_clean( ig_es_get_request_data( 'action2' ) );
941
 
942
  $actions = array( 'bulk_delete', 'bulk_status_update', 'bulk_list_update', 'bulk_list_add' );
943
  if ( in_array( $action, $actions ) || in_array( $action2, $actions ) ) {
944
 
945
+ $subscriber_ids = ig_es_clean( ig_es_get_request_data( 'subscribers' ) );
946
  if ( empty( $subscriber_ids ) ) {
947
  $message = __( 'Please select subscribers to update.', 'email-subscribers' );
948
  ES_Common::show_message( $message, 'error' );
964
  }
965
 
966
  if ( ( 'bulk_status_update' === $action ) || ( 'bulk_status_update' === $action2 ) ) {
967
+ $status = ig_es_clean( ig_es_get_request_data( 'status_select' ) );
968
 
969
  if ( empty( $status ) ) {
970
  $message = __( 'Please select status.', 'email-subscribers' );
986
 
987
  if ( ( 'bulk_list_update' === $action ) || ( 'bulk_list_update' === $action2 ) ) {
988
 
989
+ $list_id = ig_es_clean( ig_es_get_request_data( 'list_id' ) );
990
  if ( empty( $list_id ) ) {
991
  $message = __( 'Please select list.', 'email-subscribers' );
992
  ES_Common::show_message( $message, 'error' );
1006
 
1007
  if ( ( 'bulk_list_add' === $action ) || ( 'bulk_list_add' === $action2 ) ) {
1008
 
1009
+ $list_id = ig_es_clean( ig_es_get_request_data( 'list_id' ) );
1010
+
1011
  if ( empty( $list_id ) ) {
1012
  $message = __( 'Please select list.', 'email-subscribers' );
1013
  ES_Common::show_message( $message, 'error' );
includes/admin/class-es-templates-table.php CHANGED
@@ -18,37 +18,38 @@ class ES_Templates_Table {
18
  add_action( 'admin_footer', array( $this, 'add_custom_button' ) );
19
  add_action( 'edit_form_after_title', array( $this, 'add_template_type' ) );
20
  //duplicate template
21
- add_filter( 'post_row_actions', array(&$this , 'add_message_action'), 10, 2 );
22
- add_action('admin_init', array(&$this ,'duplicate_message') ,10, 1);
23
  }
24
 
25
- public function add_template_type(){
26
  global $post;
27
  if ( ! ( is_object( $post ) && 'es_template' === $post->post_type ) ) {
28
  return;
29
  }
30
  $values = get_post_custom( $post->ID );
31
 
32
- $selected = isset( $values['es_template_type'] ) ? esc_attr( $values['es_template_type'][0] ) : '';
33
- $template_type = array('newsletter' => __( 'Broadcast', 'email-subscribers' ) ,
34
- 'post_notification' => __( 'Post Notification', 'email-subscribers' )
35
- );
 
36
  $template_type = apply_filters( 'es_template_type', $template_type );
37
- ?>
38
- <p>
39
  <label for="es_template_type"><strong><?php _e( 'Select your Email Template Type', 'email-subscirbers' ); ?></strong></label></br>
40
  <select name="es_template_type" id="es_template_type">
41
- <?php
42
- if(!empty($template_type)){
43
- foreach ($template_type as $key => $value) {
44
- echo "<option value=".$key." ".selected( $selected, $key, false ).">".$value."</option>";
45
- }
46
- }
47
- ?>
48
 
49
  </select>
50
  </p>
51
- <?php
52
  }
53
 
54
  public function es_template_meta_box_add() {
@@ -62,11 +63,13 @@ class ES_Templates_Table {
62
  }
63
  ?>
64
  <p id="post_notification">
65
- <a href="https://www.icegram.com/documentation/es-what-are-the-available-keywords-in-the-post-notifications/?utm_source=es&amp;utm_medium=in_app&amp;utm_campaign=view_docs_help_page" target="_blank"><?php _e( 'Available Keywords', 'email-subscribers' ); ?></a> <?php _e( 'for Post Notification: ', 'email-subsribers' ); ?> {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}, {{EMAIL}},
 
66
  {{DATE}}, {{POSTTITLE}}, {{POSTIMAGE}}, {{POSTEXCERPT}}, {{POSTDESC}},
67
  {{POSTAUTHOR}}, {{POSTLINK}}, {{POSTLINK-WITHTITLE}}, {{POSTLINK-ONLY}}, {{POSTFULL}} </p>
68
  <p id="newsletter">
69
- <a href="https://www.icegram.com/documentation/es-what-are-the-available-keywords-in-the-newsletters/?utm_source=es&amp;utm_medium=in_app&amp;utm_campaign=view_docs_help_page" target="_blank"><?php _e( 'Available Keywords', 'email-subscribers' ); ?></a> <?php _e( 'for Broadcast:', 'email-subscribers' ); ?> {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}, {{EMAIL}} </p>
 
70
  <?php
71
  }
72
 
@@ -92,7 +95,8 @@ class ES_Templates_Table {
92
 
93
 
94
  if ( isset( $_POST['es_template_type'] ) ) {
95
- update_post_meta( $post_id, 'es_template_type', esc_attr( $_POST['es_template_type'] ) );
 
96
  }
97
  }
98
 
@@ -126,7 +130,7 @@ class ES_Templates_Table {
126
 
127
  public function es_template_preview_callback() {
128
 
129
- $template_id = Email_Subscribers::get_request( 'post' );
130
 
131
  $template = get_post( $template_id, ARRAY_A );
132
 
@@ -229,7 +233,7 @@ class ES_Templates_Table {
229
  switch ( $column ) {
230
  case 'es_template_type':
231
  $type = get_post_meta( $post->ID, 'es_template_type', true );
232
- $type = strtolower( $type );
233
  $type = ( 'newsletter' === $type ) ? __( 'Broadcast', 'email-subscribers' ) : $type;
234
  echo $type = ucwords( str_replace( '_', ' ', $type ) );
235
  break;
@@ -243,58 +247,64 @@ class ES_Templates_Table {
243
  return $column;
244
  }
245
 
246
- function add_message_action( $actions, $post ){
247
- if ($post->post_type != 'es_template') return $actions;
248
- $actions['duplicate_template'] = '<a class="es-duplicate-template" href="post.php?template_id='.$post->ID.'&action=duplicate-template" >'.__('Duplicate' ,'email-subscribers').'</a>';
 
 
 
249
  return $actions;
250
  }
251
 
252
- function duplicate_message(){
253
- if(isset($_REQUEST['action']) && $_REQUEST['action'] == 'duplicate-template' && !empty($_REQUEST['template_id'])){
 
 
254
  //duplicate tempalte
255
- $duplicate_template_id = $this->duplicate_in_db( $_REQUEST['template_id'] );
256
  // $location = admin_url( 'post.php?post='.$duplicate_template_id.'&action=edit');
257
- $location = admin_url( 'edit.php?post_type=es_template');
258
- wp_safe_redirect($location);
259
- exit;
260
  }
261
  }
262
 
263
- function duplicate_in_db( $original_id){
264
- // Get access to the database
265
- global $wpdb;
266
- // Get the post as an array
267
- $duplicate = get_post( $original_id, 'ARRAY_A' );
268
- // Modify some of the elements
269
- $duplicate['post_title'] = $duplicate['post_title'].' '.__('Copy', 'icegram');
270
- $duplicate['post_status'] = 'draft';
271
- // Set the post date
272
- $timestamp = current_time('timestamp', 0);
273
-
274
- $duplicate['post_date'] = date('Y-m-d H:i:s', $timestamp);
275
-
276
- // Remove some of the keys
277
- unset( $duplicate['ID'] );
278
- unset( $duplicate['guid'] );
279
- unset( $duplicate['comment_count'] );
280
-
281
- // Insert the post into the database
282
- $duplicate_id = wp_insert_post( $duplicate );
283
-
284
- // Duplicate all taxonomies/terms
285
- $taxonomies = get_object_taxonomies( $duplicate['post_type'] );
286
-
287
- foreach( $taxonomies as $taxonomy ) {
288
- $terms = wp_get_post_terms( $original_id, $taxonomy, array('fields' => 'names') );
289
- wp_set_object_terms( $duplicate_id, $terms, $taxonomy );
290
- }
291
-
292
- // Duplicate all custom fields
293
- $custom_fields = get_post_custom( $original_id );
294
- foreach ( $custom_fields as $key => $value ) {
295
- add_post_meta( $duplicate_id, $key, maybe_unserialize($value[0]) );
296
- }
297
- return $duplicate_id;
 
298
  }
299
 
300
  public static function get_instance() {
18
  add_action( 'admin_footer', array( $this, 'add_custom_button' ) );
19
  add_action( 'edit_form_after_title', array( $this, 'add_template_type' ) );
20
  //duplicate template
21
+ add_filter( 'post_row_actions', array( &$this, 'add_message_action' ), 10, 2 );
22
+ add_action( 'admin_init', array( &$this, 'duplicate_message' ), 10, 1 );
23
  }
24
 
25
+ public function add_template_type() {
26
  global $post;
27
  if ( ! ( is_object( $post ) && 'es_template' === $post->post_type ) ) {
28
  return;
29
  }
30
  $values = get_post_custom( $post->ID );
31
 
32
+ $selected = isset( $values['es_template_type'] ) ? esc_attr( $values['es_template_type'][0] ) : '';
33
+ $template_type = array(
34
+ 'newsletter' => __( 'Broadcast', 'email-subscribers' ),
35
+ 'post_notification' => __( 'Post Notification', 'email-subscribers' )
36
+ );
37
  $template_type = apply_filters( 'es_template_type', $template_type );
38
+ ?>
39
+ <p>
40
  <label for="es_template_type"><strong><?php _e( 'Select your Email Template Type', 'email-subscirbers' ); ?></strong></label></br>
41
  <select name="es_template_type" id="es_template_type">
42
+ <?php
43
+ if ( ! empty( $template_type ) ) {
44
+ foreach ( $template_type as $key => $value ) {
45
+ echo "<option value=" . $key . " " . selected( $selected, $key, false ) . ">" . $value . "</option>";
46
+ }
47
+ }
48
+ ?>
49
 
50
  </select>
51
  </p>
52
+ <?php
53
  }
54
 
55
  public function es_template_meta_box_add() {
63
  }
64
  ?>
65
  <p id="post_notification">
66
+ <a href="https://www.icegram.com/documentation/es-what-are-the-available-keywords-in-the-post-notifications/?utm_source=es&amp;utm_medium=in_app&amp;utm_campaign=view_docs_help_page" target="_blank"><?php _e( 'Available Keywords', 'email-subscribers' ); ?></a> <?php _e( 'for Post Notification: ', 'email-subsribers' ); ?> {{FIRSTNAME}},
67
+ {{LASTNAME}}, {{NAME}}, {{EMAIL}},
68
  {{DATE}}, {{POSTTITLE}}, {{POSTIMAGE}}, {{POSTEXCERPT}}, {{POSTDESC}},
69
  {{POSTAUTHOR}}, {{POSTLINK}}, {{POSTLINK-WITHTITLE}}, {{POSTLINK-ONLY}}, {{POSTFULL}} </p>
70
  <p id="newsletter">
71
+ <a href="https://www.icegram.com/documentation/es-what-are-the-available-keywords-in-the-newsletters/?utm_source=es&amp;utm_medium=in_app&amp;utm_campaign=view_docs_help_page" target="_blank"><?php _e( 'Available Keywords', 'email-subscribers' ); ?></a> <?php _e( 'for Broadcast:', 'email-subscribers' ); ?> {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}},
72
+ {{EMAIL}} </p>
73
  <?php
74
  }
75
 
95
 
96
 
97
  if ( isset( $_POST['es_template_type'] ) ) {
98
+ $es_template_type = ig_es_clean(ig_es_get_post_data('es_template_type'));
99
+ update_post_meta( $post_id, 'es_template_type', esc_attr( $es_template_type ) );
100
  }
101
  }
102
 
130
 
131
  public function es_template_preview_callback() {
132
 
133
+ $template_id = ig_es_clean(ig_es_get_request_data('post'));
134
 
135
  $template = get_post( $template_id, ARRAY_A );
136
 
233
  switch ( $column ) {
234
  case 'es_template_type':
235
  $type = get_post_meta( $post->ID, 'es_template_type', true );
236
+ $type = sanitize_text_field(strtolower( $type ));
237
  $type = ( 'newsletter' === $type ) ? __( 'Broadcast', 'email-subscribers' ) : $type;
238
  echo $type = ucwords( str_replace( '_', ' ', $type ) );
239
  break;
247
  return $column;
248
  }
249
 
250
+ function add_message_action( $actions, $post ) {
251
+ if ( $post->post_type != 'es_template' ) {
252
+ return $actions;
253
+ }
254
+ $actions['duplicate_template'] = '<a class="es-duplicate-template" href="post.php?template_id=' . $post->ID . '&action=duplicate-template" >' . __( 'Duplicate', 'email-subscribers' ) . '</a>';
255
+
256
  return $actions;
257
  }
258
 
259
+ function duplicate_message() {
260
+ $action = ig_es_clean(ig_es_get_request_data( 'action' ));
261
+ $template_id = ig_es_clean(ig_es_get_request_data( 'template_id' ));
262
+ if ( ! empty( $template_id ) && 'duplicate-template' === $action ) {
263
  //duplicate tempalte
264
+ $this->duplicate_in_db( $template_id );
265
  // $location = admin_url( 'post.php?post='.$duplicate_template_id.'&action=edit');
266
+ $location = admin_url( 'edit.php?post_type=es_template' );
267
+ wp_safe_redirect( $location );
268
+ exit;
269
  }
270
  }
271
 
272
+ function duplicate_in_db( $original_id ) {
273
+ // Get access to the database
274
+ global $wpdb;
275
+ // Get the post as an array
276
+ $duplicate = get_post( $original_id, 'ARRAY_A' );
277
+ // Modify some of the elements
278
+ $duplicate['post_title'] = $duplicate['post_title'] . ' ' . __( 'Copy', 'icegram' );
279
+ $duplicate['post_status'] = 'draft';
280
+ // Set the post date
281
+ $timestamp = current_time( 'timestamp', 0 );
282
+
283
+ $duplicate['post_date'] = date( 'Y-m-d H:i:s', $timestamp );
284
+
285
+ // Remove some of the keys
286
+ unset( $duplicate['ID'] );
287
+ unset( $duplicate['guid'] );
288
+ unset( $duplicate['comment_count'] );
289
+
290
+ // Insert the post into the database
291
+ $duplicate_id = wp_insert_post( $duplicate );
292
+
293
+ // Duplicate all taxonomies/terms
294
+ $taxonomies = get_object_taxonomies( $duplicate['post_type'] );
295
+
296
+ foreach ( $taxonomies as $taxonomy ) {
297
+ $terms = wp_get_post_terms( $original_id, $taxonomy, array( 'fields' => 'names' ) );
298
+ wp_set_object_terms( $duplicate_id, $terms, $taxonomy );
299
+ }
300
+
301
+ // Duplicate all custom fields
302
+ $custom_fields = get_post_custom( $original_id );
303
+ foreach ( $custom_fields as $key => $value ) {
304
+ add_post_meta( $duplicate_id, $key, maybe_unserialize( $value[0] ) );
305
+ }
306
+
307
+ return $duplicate_id;
308
  }
309
 
310
  public static function get_instance() {
includes/admin/class-es-tools.php CHANGED
@@ -24,7 +24,8 @@ class ES_Tools {
24
  }
25
 
26
  public static function es_send_test_email_callback() {
27
- $email = ! empty( $_REQUEST['es_test_email'] ) ? $_REQUEST['es_test_email'] : '';
 
28
  $email_response = '';
29
  $response = array();
30
  if ( ! empty( $email ) ) {
24
  }
25
 
26
  public static function es_send_test_email_callback() {
27
+ $email = sanitize_email(ig_es_get_request_data('es_test_email'));
28
+
29
  $email_response = '';
30
  $response = array();
31
  if ( ! empty( $email ) ) {
includes/class-email-subscribers.php CHANGED
@@ -74,8 +74,6 @@ class Email_Subscribers {
74
  public function __construct() {
75
  global $ig_es_feedback, $ig_es_tracker;
76
 
77
- $feedback_version = '1.0.9';
78
-
79
  require_once plugin_dir_path( __FILE__ ) . 'class-email-subscribers-activator.php';
80
  require_once plugin_dir_path( __FILE__ ) . 'class-email-subscribers-deactivator.php';
81
 
@@ -88,14 +86,14 @@ class Email_Subscribers {
88
  $this->email_subscribers = 'email-subscribers';
89
 
90
  $this->define_constants();
91
- $this->load_dependencies( $feedback_version );
92
  $this->set_locale();
93
  $this->define_admin_hooks();
94
  $this->define_public_hooks();
95
 
96
- $ig_es_tracker = 'IG_Tracker_V_' . str_replace( '.', '_', $feedback_version );
97
  if ( is_admin() ) {
98
- $ig_es_feedback_class = 'IG_Feedback_V_' . str_replace( '.', '_', $feedback_version );
99
  $ig_es_feedback = new $ig_es_feedback_class( 'Email Subscribers', 'email-subscribers', 'ig_es', 'esfree.', false );
100
  $ig_es_feedback->render_deactivate_feedback();
101
  }
@@ -123,6 +121,14 @@ class Email_Subscribers {
123
  return;
124
  }
125
 
 
 
 
 
 
 
 
 
126
  //Email Subscribers Pro update notice
127
  $active_plugins = $ig_es_tracker::get_active_plugins();
128
 
@@ -171,10 +177,10 @@ class Email_Subscribers {
171
 
172
  //post digest
173
  $post_digest_option_dismiss = get_option( 'ig_es_post_digest_notice' );
174
- $post_digest_option_seen = get_option( 'ig_es_post_digest_notice_seen' );
175
- if ( ! in_array( $es_premium, $all_plugins ) && is_admin() && $post_digest_option_seen != 'yes' && $post_digest_option_dismiss != 'yes' ){
176
- $post_digest_url = admin_url() . '?es_dismiss_admin_notice=1&option_name=post_digest_notice_seen';
177
- $post_digest_notice = sprintf( __('📣 <b>[Coming Soon]</b> New Feature : Send <strong>Post Digest</strong> using Email Subscribers <a href="%s" target="_blank">[Read more]</a>', 'email-subscribers'), $post_digest_url);
178
  echo '<div class="notice notice-warning" style="background-color: #FFF;"><p style="letter-spacing: 0.6px;">' . $post_digest_notice . '<a style="float:right" class="es-admin-btn es-admin-btn-secondary " href="' . admin_url() . '?es_dismiss_admin_notice=1&option_name=post_digest_notice">' . __( 'OK, I Got it!',
179
  'email-subscribers' ) . '</a></p></div>';
180
  }
@@ -183,8 +189,9 @@ class Email_Subscribers {
183
  }
184
 
185
  public function es_dismiss_admin_notice() {
186
- if ( isset( $_GET['es_dismiss_admin_notice'] ) && $_GET['es_dismiss_admin_notice'] == '1' && isset( $_GET['option_name'] ) ) {
187
- $option_name = sanitize_text_field( $_GET['option_name'] );
 
188
  update_option( 'ig_es_' . $option_name, 'yes' );
189
  if ( in_array( $option_name, array( 'redirect_upsale_notice', 'dismiss_upsale_notice', 'dismiss_star_notice', 'star_notice_done' ) ) ) {
190
  update_option( 'ig_es_' . $option_name . '_date', ig_get_current_date_time() );
@@ -285,9 +292,8 @@ class Email_Subscribers {
285
  * @since 4.0
286
  * @access private
287
  */
288
- private function load_dependencies( $feedback_version ) {
289
 
290
- $feedback_version_for_file = str_replace( '.', '-', $feedback_version );
291
  /**
292
  * The class responsible for orchestrating the actions and filters of the
293
  * core plugin.
@@ -348,9 +354,6 @@ class Email_Subscribers {
348
  'includes/upgrade/es-update-functions.php',
349
  'includes/es-core-functions.php',
350
  'includes/class-es-install.php',
351
- // Background Process
352
- 'includes/upgrade/class-es-background-process.php',
353
- 'includes/upgrade/class-es-background-updater.php',
354
  // Main public class
355
  'public/class-email-subscribers-public.php',
356
  // Partials
@@ -364,8 +367,8 @@ class Email_Subscribers {
364
  'includes/pro-features.php',
365
 
366
  // Feedback
367
- 'includes/feedback/class-ig-tracker-v-' . $feedback_version_for_file . '.php',
368
- 'includes/feedback/class-ig-feedback-v-' . $feedback_version_for_file . '.php',
369
  'includes/feedback.php'
370
  );
371
 
@@ -437,8 +440,8 @@ class Email_Subscribers {
437
 
438
  $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
439
  $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' );
440
- $this->loader->add_action( 'init', $plugin_public, 'es_email_subscribe_init');
441
- $this->loader->add_action( 'wp_loaded', $plugin_public, 'es_email_subscribe_wp_loaded');
442
  $this->loader->add_action( 'ig_es_add_contact', $plugin_public, 'add_contact', 10, 2 );
443
 
444
  }
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';
79
 
86
  $this->email_subscribers = 'email-subscribers';
87
 
88
  $this->define_constants();
89
+ $this->load_dependencies();
90
  $this->set_locale();
91
  $this->define_admin_hooks();
92
  $this->define_public_hooks();
93
 
94
+ $ig_es_tracker = 'IG_Tracker_V_' . str_replace( '.', '_', IG_ES_FEEDBACK_VERSION );
95
  if ( is_admin() ) {
96
+ $ig_es_feedback_class = 'IG_Feedback_V_' . str_replace( '.', '_', IG_ES_FEEDBACK_VERSION );
97
  $ig_es_feedback = new $ig_es_feedback_class( 'Email Subscribers', 'email-subscribers', 'ig_es', 'esfree.', false );
98
  $ig_es_feedback->render_deactivate_feedback();
99
  }
121
  return;
122
  }
123
 
124
+ // Don't show admin notices on Dashboard if onboarding is not yet completed.
125
+ $is_onboarding_complete = get_option('ig_es_onboarding_complete', false);
126
+
127
+ // We don't have ig_es_onboarding_complete option if somebody is migrating from older version
128
+ if(('toplevel_page_es_dashboard' === $screen_id) && (!$is_onboarding_complete || $is_onboarding_complete == 'no')) {
129
+ return;
130
+ }
131
+
132
  //Email Subscribers Pro update notice
133
  $active_plugins = $ig_es_tracker::get_active_plugins();
134
 
177
 
178
  //post digest
179
  $post_digest_option_dismiss = get_option( 'ig_es_post_digest_notice' );
180
+ $post_digest_option_seen = get_option( 'ig_es_post_digest_notice_seen' );
181
+ if ( ! in_array( $es_premium, $all_plugins ) && is_admin() && $post_digest_option_seen != 'yes' && $post_digest_option_dismiss != 'yes' ) {
182
+ $post_digest_url = admin_url() . '?es_dismiss_admin_notice=1&option_name=post_digest_notice_seen';
183
+ $post_digest_notice = sprintf( __( '📣 <b>[Coming Soon]</b> New Feature : Send <strong>Post Digest</strong> using Email Subscribers <a href="%s" target="_blank">[Read more]</a>', 'email-subscribers' ), $post_digest_url );
184
  echo '<div class="notice notice-warning" style="background-color: #FFF;"><p style="letter-spacing: 0.6px;">' . $post_digest_notice . '<a style="float:right" class="es-admin-btn es-admin-btn-secondary " href="' . admin_url() . '?es_dismiss_admin_notice=1&option_name=post_digest_notice">' . __( 'OK, I Got it!',
185
  'email-subscribers' ) . '</a></p></div>';
186
  }
189
  }
190
 
191
  public function es_dismiss_admin_notice() {
192
+ $es_dismiss_admin_notice = ig_es_clean( ig_es_get_request_data( 'es_dismiss_admin_notice' ) );
193
+ $option_name = ig_es_clean( ig_es_get_request_data( 'option_name' ) );
194
+ if ( $es_dismiss_admin_notice == '1' && ! empty( $option_name ) ) {
195
  update_option( 'ig_es_' . $option_name, 'yes' );
196
  if ( in_array( $option_name, array( 'redirect_upsale_notice', 'dismiss_upsale_notice', 'dismiss_star_notice', 'star_notice_done' ) ) ) {
197
  update_option( 'ig_es_' . $option_name . '_date', ig_get_current_date_time() );
292
  * @since 4.0
293
  * @access private
294
  */
295
+ private function load_dependencies() {
296
 
 
297
  /**
298
  * The class responsible for orchestrating the actions and filters of the
299
  * core plugin.
354
  'includes/upgrade/es-update-functions.php',
355
  'includes/es-core-functions.php',
356
  'includes/class-es-install.php',
 
 
 
357
  // Main public class
358
  'public/class-email-subscribers-public.php',
359
  // Partials
367
  'includes/pro-features.php',
368
 
369
  // Feedback
370
+ 'includes/feedback/class-ig-tracker.php',
371
+ 'includes/feedback/class-ig-feedback.php',
372
  'includes/feedback.php'
373
  );
374
 
440
 
441
  $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_styles' );
442
  $this->loader->add_action( 'wp_enqueue_scripts', $plugin_public, 'enqueue_scripts' );
443
+ $this->loader->add_action( 'init', $plugin_public, 'es_email_subscribe_init' );
444
+ $this->loader->add_action( 'wp_loaded', $plugin_public, 'es_email_subscribe_wp_loaded' );
445
  $this->loader->add_action( 'ig_es_add_contact', $plugin_public, 'add_contact', 10, 2 );
446
 
447
  }
includes/class-es-common.php CHANGED
@@ -454,7 +454,7 @@ Class ES_Common {
454
  return $sizes;
455
  }
456
 
457
- public static function get_ig_option( $option ) {
458
 
459
  if ( empty( $option ) ) {
460
  return null;
@@ -462,7 +462,7 @@ Class ES_Common {
462
 
463
  $option_prefix = 'ig_es_';
464
 
465
- return get_option( $option_prefix . $option, null );
466
 
467
  }
468
 
@@ -478,6 +478,26 @@ Class ES_Common {
478
 
479
  }
480
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
481
  public static function convert_categories_array_to_string( $categories = array() ) {
482
 
483
  $categories_str = '';
@@ -493,7 +513,7 @@ Class ES_Common {
493
  public static function convert_categories_string_to_array( $categories_str = '', $keep_ids = true ) {
494
  $categories = array();
495
  if ( strlen( $categories_str ) > 0 ) {
496
- $categories_str = trim( $categories_str, '##' );
497
  $categories = explode( '##', $categories_str );
498
  $categories = str_replace( '{a}', '', $categories );
499
 
@@ -1075,4 +1095,70 @@ Class ES_Common {
1075
  return $screens;
1076
  }
1077
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1078
  }
454
  return $sizes;
455
  }
456
 
457
+ public static function get_ig_option( $option, $default = null ) {
458
 
459
  if ( empty( $option ) ) {
460
  return null;
462
 
463
  $option_prefix = 'ig_es_';
464
 
465
+ return get_option( $option_prefix . $option, $default );
466
 
467
  }
468
 
478
 
479
  }
480
 
481
+ /**
482
+ * Delete email subscriber options
483
+ *
484
+ * @param string $option
485
+ *
486
+ * @return bool|null
487
+ *
488
+ * @since 4.0.15
489
+ */
490
+ public static function delete_ig_option( $option = null ) {
491
+ if ( empty( $option ) ) {
492
+ return null;
493
+ }
494
+
495
+ $option_prefix = 'ig_es_';
496
+
497
+ return delete_option( $option_prefix . $option );
498
+ }
499
+
500
+
501
  public static function convert_categories_array_to_string( $categories = array() ) {
502
 
503
  $categories_str = '';
513
  public static function convert_categories_string_to_array( $categories_str = '', $keep_ids = true ) {
514
  $categories = array();
515
  if ( strlen( $categories_str ) > 0 ) {
516
+ $categories_str = trim( trim( $categories_str ), '##' );
517
  $categories = explode( '##', $categories_str );
518
  $categories = str_replace( '{a}', '', $categories );
519
 
1095
  return $screens;
1096
  }
1097
 
1098
+ /**
1099
+ * Get total emails can send in this hour.
1100
+ *
1101
+ * @since 4.1.15
1102
+ */
1103
+ public static function total_emails_to_be_sent( $es_c_croncount = 0 ) {
1104
+
1105
+ $current_date = ig_es_get_current_date();
1106
+ $current_hour = ig_es_get_current_hour();
1107
+
1108
+ //Get total emails sent in this hour
1109
+ $email_sent_data = ES_Common::get_ig_option( 'email_sent_data', array() );
1110
+
1111
+ $total_emails_sent = 0;
1112
+ if ( is_array( $email_sent_data ) && ! empty( $email_sent_data[ $current_date ] ) && ! empty( $email_sent_data[ $current_date ][ $current_hour ] ) ) {
1113
+ $total_emails_sent = $email_sent_data[ $current_date ][ $current_hour ];
1114
+ }
1115
+ // Get hourly limit
1116
+ $can_total_emails_send_in_hour = ES_Common::get_ig_option( 'hourly_email_send_limit', 300 );
1117
+
1118
+ // Is limit exceed?
1119
+ if ( $total_emails_sent >= $can_total_emails_send_in_hour ) {
1120
+ return 0;
1121
+ }
1122
+
1123
+ // Still, you can send these many emails.
1124
+ $total_emails_can_send_now = $can_total_emails_send_in_hour - $total_emails_sent;
1125
+
1126
+ // We can send more emails but if we get the count, send only those
1127
+ if ( ( $es_c_croncount > 0 ) && ( $es_c_croncount <= $total_emails_can_send_now ) ) {
1128
+ $total_emails_can_send_now = $es_c_croncount;
1129
+ }
1130
+
1131
+ return $total_emails_can_send_now;
1132
+
1133
+ }
1134
+
1135
+ /**
1136
+ * Update Total Email Sent count
1137
+ *
1138
+ * @since 4.1.15
1139
+ */
1140
+ public static function update_total_email_sent_count() {
1141
+
1142
+ $current_date = ig_es_get_current_date();
1143
+ $current_hour = ig_es_get_current_hour();
1144
+
1145
+ $email_sent_data_option = 'email_sent_data';
1146
+
1147
+ //Get total emails sent in this hour
1148
+ $email_sent_data = ES_Common::get_ig_option( $email_sent_data_option, array() );
1149
+
1150
+ $total_emails_sent = 0;
1151
+ $data = array();
1152
+ if ( is_array( $email_sent_data ) && ! empty( $email_sent_data[ $current_date ] ) && ! empty( $email_sent_data[ $current_date ][ $current_hour ] ) ) {
1153
+ $total_emails_sent = $email_sent_data[ $current_date ][ $current_hour ];
1154
+ }
1155
+
1156
+ $total_emails_sent += 1;
1157
+ // We want to store only current hour data.
1158
+ $data[ $current_date ][ $current_hour ] = $total_emails_sent;
1159
+
1160
+ ES_Common::set_ig_option( $email_sent_data_option, $data );
1161
+
1162
+ }
1163
+
1164
  }
includes/class-es-install.php CHANGED
@@ -113,16 +113,23 @@ class ES_Install {
113
  'ig_es_update_411_db_version'
114
  ),
115
 
116
- '4.1.7' => array(
117
  'ig_es_update_417_alter_campaigns_table',
118
  'ig_es_update_417_alter_mailing_queue_table',
119
  'ig_es_update_417_db_version'
120
  ),
 
121
  '4.1.13' => array(
122
  'ig_es_update_4113_migrate_categories_in_campaigns_table',
123
  'ig_es_update_4113_create_files',
124
  'ig_es_update_4113_db_version'
125
- )
 
 
 
 
 
 
126
  );
127
 
128
  /**
@@ -269,7 +276,21 @@ class ES_Install {
269
 
270
  }
271
 
 
 
 
 
 
 
 
272
  public static function is_new_install() {
 
 
 
 
 
 
 
273
  return is_null( get_option( 'ig_es_db_version', null ) ) && is_null( get_option( 'current_sa_email_subscribers_db_version', null ) );
274
  }
275
 
@@ -277,6 +298,8 @@ class ES_Install {
277
  * Get latest db version based on available updates.
278
  *
279
  * @return mixed
 
 
280
  */
281
  public static function get_latest_db_version_to_update() {
282
  $updates = self::get_db_update_callbacks();
@@ -286,6 +309,13 @@ class ES_Install {
286
  return end( $update_versions );
287
  }
288
 
 
 
 
 
 
 
 
289
  private static function needs_db_update() {
290
  self::$logger->info( 'Needs DB Update?', self::$logger_context );
291
 
@@ -298,6 +328,11 @@ class ES_Install {
298
  return ! is_null( $current_db_version ) && version_compare( $current_db_version, $latest_db_version_to_update, '<' );
299
  }
300
 
 
 
 
 
 
301
  private static function maybe_update_db_version() {
302
  if ( self::needs_db_update() ) {
303
  if ( apply_filters( 'ig_es_enable_auto_update_db', true ) ) {
@@ -309,14 +344,26 @@ class ES_Install {
309
  }
310
  } else {
311
  self::$logger->info( 'Database is upto date' );
312
- self::update_db_version();
313
  }
314
  }
315
 
 
 
 
 
 
316
  public static function get_db_update_callbacks() {
317
  return self::$db_updates;
318
  }
319
 
 
 
 
 
 
 
 
320
  private static function update( $force = false ) {
321
 
322
  self::$logger->info( 'Do Update....', self::$logger_context );
@@ -347,16 +394,13 @@ class ES_Install {
347
  foreach ( $tasks as $version => $update_callbacks ) {
348
 
349
  if ( version_compare( $current_db_version, $version, '<' ) ) {
350
-
351
  foreach ( $update_callbacks as $update_callback ) {
352
-
353
  if ( ! in_array( $update_callback, $tasks_to_process ) && ! in_array( $update_callback, $processed_tasks ) ) {
354
  self::$logger->info( sprintf( '[Queue] %s', $update_callback ), self::$logger_context );
355
  $tasks_to_process[] = $update_callback;
356
  } else {
357
  self::$logger->info( sprintf( 'Task "%s" is already processed or is in queue', $update_callback ), self::$logger_context );
358
  }
359
-
360
  }
361
  }
362
  }
@@ -376,6 +420,11 @@ class ES_Install {
376
 
377
  }
378
 
 
 
 
 
 
379
  public static function dispatch() {
380
 
381
  $logger = get_ig_logger();
@@ -433,9 +482,17 @@ class ES_Install {
433
 
434
  //Delete update transient
435
  delete_transient( 'ig_es_updating' );
436
-
437
  }
438
 
 
 
 
 
 
 
 
 
 
439
  public static function task( $callback ) {
440
 
441
  $logger = get_ig_logger();
@@ -467,6 +524,16 @@ class ES_Install {
467
  $latest_db_version_to_update = self::get_latest_db_version_to_update();
468
 
469
  update_option( 'ig_es_db_version', is_null( $version ) ? $latest_db_version_to_update : $version );
 
 
 
 
 
 
 
 
 
 
470
  }
471
 
472
  private static function create_options() {
@@ -482,9 +549,13 @@ class ES_Install {
482
  $blogname = get_option( 'blogname' );
483
 
484
  // We are setting latest_db_version as a ig_es_db_version option while installation
485
- // So, we don't need to run the upgrage process again.
486
  $latest_db_version = self::get_latest_db_version_to_update();
487
 
 
 
 
 
488
  if ( $admin_email == "" ) {
489
  $admin_email = "support@icegram.com";
490
  }
@@ -562,6 +633,9 @@ class ES_Install {
562
  'ig_es_disable_wp_cron' => array( 'default' => 'no' ),
563
  'ig_es_track_email_opens' => array( 'default' => 'yes' ),
564
  'ig_es_installed_on' => array( 'default' => ig_get_current_date_time(), 'old_option' => '' ),
 
 
 
565
  );
566
 
567
  return $options;
@@ -721,6 +795,39 @@ class ES_Install {
721
  return $tables;
722
  }
723
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
724
  private static function get_schema() {
725
 
726
  $tables = self::get_ig_es_400_schema();
@@ -775,7 +882,22 @@ class ES_Install {
775
  }
776
 
777
  // Also Add Main List
778
- $list_id = ES_DB_Lists::add_list( IG_MAIN_LIST );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
779
  }
780
 
781
  public static function create_and_send_default_broadcast() {
113
  'ig_es_update_411_db_version'
114
  ),
115
 
116
+ '4.1.7' => array(
117
  'ig_es_update_417_alter_campaigns_table',
118
  'ig_es_update_417_alter_mailing_queue_table',
119
  'ig_es_update_417_db_version'
120
  ),
121
+
122
  '4.1.13' => array(
123
  'ig_es_update_4113_migrate_categories_in_campaigns_table',
124
  'ig_es_update_4113_create_files',
125
  'ig_es_update_4113_db_version'
126
+ ),
127
+ '4.1.15' => array(
128
+ 'ig_es_update_4115_add_form_submission_option',
129
+ 'ig_es_update_4115_migrate_db_update_history',
130
+ 'ig_es_update_4115_db_version'
131
+ ),
132
+
133
  );
134
 
135
  /**
276
 
277
  }
278
 
279
+ /**
280
+ * Is this new instllation?
281
+ *
282
+ * @return bool
283
+ *
284
+ * @since 4.0.0
285
+ */
286
  public static function is_new_install() {
287
+ /**
288
+ * We are storing ig_es_db_version if it's new installation.
289
+ *
290
+ * If we found 'current_sa_email_subscribers_db_version' option, which means it's a
291
+ * migration from ES 3.5.x
292
+ *
293
+ */
294
  return is_null( get_option( 'ig_es_db_version', null ) ) && is_null( get_option( 'current_sa_email_subscribers_db_version', null ) );
295
  }
296
 
298
  * Get latest db version based on available updates.
299
  *
300
  * @return mixed
301
+ *
302
+ * @since 4.0.0
303
  */
304
  public static function get_latest_db_version_to_update() {
305
  $updates = self::get_db_update_callbacks();
309
  return end( $update_versions );
310
  }
311
 
312
+ /**
313
+ * Require DB updates?
314
+ *
315
+ * @return bool
316
+ *
317
+ * @since 4.0.0
318
+ */
319
  private static function needs_db_update() {
320
  self::$logger->info( 'Needs DB Update?', self::$logger_context );
321
 
328
  return ! is_null( $current_db_version ) && version_compare( $current_db_version, $latest_db_version_to_update, '<' );
329
  }
330
 
331
+ /**
332
+ * Check whether database update require? If require do update.
333
+ *
334
+ * @since 4.0.0
335
+ */
336
  private static function maybe_update_db_version() {
337
  if ( self::needs_db_update() ) {
338
  if ( apply_filters( 'ig_es_enable_auto_update_db', true ) ) {
344
  }
345
  } else {
346
  self::$logger->info( 'Database is upto date' );
347
+ //self::update_db_version();
348
  }
349
  }
350
 
351
+ /**
352
+ * Get all database updates
353
+ *
354
+ * @return array
355
+ */
356
  public static function get_db_update_callbacks() {
357
  return self::$db_updates;
358
  }
359
 
360
+ /**
361
+ * Do database update.
362
+ *
363
+ * @param bool $force
364
+ *
365
+ * @since 4.0.0
366
+ */
367
  private static function update( $force = false ) {
368
 
369
  self::$logger->info( 'Do Update....', self::$logger_context );
394
  foreach ( $tasks as $version => $update_callbacks ) {
395
 
396
  if ( version_compare( $current_db_version, $version, '<' ) ) {
 
397
  foreach ( $update_callbacks as $update_callback ) {
 
398
  if ( ! in_array( $update_callback, $tasks_to_process ) && ! in_array( $update_callback, $processed_tasks ) ) {
399
  self::$logger->info( sprintf( '[Queue] %s', $update_callback ), self::$logger_context );
400
  $tasks_to_process[] = $update_callback;
401
  } else {
402
  self::$logger->info( sprintf( 'Task "%s" is already processed or is in queue', $update_callback ), self::$logger_context );
403
  }
 
404
  }
405
  }
406
  }
420
 
421
  }
422
 
423
+ /**
424
+ * Dispatch database updates.
425
+ *
426
+ * @since 4.0.0
427
+ */
428
  public static function dispatch() {
429
 
430
  $logger = get_ig_logger();
482
 
483
  //Delete update transient
484
  delete_transient( 'ig_es_updating' );
 
485
  }
486
 
487
+ /**
488
+ * Run individual database update.
489
+ *
490
+ * @param $callback
491
+ *
492
+ * @return bool|callable
493
+ *
494
+ * @since 4.0.0
495
+ */
496
  public static function task( $callback ) {
497
 
498
  $logger = get_ig_logger();
524
  $latest_db_version_to_update = self::get_latest_db_version_to_update();
525
 
526
  update_option( 'ig_es_db_version', is_null( $version ) ? $latest_db_version_to_update : $version );
527
+
528
+ if ( ! is_null( $version ) ) {
529
+ $db_update_history_option = 'db_update_history';
530
+
531
+ $ig_es_db_update_history_data = ES_Common::get_ig_option( $db_update_history_option, array() );
532
+
533
+ $ig_es_db_update_history_data[ $version ] = ig_get_current_date_time();
534
+
535
+ ES_Common::set_ig_option( $db_update_history_option, $ig_es_db_update_history_data );
536
+ }
537
  }
538
 
539
  private static function create_options() {
549
  $blogname = get_option( 'blogname' );
550
 
551
  // We are setting latest_db_version as a ig_es_db_version option while installation
552
+ // So, we don't need to run the upgrade process again.
553
  $latest_db_version = self::get_latest_db_version_to_update();
554
 
555
+ $ig_es_db_update_history = array(
556
+ $latest_db_version => ig_get_current_date_time()
557
+ );
558
+
559
  if ( $admin_email == "" ) {
560
  $admin_email = "support@icegram.com";
561
  }
633
  'ig_es_disable_wp_cron' => array( 'default' => 'no' ),
634
  'ig_es_track_email_opens' => array( 'default' => 'yes' ),
635
  'ig_es_installed_on' => array( 'default' => ig_get_current_date_time(), 'old_option' => '' ),
636
+ 'ig_es_form_submission_success_message' => array( 'default' => __( 'Your subscription was successful! Kindly check your mailbox and confirm your subscription. If you don\'t see the email within a few minutes, check the spam/junk folder.', 'email-subscribers' ), 'old_option' => '' ),
637
+ 'ig_es_db_update_history' => array( 'default' => $ig_es_db_update_history ),
638
+ 'ig_es_email_sent_data' => array( 'default' => array() )
639
  );
640
 
641
  return $options;
795
  return $tables;
796
  }
797
 
798
+ /**
799
+ * @return string
800
+ *
801
+ * @since 4.1.15
802
+ */
803
+ public static function get_ig_es_4115_schema() {
804
+
805
+ global $wpdb;
806
+
807
+ $collate = '';
808
+
809
+ if ( $wpdb->has_cap( 'collation' ) ) {
810
+ $collate = $wpdb->get_charset_collate();
811
+ }
812
+
813
+ $tables = "CREATE TABLE `{$wpdb->prefix}ig_actions` (
814
+ `contact_id` bigint(20) UNSIGNED DEFAULT NULL,
815
+ `message_id` bigint(20) UNSIGNED DEFAULT NULL,
816
+ `type` tinyint(1) NOT NULL DEFAULT '0',
817
+ `count` int(11) UNSIGNED NOT NULL DEFAULT '0',
818
+ `link_id` bigint(20) UNSIGNED NOT NULL DEFAULT '0',
819
+ `created_at` datetime DEFAULT NULL,
820
+ `updated_at` datetime DEFAULT NULL,
821
+ UNIQUE KEY `id` (`contact_id`,`message_id`,`type`,`link_id`),
822
+ KEY `contact_id` (`contact_id`),
823
+ KEY `message_id` (`message_id`),
824
+ KEY `type` (`type`)
825
+ ) $collate;
826
+ ";
827
+
828
+ return $tables;
829
+ }
830
+
831
  private static function get_schema() {
832
 
833
  $tables = self::get_ig_es_400_schema();
882
  }
883
 
884
  // Also Add Main List
885
+ $main_list_id = ES_DB_Lists::add_list( IG_MAIN_LIST );
886
+ //add admin to main list
887
+ if($main_list_id && $contact_id){
888
+ $data = array(
889
+ 'list_id' => array( $main_list_id ),
890
+ 'contact_id' => $contact_id,
891
+ 'status' => 'subscribed',
892
+ 'optin_type' => IG_SINGLE_OPTIN,
893
+ 'subscribed_at' => ig_get_current_date_time(),
894
+ 'subscribed_ip' => null
895
+ );
896
+
897
+ ES_DB_Lists_Contacts::add_lists_contacts( $data );
898
+ }
899
+
900
+
901
  }
902
 
903
  public static function create_and_send_default_broadcast() {
includes/class-es-mailer.php CHANGED
@@ -58,6 +58,8 @@ class ES_Mailer {
58
  if ( $send ) {
59
  ES_DB_Sending_Queue::update_sent_status( $mail['id'], 'Sent' );
60
  }
 
 
61
  }
62
 
63
  }
58
  if ( $send ) {
59
  ES_DB_Sending_Queue::update_sent_status( $mail['id'], 'Sent' );
60
  }
61
+
62
+ ES_Common::update_total_email_sent_count();
63
  }
64
 
65
  }
includes/db/class-es-db-contacts.php CHANGED
@@ -264,9 +264,10 @@ class ES_DB_Contacts {
264
  public static function edit_subscriber_status_global( $ids, $unsubscribed ) {
265
  global $wpdb;
266
 
 
267
  $ids = implode( ',', array_map( 'absint', $ids ) );
268
 
269
- $sql = "UPDATE " . IG_CONTACTS_TABLE . " SET unsubscribed = %d WHERE id IN ($ids)";
270
  $query = $wpdb->prepare( $sql, array( $unsubscribed ) );
271
 
272
  return $wpdb->query( $query );
264
  public static function edit_subscriber_status_global( $ids, $unsubscribed ) {
265
  global $wpdb;
266
 
267
+ $contacts_table = IG_CONTACTS_TABLE;
268
  $ids = implode( ',', array_map( 'absint', $ids ) );
269
 
270
+ $sql = "UPDATE {$contacts_table} SET unsubscribed = %d WHERE id IN ($ids)";
271
  $query = $wpdb->prepare( $sql, array( $unsubscribed ) );
272
 
273
  return $wpdb->query( $query );
includes/db/class-es-db-notifications.php CHANGED
@@ -42,13 +42,13 @@ class ES_DB_Notifications {
42
  // $category_str = ES_Common::prepare_category_string( $categories[ $i ]->cat_name );
43
  $category_str = ES_Common::prepare_category_string( $categories[ $i ]->term_id );
44
  // $sSql .= " categories LIKE '%" . wp_specialchars_decode( addslashes( $category_str ) ) . "%'";
45
- $sSql .= " categories LIKE '%" . $category_str . "%'";
46
  if ( $i == ( $total_categories - 1 ) ) {
47
  $sSql .= ")";
48
  $sSql .= " OR categories LIKE '%all%'";
49
  }
50
  }
51
- }else{
52
  //no categories fround for post
53
  return $notifications;
54
  }
@@ -74,7 +74,7 @@ class ES_DB_Notifications {
74
  return $update;
75
  }
76
 
77
- public static function migratate_newsletter_es_template_type() {
78
  global $wpdb;
79
 
80
  $sql = "UPDATE {$wpdb->prefix}postmeta SET meta_value = %s WHERE meta_key = %s AND meta_value = %s";
42
  // $category_str = ES_Common::prepare_category_string( $categories[ $i ]->cat_name );
43
  $category_str = ES_Common::prepare_category_string( $categories[ $i ]->term_id );
44
  // $sSql .= " categories LIKE '%" . wp_specialchars_decode( addslashes( $category_str ) ) . "%'";
45
+ $sSql .= " categories LIKE '%" . $category_str . "%'";
46
  if ( $i == ( $total_categories - 1 ) ) {
47
  $sSql .= ")";
48
  $sSql .= " OR categories LIKE '%all%'";
49
  }
50
  }
51
+ } else {
52
  //no categories fround for post
53
  return $notifications;
54
  }
74
  return $update;
75
  }
76
 
77
+ public static function migrate_newsletter_es_template_type() {
78
  global $wpdb;
79
 
80
  $sql = "UPDATE {$wpdb->prefix}postmeta SET meta_value = %s WHERE meta_key = %s AND meta_value = %s";
includes/es-core-functions.php CHANGED
@@ -5,28 +5,50 @@ if ( ! defined( 'ABSPATH' ) ) {
5
  exit;
6
  }
7
 
8
- function get_ig_es_db_version() {
 
 
 
 
 
 
 
 
 
 
 
 
9
 
10
- $option = get_option( 'ig_es_db_version', null );
11
 
12
- if ( ! is_null( $option ) ) {
13
  return $option;
14
- }
15
-
16
- $option = get_option( 'current_sa_email_subscribers_db_version', null );
17
-
18
- return $option;
19
 
 
20
  }
21
 
22
- function ig_es_maybe_define_constant( $name, $value ) {
23
- if ( ! defined( $name ) ) {
24
- define( $name, $value );
 
 
 
 
 
 
 
 
 
 
25
  }
26
  }
27
 
28
  if ( ! function_exists( 'get_ig_logger' ) ) {
29
-
 
 
 
 
 
30
  function get_ig_logger() {
31
 
32
  static $logger = null;
@@ -50,18 +72,165 @@ if ( ! function_exists( 'get_ig_logger' ) ) {
50
  }
51
 
52
  if ( ! function_exists( 'ig_get_current_date_time' ) ) {
 
 
 
 
 
53
  function ig_get_current_date_time() {
54
  return gmdate( 'Y-m-d H:i:s' );
55
  }
56
  }
57
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
58
  if ( ! function_exists( 'ig_es_format_date_time' ) ) {
 
 
 
 
 
 
 
59
  function ig_es_format_date_time( $date ) {
60
- $local_timestamp = ( $date !== '0000-00-00 00:00:00' ) ? get_date_from_gmt( $date) : '<i class="dashicons dashicons-es dashicons-minus"></i>';
 
61
  return $local_timestamp;
62
  }
63
  }
64
 
65
- function ig_es_convert_space_to_underscore( $string ) {
66
- return str_replace( ' ', '_', $string );
67
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
5
  exit;
6
  }
7
 
8
+ if ( ! function_exists( 'get_ig_es_db_version' ) ) {
9
+ /**
10
+ * Get current db version
11
+ *
12
+ * @since 4.0.0
13
+ */
14
+ function get_ig_es_db_version() {
15
+
16
+ $option = get_option( 'ig_es_db_version', null );
17
+
18
+ if ( ! is_null( $option ) ) {
19
+ return $option;
20
+ }
21
 
22
+ $option = get_option( 'current_sa_email_subscribers_db_version', null );
23
 
 
24
  return $option;
 
 
 
 
 
25
 
26
+ }
27
  }
28
 
29
+ if ( ! function_exists( 'ig_es_maybe_define_constant' ) ) {
30
+ /**
31
+ * Define constant
32
+ *
33
+ * @param $name
34
+ * @param $value
35
+ *
36
+ * @since 4.0.0
37
+ */
38
+ function ig_es_maybe_define_constant( $name, $value ) {
39
+ if ( ! defined( $name ) ) {
40
+ define( $name, $value );
41
+ }
42
  }
43
  }
44
 
45
  if ( ! function_exists( 'get_ig_logger' ) ) {
46
+ /**
47
+ * Get IG Logger
48
+ *
49
+ * @return IG_Logger|string|null
50
+ *
51
+ */
52
  function get_ig_logger() {
53
 
54
  static $logger = null;
72
  }
73
 
74
  if ( ! function_exists( 'ig_get_current_date_time' ) ) {
75
+ /**
76
+ * Get current date time
77
+ *
78
+ * @return false|string
79
+ */
80
  function ig_get_current_date_time() {
81
  return gmdate( 'Y-m-d H:i:s' );
82
  }
83
  }
84
 
85
+ if ( ! function_exists( 'ig_es_get_current_date' ) ) {
86
+ /**
87
+ * Get current date
88
+ *
89
+ * @return false|string
90
+ *
91
+ * @since 4.1.15
92
+ */
93
+ function ig_es_get_current_date() {
94
+ return gmdate( 'Y-m-d' );
95
+ }
96
+ }
97
+
98
+ if ( ! function_exists( 'ig_es_get_current_hour' ) ) {
99
+ /**
100
+ * Get current hour
101
+ *
102
+ * @return false|string
103
+ *
104
+ * @since 4.1.15
105
+ */
106
+ function ig_es_get_current_hour() {
107
+ return gmdate( 'H' );
108
+ }
109
+ }
110
+
111
  if ( ! function_exists( 'ig_es_format_date_time' ) ) {
112
+ /**
113
+ * Format date time
114
+ *
115
+ * @param $date
116
+ *
117
+ * @return string
118
+ */
119
  function ig_es_format_date_time( $date ) {
120
+ $local_timestamp = ( $date !== '0000-00-00 00:00:00' ) ? get_date_from_gmt( $date ) : '<i class="dashicons dashicons-es dashicons-minus"></i>';
121
+
122
  return $local_timestamp;
123
  }
124
  }
125
 
126
+ if ( ! function_exists( 'ig_es_convert_space_to_underscore' ) ) {
127
+ /**
128
+ * Convert Space to underscore
129
+ *
130
+ * @param $string
131
+ *
132
+ * @return mixed
133
+ */
134
+ function ig_es_convert_space_to_underscore( $string ) {
135
+ return str_replace( ' ', '_', $string );
136
+ }
137
+ }
138
+
139
+ if ( ! function_exists( 'ig_es_clean' ) ) {
140
+ /**
141
+ * Clean String or array using sanitize_text_field
142
+ *
143
+ * @param $variable Data to sanitize
144
+ *
145
+ * @return array|string
146
+ *
147
+ * @since 4.1.15
148
+ */
149
+ function ig_es_clean( $var ) {
150
+ if ( is_array( $var ) ) {
151
+ return array_map( 'ig_es_clean', $var );
152
+ } else {
153
+ return is_scalar( $var ) ? sanitize_text_field( $var ) : $var;
154
+ }
155
+ }
156
+ }
157
+
158
+ if ( ! function_exists( 'ig_es_check_invalid_utf8' ) ) {
159
+ /**
160
+ * Function ig_check_invalid_utf8 with recursive array support.
161
+ *
162
+ * @param string|array $var Data to sanitize.
163
+ *
164
+ * @return string|array
165
+ *
166
+ * @since 4.1.15
167
+ */
168
+ function ig_es_check_invalid_utf8( $var ) {
169
+ if ( is_array( $var ) ) {
170
+ return array_map( 'ig_es_check_invalid_utf8', $var );
171
+ } else {
172
+ return wp_check_invalid_utf8( $var );
173
+ }
174
+ }
175
+ }
176
+
177
+
178
+ if ( ! function_exists( 'ig_es_get_data' ) ) {
179
+ /**
180
+ * Get data from array
181
+ *
182
+ * @param array $array
183
+ * @param string $var
184
+ * @param string $default
185
+ * @param bool $clean
186
+ *
187
+ * @return array|string
188
+ *
189
+ * @since 4.1.15
190
+ */
191
+ function ig_es_get_data( $array = array(), $var = '', $default = '', $clean = false ) {
192
+
193
+ if ( ! empty( $var ) ) {
194
+ $value = isset( $array[ $var ] ) ? wp_unslash( $array[ $var ] ) : $default;
195
+ } else {
196
+ $value = wp_unslash( $array );
197
+ }
198
+
199
+ if ( $clean ) {
200
+ $value = ig_es_clean( $value );
201
+ }
202
+
203
+ return $value;
204
+ }
205
+ }
206
+
207
+ if ( ! function_exists( 'ig_es_get_request_data' ) ) {
208
+ /**
209
+ * Get POST | GET data from $_REQUEST
210
+ *
211
+ * @param $var
212
+ *
213
+ * @return array|string
214
+ *
215
+ * @since 4.1.15
216
+ */
217
+ function ig_es_get_request_data( $var = '', $default = '', $clean = false ) {
218
+ return ig_es_get_data( $_REQUEST, $var, $default, $clean );
219
+ }
220
+ }
221
+
222
+ if ( ! function_exists( 'ig_es_get_post_data' ) ) {
223
+ /**
224
+ * Get POST data from $_POST
225
+ *
226
+ * @param $var
227
+ *
228
+ * @return array|string
229
+ *
230
+ * @since 4.1.15
231
+ */
232
+ function ig_es_get_post_data( $var = '', $default = '', $clean = false ) {
233
+ return ig_es_get_data( $_POST, $var, $default, $clean );
234
+ }
235
+ }
236
+
includes/feedback/{class-ig-feedback-v-1-0-9.php → class-ig-feedback.php} RENAMED
@@ -4,21 +4,21 @@ if ( ! defined( 'ABSPATH' ) ) {
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
- if ( ! class_exists( 'IG_Feedback_V_1_0_9' ) ) {
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_9
15
  * @package feedback
16
  * @copyright Copyright (c) 2019, Icegram
17
  * @license https://opensource.org/licenses/gpl-license GNU Public License
18
  * @author Icegram
19
  * @since 1.0.0
20
  */
21
- class IG_Feedback_V_1_0_9 {
22
 
23
  /**
24
  * The API URL where we will send feedback data.
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
+ if ( ! class_exists( 'IG_Feedback_V_1_0_10' ) ) {
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_10
15
  * @package feedback
16
  * @copyright Copyright (c) 2019, Icegram
17
  * @license https://opensource.org/licenses/gpl-license GNU Public License
18
  * @author Icegram
19
  * @since 1.0.0
20
  */
21
+ class IG_Feedback_V_1_0_10 {
22
 
23
  /**
24
  * The API URL where we will send feedback data.
includes/feedback/{class-ig-tracker-v-1-0-9.php → class-ig-tracker.php} RENAMED
@@ -4,15 +4,15 @@ if ( ! defined( 'ABSPATH' ) ) {
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
- if ( ! class_exists( 'IG_Tracker_V_1_0_9' ) ) {
8
 
9
  /**
10
- * Class IG_Tracker_V_1_0_9
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_9
16
  * @package feedback
17
  * @copyright Copyright (c) 2019, Icegram
18
  * @license https://opensource.org/licenses/gpl-license GNU Public License
@@ -20,7 +20,7 @@ if ( ! class_exists( 'IG_Tracker_V_1_0_9' ) ) {
20
  * @since 1.0.0
21
  *
22
  */
23
- class IG_Tracker_V_1_0_9 {
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_0_10' ) ) {
8
 
9
  /**
10
+ * Class IG_Tracker_V_1_0_10
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_10
16
  * @package feedback
17
  * @copyright Copyright (c) 2019, Icegram
18
  * @license https://opensource.org/licenses/gpl-license GNU Public License
20
  * @since 1.0.0
21
  *
22
  */
23
+ class IG_Tracker_V_1_0_10 {
24
 
25
  /**
26
  * Get Active, Inactive or all plugins info
includes/libraries/wp-async-request.php DELETED
@@ -1,160 +0,0 @@
1
- <?php
2
- /**
3
- * WP Async Request
4
- *
5
- * @package WP-Background-Processing
6
- */
7
-
8
- defined( 'ABSPATH' ) || exit;
9
-
10
- /**
11
- * Abstract WP_Async_Request class.
12
- */
13
- abstract class WP_Async_Request {
14
-
15
- /**
16
- * Prefix
17
- *
18
- * (default value: 'wp')
19
- *
20
- * @var string
21
- * @access protected
22
- */
23
- protected $prefix = 'wp';
24
-
25
- /**
26
- * Action
27
- *
28
- * (default value: 'async_request')
29
- *
30
- * @var string
31
- * @access protected
32
- */
33
- protected $action = 'async_request';
34
-
35
- /**
36
- * Identifier
37
- *
38
- * @var mixed
39
- * @access protected
40
- */
41
- protected $identifier;
42
-
43
- /**
44
- * Data
45
- *
46
- * (default value: array())
47
- *
48
- * @var array
49
- * @access protected
50
- */
51
- protected $data = array();
52
-
53
- /**
54
- * Initiate new async request
55
- */
56
- public function __construct() {
57
- $this->identifier = $this->prefix . '_' . $this->action;
58
-
59
- add_action( 'wp_ajax_' . $this->identifier, array( $this, 'maybe_handle' ) );
60
- add_action( 'wp_ajax_nopriv_' . $this->identifier, array( $this, 'maybe_handle' ) );
61
- }
62
-
63
- /**
64
- * Set data used during the request
65
- *
66
- * @param array $data Data.
67
- *
68
- * @return $this
69
- */
70
- public function data( $data ) {
71
- $this->data = $data;
72
-
73
- return $this;
74
- }
75
-
76
- /**
77
- * Dispatch the async request
78
- *
79
- * @return array|WP_Error
80
- */
81
- public function dispatch() {
82
- $url = add_query_arg( $this->get_query_args(), $this->get_query_url() );
83
- $args = $this->get_post_args();
84
-
85
- return wp_remote_post( esc_url_raw( $url ), $args );
86
- }
87
-
88
- /**
89
- * Get query args
90
- *
91
- * @return array
92
- */
93
- protected function get_query_args() {
94
- if ( property_exists( $this, 'query_args' ) ) {
95
- return $this->query_args;
96
- }
97
-
98
- return array(
99
- 'action' => $this->identifier,
100
- 'nonce' => wp_create_nonce( $this->identifier ),
101
- );
102
- }
103
-
104
- /**
105
- * Get query URL
106
- *
107
- * @return string
108
- */
109
- protected function get_query_url() {
110
- if ( property_exists( $this, 'query_url' ) ) {
111
- return $this->query_url;
112
- }
113
-
114
- return admin_url( 'admin-ajax.php' );
115
- }
116
-
117
- /**
118
- * Get post args
119
- *
120
- * @return array
121
- */
122
- protected function get_post_args() {
123
- if ( property_exists( $this, 'post_args' ) ) {
124
- return $this->post_args;
125
- }
126
-
127
- return array(
128
- 'timeout' => 0.01,
129
- 'blocking' => false,
130
- 'body' => $this->data,
131
- 'cookies' => $_COOKIE,
132
- 'sslverify' => apply_filters( 'https_local_ssl_verify', false ),
133
- );
134
- }
135
-
136
- /**
137
- * Maybe handle
138
- *
139
- * Check for correct nonce and pass to handler.
140
- */
141
- public function maybe_handle() {
142
- // Don't lock up other requests while processing
143
- session_write_close();
144
-
145
- check_ajax_referer( $this->identifier, 'nonce' );
146
-
147
- $this->handle();
148
-
149
- wp_die();
150
- }
151
-
152
- /**
153
- * Handle
154
- *
155
- * Override this method to perform any actions required
156
- * during the async request.
157
- */
158
- abstract protected function handle();
159
-
160
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/libraries/wp-background-process.php DELETED
@@ -1,507 +0,0 @@
1
- <?php // @codingStandardsIgnoreLine.
2
- /**
3
- * Abstract WP_Background_Process class.
4
- *
5
- * @package WP-Background-Processing
6
- * @extends WP_Async_Request
7
- */
8
-
9
- defined( 'ABSPATH' ) || exit;
10
-
11
- /**
12
- * Abstract WP_Background_Process class.
13
- */
14
- abstract class WP_Background_Process extends WP_Async_Request {
15
-
16
- /**
17
- * Action
18
- *
19
- * (default value: 'background_process')
20
- *
21
- * @var string
22
- * @access protected
23
- */
24
- protected $action = 'background_process';
25
-
26
- /**
27
- * Start time of current process.
28
- *
29
- * (default value: 0)
30
- *
31
- * @var int
32
- * @access protected
33
- */
34
- protected $start_time = 0;
35
-
36
- /**
37
- * Cron_hook_identifier
38
- *
39
- * @var mixed
40
- * @access protected
41
- */
42
- protected $cron_hook_identifier;
43
-
44
- /**
45
- * Cron_interval_identifier
46
- *
47
- * @var mixed
48
- * @access protected
49
- */
50
- protected $cron_interval_identifier;
51
-
52
- /**
53
- * Initiate new background process
54
- */
55
- public function __construct() {
56
- parent::__construct();
57
-
58
- $this->cron_hook_identifier = $this->identifier . '_cron';
59
- $this->cron_interval_identifier = $this->identifier . '_cron_interval';
60
-
61
- add_action( $this->cron_hook_identifier, array( $this, 'handle_cron_healthcheck' ) );
62
- add_filter( 'cron_schedules', array( $this, 'schedule_cron_healthcheck' ) );
63
- }
64
-
65
- /**
66
- * Dispatch
67
- *
68
- * @access public
69
- * @return void
70
- */
71
- public function dispatch() {
72
- // Schedule the cron healthcheck.
73
- $this->schedule_event();
74
-
75
- // Perform remote post.
76
- return parent::dispatch();
77
- }
78
-
79
- /**
80
- * Push to queue
81
- *
82
- * @param mixed $data Data.
83
- *
84
- * @return $this
85
- */
86
- public function push_to_queue( $data ) {
87
- $this->data[] = $data;
88
-
89
- return $this;
90
- }
91
-
92
- /**
93
- * Save queue
94
- *
95
- * @return $this
96
- */
97
- public function save() {
98
- $logger = get_ig_logger();
99
- $logger->trace('Saving Another Batch');
100
- $key = $this->generate_key();
101
-
102
- if ( ! empty( $this->data ) ) {
103
- update_site_option( $key, $this->data );
104
- }
105
-
106
- return $this;
107
- }
108
-
109
- /**
110
- * Update queue
111
- *
112
- * @param string $key Key.
113
- * @param array $data Data.
114
- *
115
- * @return $this
116
- */
117
- public function update( $key, $data ) {
118
- $logger = get_ig_logger();
119
- $logger->trace('Update Another Batch');
120
- if ( ! empty( $data ) ) {
121
- update_site_option( $key, $data );
122
- }
123
-
124
- return $this;
125
- }
126
-
127
- /**
128
- * Delete queue
129
- *
130
- * @param string $key Key.
131
- *
132
- * @return $this
133
- */
134
- public function delete( $key ) {
135
- delete_site_option( $key );
136
-
137
- return $this;
138
- }
139
-
140
- /**
141
- * Generate key
142
- *
143
- * Generates a unique key based on microtime. Queue items are
144
- * given a unique key so that they can be merged upon save.
145
- *
146
- * @param int $length Length.
147
- *
148
- * @return string
149
- */
150
- protected function generate_key( $length = 64 ) {
151
- $unique = md5( microtime() . rand() );
152
- $prepend = $this->identifier . '_batch_';
153
-
154
- return substr( $prepend . $unique, 0, $length );
155
- }
156
-
157
- /**
158
- * Maybe process queue
159
- *
160
- * Checks whether data exists within the queue and that
161
- * the process is not already running.
162
- */
163
- public function maybe_handle() {
164
- // Don't lock up other requests while processing
165
- session_write_close();
166
-
167
- if ( $this->is_process_running() ) {
168
- // Background process already running.
169
- wp_die();
170
- }
171
-
172
- if ( $this->is_queue_empty() ) {
173
- // No data to process.
174
- wp_die();
175
- }
176
-
177
- check_ajax_referer( $this->identifier, 'nonce' );
178
-
179
- $this->handle();
180
-
181
- wp_die();
182
- }
183
-
184
- /**
185
- * Is queue empty
186
- *
187
- * @return bool
188
- */
189
- protected function is_queue_empty() {
190
- global $wpdb;
191
-
192
- $table = $wpdb->options;
193
- $column = 'option_name';
194
-
195
- if ( is_multisite() ) {
196
- $table = $wpdb->sitemeta;
197
- $column = 'meta_key';
198
- }
199
-
200
- $key = $this->identifier . '_batch_%';
201
-
202
- $count = $wpdb->get_var( $wpdb->prepare( "
203
- SELECT COUNT(*)
204
- FROM {$table}
205
- WHERE {$column} LIKE %s
206
- ", $key ) );
207
-
208
- return ! ( $count > 0 );
209
- }
210
-
211
- /**
212
- * Is process running
213
- *
214
- * Check whether the current process is already running
215
- * in a background process.
216
- */
217
- protected function is_process_running() {
218
- if ( get_site_transient( $this->identifier . '_process_lock' ) ) {
219
- // Process already running.
220
- return true;
221
- }
222
-
223
- return false;
224
- }
225
-
226
- /**
227
- * Lock process
228
- *
229
- * Lock the process so that multiple instances can't run simultaneously.
230
- * Override if applicable, but the duration should be greater than that
231
- * defined in the time_exceeded() method.
232
- */
233
- protected function lock_process() {
234
- $this->start_time = time(); // Set start time of current process.
235
-
236
- $lock_duration = ( property_exists( $this, 'queue_lock_time' ) ) ? $this->queue_lock_time : 60; // 1 minute
237
- $lock_duration = apply_filters( $this->identifier . '_queue_lock_time', $lock_duration );
238
-
239
- set_site_transient( $this->identifier . '_process_lock', microtime(), $lock_duration );
240
- }
241
-
242
- /**
243
- * Unlock process
244
- *
245
- * Unlock the process so that other instances can spawn.
246
- *
247
- * @return $this
248
- */
249
- protected function unlock_process() {
250
- delete_site_transient( $this->identifier . '_process_lock' );
251
-
252
- return $this;
253
- }
254
-
255
- /**
256
- * Get batch
257
- *
258
- * @return stdClass Return the first batch from the queue
259
- */
260
- protected function get_batch() {
261
- global $wpdb;
262
-
263
- $table = $wpdb->options;
264
- $column = 'option_name';
265
- $key_column = 'option_id';
266
- $value_column = 'option_value';
267
-
268
- if ( is_multisite() ) {
269
- $table = $wpdb->sitemeta;
270
- $column = 'meta_key';
271
- $key_column = 'meta_id';
272
- $value_column = 'meta_value';
273
- }
274
-
275
- $key = $this->identifier . '_batch_%';
276
-
277
- $query = $wpdb->get_row( $wpdb->prepare( "
278
- SELECT *
279
- FROM {$table}
280
- WHERE {$column} LIKE %s
281
- ORDER BY {$key_column} ASC
282
- LIMIT 1
283
- ", $key ) );
284
-
285
- $batch = new stdClass();
286
- $batch->key = $query->$column;
287
- $batch->data = maybe_unserialize( $query->$value_column );
288
-
289
- return $batch;
290
- }
291
-
292
- /**
293
- * Handle
294
- *
295
- * Pass each queue item to the task handler, while remaining
296
- * within server memory and time limit constraints.
297
- */
298
- protected function handle() {
299
- $this->lock_process();
300
-
301
- do {
302
- $batch = $this->get_batch();
303
-
304
- foreach ( $batch->data as $key => $value ) {
305
- $task = $this->task( $value );
306
-
307
- if ( false !== $task ) {
308
- $batch->data[ $key ] = $task;
309
- } else {
310
- unset( $batch->data[ $key ] );
311
- }
312
-
313
- if ( $this->time_exceeded() || $this->memory_exceeded() ) {
314
- // Batch limits reached.
315
- break;
316
- }
317
- }
318
-
319
- // Update or delete current batch.
320
- if ( ! empty( $batch->data ) ) {
321
- $this->update( $batch->key, $batch->data );
322
- } else {
323
- $this->delete( $batch->key );
324
- }
325
- } while ( ! $this->time_exceeded() && ! $this->memory_exceeded() && ! $this->is_queue_empty() );
326
-
327
- $this->unlock_process();
328
-
329
- // Start next batch or complete process.
330
- if ( ! $this->is_queue_empty() ) {
331
- $this->dispatch();
332
- } else {
333
- $this->complete();
334
- }
335
-
336
- wp_die();
337
- }
338
-
339
- /**
340
- * Memory exceeded
341
- *
342
- * Ensures the batch process never exceeds 90%
343
- * of the maximum WordPress memory.
344
- *
345
- * @return bool
346
- */
347
- protected function memory_exceeded() {
348
- $memory_limit = $this->get_memory_limit() * 0.9; // 90% of max memory
349
- $current_memory = memory_get_usage( true );
350
- $return = false;
351
-
352
- if ( $current_memory >= $memory_limit ) {
353
- $return = true;
354
- }
355
-
356
- return apply_filters( $this->identifier . '_memory_exceeded', $return );
357
- }
358
-
359
- /**
360
- * Get memory limit
361
- *
362
- * @return int
363
- */
364
- protected function get_memory_limit() {
365
- if ( function_exists( 'ini_get' ) ) {
366
- $memory_limit = ini_get( 'memory_limit' );
367
- } else {
368
- // Sensible default.
369
- $memory_limit = '128M';
370
- }
371
-
372
- if ( ! $memory_limit || -1 === $memory_limit ) {
373
- // Unlimited, set to 32GB.
374
- $memory_limit = '32000M';
375
- }
376
-
377
- return intval( $memory_limit ) * 1024 * 1024;
378
- }
379
-
380
- /**
381
- * Time exceeded.
382
- *
383
- * Ensures the batch never exceeds a sensible time limit.
384
- * A timeout limit of 30s is common on shared hosting.
385
- *
386
- * @return bool
387
- */
388
- protected function time_exceeded() {
389
- $finish = $this->start_time + apply_filters( $this->identifier . '_default_time_limit', 20 ); // 20 seconds
390
- $return = false;
391
-
392
- if ( time() >= $finish ) {
393
- $return = true;
394
- }
395
-
396
- return apply_filters( $this->identifier . '_time_exceeded', $return );
397
- }
398
-
399
- /**
400
- * Complete.
401
- *
402
- * Override if applicable, but ensure that the below actions are
403
- * performed, or, call parent::complete().
404
- */
405
- protected function complete() {
406
- // Unschedule the cron healthcheck.
407
- $this->clear_scheduled_event();
408
- }
409
-
410
- /**
411
- * Schedule cron healthcheck
412
- *
413
- * @access public
414
- * @param mixed $schedules Schedules.
415
- * @return mixed
416
- */
417
- public function schedule_cron_healthcheck( $schedules ) {
418
- $interval = apply_filters( $this->identifier . '_cron_interval', 5 );
419
-
420
- if ( property_exists( $this, 'cron_interval' ) ) {
421
- $interval = apply_filters( $this->identifier . '_cron_interval', $this->cron_interval );
422
- }
423
-
424
- // Adds every 5 minutes to the existing schedules.
425
- $schedules[ $this->identifier . '_cron_interval' ] = array(
426
- 'interval' => MINUTE_IN_SECONDS * $interval,
427
- 'display' => sprintf( __( 'Every %d Minutes' ), $interval ),
428
- );
429
-
430
- return $schedules;
431
- }
432
-
433
- /**
434
- * Handle cron healthcheck
435
- *
436
- * Restart the background process if not already running
437
- * and data exists in the queue.
438
- */
439
- public function handle_cron_healthcheck() {
440
- if ( $this->is_process_running() ) {
441
- // Background process already running.
442
- exit;
443
- }
444
-
445
- if ( $this->is_queue_empty() ) {
446
- // No data to process.
447
- $this->clear_scheduled_event();
448
- exit;
449
- }
450
-
451
- $this->handle();
452
-
453
- exit;
454
- }
455
-
456
- /**
457
- * Schedule event
458
- */
459
- protected function schedule_event() {
460
- if ( ! wp_next_scheduled( $this->cron_hook_identifier ) ) {
461
- wp_schedule_event( time(), $this->cron_interval_identifier, $this->cron_hook_identifier );
462
- }
463
- }
464
-
465
- /**
466
- * Clear scheduled event
467
- */
468
- protected function clear_scheduled_event() {
469
- $timestamp = wp_next_scheduled( $this->cron_hook_identifier );
470
-
471
- if ( $timestamp ) {
472
- wp_unschedule_event( $timestamp, $this->cron_hook_identifier );
473
- }
474
- }
475
-
476
- /**
477
- * Cancel Process
478
- *
479
- * Stop processing queue items, clear cronjob and delete batch.
480
- *
481
- */
482
- public function cancel_process() {
483
- if ( ! $this->is_queue_empty() ) {
484
- $batch = $this->get_batch();
485
-
486
- $this->delete( $batch->key );
487
-
488
- wp_clear_scheduled_hook( $this->cron_hook_identifier );
489
- }
490
-
491
- }
492
-
493
- /**
494
- * Task
495
- *
496
- * Override this method to perform any actions required on each
497
- * queue item. Return the modified item for further processing
498
- * in the next pass through. Or, return false to remove the
499
- * item from the queue.
500
- *
501
- * @param mixed $item Queue item to iterate over.
502
- *
503
- * @return mixed
504
- */
505
- abstract protected function task( $item );
506
-
507
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/notices/class-es-admin-notices.php CHANGED
@@ -92,13 +92,13 @@ class ES_Admin_Notices {
92
  * Hide a notice if the GET variable is set.
93
  */
94
  public static function hide_notices() {
 
 
95
  if ( isset( $_GET['ig-es-hide-notice'] ) && isset( $_GET['_ig_es_notice_nonce'] ) ) { // WPCS: input var ok, CSRF ok.
96
- if ( ! wp_verify_nonce( sanitize_key( wp_unslash( $_GET['_ig_es_notice_nonce'] ) ), 'ig_es_hide_notices_nonce' ) ) { // WPCS: input var ok, CSRF ok.
97
  wp_die( esc_html__( 'Action failed. Please refresh the page and retry.', 'email-subscribers' ) );
98
  }
99
 
100
- $hide_notice = sanitize_text_field( wp_unslash( $_GET['ig-es-hide-notice'] ) ); // WPCS: input var ok, CSRF ok.
101
-
102
  self::remove_notice( $hide_notice );
103
 
104
  update_user_meta( get_current_user_id(), 'dismissed_' . $hide_notice . '_notice', true );
92
  * Hide a notice if the GET variable is set.
93
  */
94
  public static function hide_notices() {
95
+ $hide_notice = ig_es_clean(ig_es_get_request_data('ig-es-hide-notice'));
96
+ $ig_es_hide_notice_nonce = ig_es_clean(ig_es_get_request_data('_ig_es_notice_nonce'));
97
  if ( isset( $_GET['ig-es-hide-notice'] ) && isset( $_GET['_ig_es_notice_nonce'] ) ) { // WPCS: input var ok, CSRF ok.
98
+ if ( ! wp_verify_nonce( sanitize_key( $ig_es_hide_notice_nonce ), 'ig_es_hide_notices_nonce' ) ) { // WPCS: input var ok, CSRF ok.
99
  wp_die( esc_html__( 'Action failed. Please refresh the page and retry.', 'email-subscribers' ) );
100
  }
101
 
 
 
102
  self::remove_notice( $hide_notice );
103
 
104
  update_user_meta( get_current_user_id(), 'dismissed_' . $hide_notice . '_notice', true );
includes/upgrade/class-es-background-process.php DELETED
@@ -1,229 +0,0 @@
1
- <?php
2
- /**
3
- * Abstract WP_Background_Process class.
4
- *
5
- * Uses https://github.com/A5hleyRich/wp-background-processing to handle DB
6
- * updates in the background.
7
- *
8
- */
9
-
10
- defined( 'ABSPATH' ) || exit;
11
-
12
- if ( ! class_exists( 'WP_Async_Request', false ) ) {
13
- include_once dirname( ES_PLUGIN_FILE ) . '/includes/libraries/wp-async-request.php';
14
- }
15
-
16
- if ( ! class_exists( 'WP_Background_Process', false ) ) {
17
- include_once dirname( ES_PLUGIN_FILE ) . '/includes/libraries/wp-background-process.php';
18
- }
19
-
20
- /**
21
- * ES_Background_Process class.
22
- */
23
- abstract class ES_Background_Process extends WP_Background_Process {
24
-
25
- /**
26
- * Is queue empty.
27
- *
28
- * @return bool
29
- */
30
- protected function is_queue_empty() {
31
- global $wpdb;
32
-
33
- $table = $wpdb->options;
34
- $column = 'option_name';
35
-
36
- if ( is_multisite() ) {
37
- $table = $wpdb->sitemeta;
38
- $column = 'meta_key';
39
- }
40
-
41
- $key = $wpdb->esc_like( $this->identifier . '_batch_' ) . '%';
42
-
43
- $count = $wpdb->get_var( $wpdb->prepare( "SELECT COUNT(*) FROM {$table} WHERE {$column} LIKE %s", $key ) ); // @codingStandardsIgnoreLine.
44
-
45
- return ! ( $count > 0 );
46
- }
47
-
48
- /**
49
- * Get batch.
50
- *
51
- * @return stdClass Return the first batch from the queue.
52
- */
53
- protected function get_batch() {
54
- global $wpdb;
55
-
56
- $table = $wpdb->options;
57
- $column = 'option_name';
58
- $key_column = 'option_id';
59
- $value_column = 'option_value';
60
-
61
- if ( is_multisite() ) {
62
- $table = $wpdb->sitemeta;
63
- $column = 'meta_key';
64
- $key_column = 'meta_id';
65
- $value_column = 'meta_value';
66
- }
67
-
68
- $key = $wpdb->esc_like( $this->identifier . '_batch_' ) . '%';
69
-
70
- $query = $wpdb->get_row( $wpdb->prepare( "SELECT * FROM {$table} WHERE {$column} LIKE %s ORDER BY {$key_column} ASC LIMIT 1", $key ) ); // @codingStandardsIgnoreLine.
71
-
72
- $batch = new stdClass();
73
- $batch->key = $query->$column;
74
- $batch->data = array_filter( (array) maybe_unserialize( $query->$value_column ) );
75
-
76
- return $batch;
77
- }
78
-
79
- /**
80
- * See if the batch limit has been exceeded.
81
- *
82
- * @return bool
83
- */
84
- protected function batch_limit_exceeded() {
85
- return $this->time_exceeded() || $this->memory_exceeded();
86
- }
87
-
88
- /**
89
- * Handle.
90
- *
91
- * Pass each queue item to the task handler, while remaining
92
- * within server memory and time limit constraints.
93
- */
94
- protected function handle() {
95
- $this->lock_process();
96
- $logger = get_ig_logger();
97
-
98
- do {
99
- $batch = $this->get_batch();
100
-
101
- $logger->info( '--------------------- Started To Run Task Again---------------------', array( 'source' => 'es_update' ) );
102
- foreach ( $batch->data as $key => $value ) {
103
- $is_value_exists = true;
104
- $ig_es_update_processed_tasks = get_option( 'ig_es_update_processed_tasks', array() );
105
- $task = false; // By default it's set to false
106
- $logger->info( '-------- Checking Transient For: ' . $value, array( 'source' => 'es_update' ) );
107
- if ( ! in_array( $value, $ig_es_update_processed_tasks ) ) {
108
- $is_value_exists = false;
109
- $logger->info( '------- Running Task: >>>>> ' . $value, array( 'source' => 'es_update' ) );
110
- $task = (bool) $this->task( $value );
111
- $logger->info( '------ Task Completed: >>>>> ' . $value . ' data ' . print_r( $task, true ), array( 'source' => 'es_update' ) );
112
- }
113
-
114
- if ( false !== $task ) {
115
- $batch->data[ $key ] = $task;
116
- } else {
117
- $logger->info( '---- Setting Transient For: ' . $value, array( 'source' => 'es_update' ) );
118
-
119
- if ( ! $is_value_exists ) {
120
- $ig_es_update_processed_tasks[] = $value;
121
- update_option( 'ig_es_update_processed_tasks', $ig_es_update_processed_tasks );
122
- }
123
- unset( $batch->data[ $key ] );
124
- }
125
-
126
- if ( $this->batch_limit_exceeded() ) {
127
- // Batch limits reached.
128
- break;
129
- }
130
- }
131
-
132
- // Update or delete current batch.
133
- if ( ! empty( $batch->data ) ) {
134
- $this->update( $batch->key, $batch->data );
135
- } else {
136
- $this->delete( $batch->key );
137
- }
138
- } while ( ! $this->batch_limit_exceeded() && ! $this->is_queue_empty() );
139
-
140
- $this->unlock_process();
141
-
142
- // Start next batch or complete process.
143
- if ( ! $this->is_queue_empty() ) {
144
- $this->dispatch();
145
- } else {
146
- $this->complete();
147
- }
148
- }
149
-
150
- /**
151
- * Get memory limit.
152
- *
153
- * @return int
154
- */
155
- protected function get_memory_limit() {
156
- if ( function_exists( 'ini_get' ) ) {
157
- $memory_limit = ini_get( 'memory_limit' );
158
- } else {
159
- // Sensible default.
160
- $memory_limit = '128M';
161
- }
162
-
163
- if ( ! $memory_limit || - 1 === intval( $memory_limit ) ) {
164
- // Unlimited, set to 32GB.
165
- $memory_limit = '32G';
166
- }
167
-
168
- return wp_convert_hr_to_bytes( $memory_limit );
169
- }
170
-
171
- /**
172
- * Schedule cron healthcheck.
173
- *
174
- * @param array $schedules Schedules.
175
- *
176
- * @return array
177
- */
178
- public function schedule_cron_healthcheck( $schedules ) {
179
- $interval = apply_filters( $this->identifier . '_cron_interval', 5 );
180
-
181
- if ( property_exists( $this, 'cron_interval' ) ) {
182
- $interval = apply_filters( $this->identifier . '_cron_interval', $this->cron_interval );
183
- }
184
-
185
- // Adds every 5 minutes to the existing schedules.
186
- $schedules[ $this->identifier . '_cron_interval' ] = array(
187
- 'interval' => MINUTE_IN_SECONDS * $interval,
188
- /* translators: %d: interval */
189
- 'display' => sprintf( __( 'Every %d minutes', 'email-subscribers' ), $interval ),
190
- );
191
-
192
- return $schedules;
193
- }
194
-
195
- /**
196
- * Delete all batches.
197
- *
198
- * @return ES_Background_Process
199
- */
200
- public function delete_all_batches() {
201
- global $wpdb;
202
-
203
- $table = $wpdb->options;
204
- $column = 'option_name';
205
-
206
- if ( is_multisite() ) {
207
- $table = $wpdb->sitemeta;
208
- $column = 'meta_key';
209
- }
210
-
211
- $key = $wpdb->esc_like( $this->identifier . '_batch_' ) . '%';
212
-
213
- $wpdb->query( $wpdb->prepare( "DELETE FROM {$table} WHERE {$column} LIKE %s", $key ) ); // @codingStandardsIgnoreLine.
214
-
215
- return $this;
216
- }
217
-
218
- /**
219
- * Kill process.
220
- *
221
- * Stop processing queue items, clear cronjob and delete all batches.
222
- */
223
- public function kill_process() {
224
- if ( ! $this->is_queue_empty() ) {
225
- $this->delete_all_batches();
226
- wp_clear_scheduled_hook( $this->cron_hook_identifier );
227
- }
228
- }
229
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/upgrade/class-es-background-updater.php DELETED
@@ -1,151 +0,0 @@
1
- <?php
2
- /**
3
- * Background Updater
4
- */
5
-
6
- defined( 'ABSPATH' ) || exit;
7
-
8
- if ( ! class_exists( 'ES_Background_Process', false ) ) {
9
- include_once dirname( __FILE__ ) . '/class-es-background-process.php';
10
- }
11
-
12
- /**
13
- * ES_Background_Updater Class.
14
- */
15
- class ES_Background_Updater extends ES_Background_Process {
16
-
17
- /**
18
- * Initiate new background process.
19
- */
20
- public function __construct() {
21
- // Uses unique prefix per blog so each blog has separate queue.
22
- $this->prefix = 'wp_' . get_current_blog_id();
23
- $this->action = 'ig_es_updater';
24
-
25
- parent::__construct();
26
- }
27
-
28
- /**
29
- * Dispatch updater.
30
- *
31
- * Updater will still run via cron job if this fails for any reason.
32
- */
33
- public function dispatch() {
34
- $dispatched = parent::dispatch();
35
- $logger = get_ig_logger();
36
-
37
- if ( is_wp_error( $dispatched ) ) {
38
- $logger->error(
39
- sprintf( 'Unable to dispatch Email Subscribers updater: %s', $dispatched->get_error_message() ),
40
- array( 'source' => 'ig_es_db_updates' )
41
- );
42
- }
43
- }
44
-
45
- /**
46
- * Handle cron healthcheck
47
- *
48
- * Restart the background process if not already running
49
- * and data exists in the queue.
50
- */
51
- public function handle_cron_healthcheck() {
52
- if ( $this->is_process_running() ) {
53
- // Background process already running.
54
- return;
55
- }
56
-
57
- if ( $this->is_queue_empty() ) {
58
- // No data to process.
59
- $this->clear_scheduled_event();
60
-
61
- return;
62
- }
63
-
64
- $this->handle();
65
- }
66
-
67
- /**
68
- * Schedule fallback event.
69
- */
70
- protected function schedule_event() {
71
- if ( ! wp_next_scheduled( $this->cron_hook_identifier ) ) {
72
- wp_schedule_event( time() + 10, $this->cron_interval_identifier, $this->cron_hook_identifier );
73
- }
74
- }
75
-
76
- /**
77
- * Is the updater running?
78
- *
79
- * @return boolean
80
- */
81
- public function is_updating() {
82
- return false === $this->is_queue_empty();
83
- }
84
-
85
- /**
86
- * Task
87
- *
88
- * Override this method to perform any actions required on each
89
- * queue item. Return the modified item for further processing
90
- * in the next pass through. Or, return false to remove the
91
- * item from the queue.
92
- *
93
- * @param string $callback Update callback function.
94
- *
95
- * @return string|bool
96
- */
97
- protected function task( $callback ) {
98
- ig_es_maybe_define_constant( 'IG_ES_UPDATING', true );
99
-
100
- $logger = get_ig_logger();
101
-
102
- include_once dirname( __FILE__ ) . '/es-update-functions.php';
103
-
104
- $result = false;
105
-
106
- if ( is_callable( $callback ) ) {
107
- $logger->info( sprintf( 'Running %s callback', $callback ), array( 'source' => 'ig_es_db_updates' ) );
108
-
109
- $result = (bool) call_user_func( $callback, $this );
110
-
111
- if ( $result ) {
112
- $logger->info( sprintf( '%s callback needs to run again', $callback ), array( 'source' => 'ig_es_db_updates' ) );
113
- } else {
114
- $logger->info( sprintf( 'Finished running %s callback', $callback ), array( 'source' => 'ig_es_db_updates' ) );
115
- }
116
- } else {
117
- $logger->notice( sprintf( 'Could not find %s callback', $callback ), array( 'source' => 'ig_es_db_updates' ) );
118
- }
119
-
120
- return $result ? $callback : false;
121
- }
122
-
123
- /**
124
- * Complete
125
- *
126
- * Override if applicable, but ensure that the below actions are
127
- * performed, or, call parent::complete().
128
- */
129
- protected function complete() {
130
- ES_Install::update_db_version();
131
- delete_transient( 'ig_es_updating' );
132
- parent::complete();
133
- }
134
-
135
- /**
136
- * See if the batch limit has been exceeded.
137
- *
138
- * @return bool
139
- */
140
- public function is_memory_exceeded() {
141
- return false;
142
-
143
- //return $this->memory_exceeded();
144
- }
145
-
146
- public function time_exceeded() {
147
- return false;
148
-
149
- // return $this->time_exceeded();
150
- }
151
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
includes/upgrade/es-update-functions.php CHANGED
@@ -25,11 +25,6 @@ function ig_es_update_320_add_sync_option() {
25
 
26
  function ig_es_update_320_db_version() {
27
  ES_Install::update_db_version( '3.2.0' );
28
-
29
- $db_update_option = '320_db_updated_at';
30
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
31
-
32
-
33
  }
34
 
35
  /* --------------------- ES 3.2.0 (End)--------------------------- */
@@ -84,8 +79,6 @@ function ig_es_update_327_change_email_type() {
84
 
85
  function ig_es_update_327_db_version() {
86
  ES_Install::update_db_version( '3.2.7' );
87
- $db_update_option = '327_db_updated_at';
88
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
89
  }
90
 
91
  /* --------------------- ES 3.2.7 (End)--------------------------- */
@@ -176,8 +169,6 @@ function ig_es_update_330_import_options() {
176
 
177
  function ig_es_update_330_db_version() {
178
  ES_Install::update_db_version( '3.3.0' );
179
- $db_update_option = '330_db_updated_at';
180
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
181
  }
182
 
183
  /* --------------------- ES 3.3.0 (End)--------------------------- */
@@ -377,8 +368,6 @@ function ig_es_update_340_migrate_keywords() {
377
 
378
  function ig_es_update_340_db_version() {
379
  ES_Install::update_db_version( '3.4.0' );
380
- $db_update_option = '340_db_updated_at';
381
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
382
 
383
 
384
  }
@@ -409,11 +398,6 @@ function ig_es_update_3516_create_subscribers_ips_table() {
409
 
410
  function ig_es_update_3516_db_version() {
411
  ES_Install::update_db_version( '3.5.16' );
412
-
413
- $db_update_option = '3516_db_updated_at';
414
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
415
-
416
-
417
  }
418
 
419
  /* --------------------- ES 3.5.16 (End)--------------------------- */
@@ -494,9 +478,7 @@ function ig_es_update_400_migrate_lists() {
494
 
495
  // Import contacts from es_emaillist table to ig_contacts and ig_lists_contacts table
496
  function ig_es_update_400_migrate_subscribers() {
497
-
498
  ES_DB_Contacts::migrate_subscribers_from_older_version();
499
-
500
  }
501
 
502
  function ig_es_update_400_migrate_post_notifications() {
@@ -511,7 +493,6 @@ function ig_es_update_400_migrate_notifications() {
511
  */
512
 
513
  ES_DB_Mailing_Queue::migrate_notifications();
514
-
515
  }
516
 
517
  function ig_es_update_400_migrate_reports_data() {
@@ -531,9 +512,6 @@ function ig_es_update_400_migrate_group_selectors_forms() {
531
 
532
  function ig_es_update_400_db_version() {
533
  ES_Install::update_db_version( '4.0.0' );
534
-
535
- $db_update_option = '400_db_updated_at';
536
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
537
  }
538
 
539
  /* --------------------- ES 4.0.0 (End)--------------------------- */
@@ -545,8 +523,6 @@ function ig_es_update_401_migrate_newsletters() {
545
 
546
  function ig_es_update_401_db_version() {
547
  ES_Install::update_db_version( '4.0.1' );
548
- $db_update_option = '401_db_updated_at';
549
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
550
  }
551
 
552
  /* --------------------- ES 4.0.1 (End)--------------------------- */
@@ -560,8 +536,6 @@ function ig_es_update_402_migrate_post_notification_es_template_type() {
560
 
561
  function ig_es_update_402_db_version() {
562
  ES_Install::update_db_version( '4.0.2' );
563
- $db_update_option = '402_db_updated_at';
564
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
565
  }
566
 
567
  /* --------------------- ES 4.0.2(End)--------------------------- */
@@ -586,8 +560,6 @@ function ig_es_update_403_alter_mailing_queue_table() {
586
 
587
  function ig_es_update_403_db_version() {
588
  ES_Install::update_db_version( '4.0.3' );
589
- $db_update_option = '403_db_updated_at';
590
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
591
  }
592
 
593
  /* --------------------- ES 4.0.3(End)--------------------------- */
@@ -617,8 +589,6 @@ function ig_es_update_405_migrate_widgets() {
617
 
618
  function ig_es_update_405_db_version() {
619
  ES_Install::update_db_version( '4.0.5' );
620
- $db_update_option = '405_db_updated_at';
621
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
622
  }
623
 
624
  /* --------------------- ES 4.0.5(End)--------------------------- */
@@ -632,14 +602,12 @@ function ig_es_update_4010_update_sending_status() {
632
 
633
  function ig_es_update_4010_db_version() {
634
  ES_Install::update_db_version( '4.0.10' );
635
- $db_update_option = '4010_db_updated_at';
636
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
637
  }
638
 
639
  /* --------------------- ES 4.0.10(End)--------------------------- */
640
 
641
  function ig_es_update_4011_migrate_newsletter_es_template_type() {
642
- ES_DB_Notifications::migratate_newsletter_es_template_type();
643
  }
644
 
645
  function ig_es_update_4011_update_campaign_id_in_mailing_queue() {
@@ -648,8 +616,6 @@ function ig_es_update_4011_update_campaign_id_in_mailing_queue() {
648
 
649
  function ig_es_update_4011_db_version() {
650
  ES_Install::update_db_version( '4.0.11' );
651
- $db_update_option = '4011_db_updated_at';
652
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
653
  }
654
 
655
  /* --------------------- ES 4.0.11(End)--------------------------- */
@@ -663,8 +629,6 @@ function ig_es_update_4015_alter_blocked_emails_table() {
663
 
664
  function ig_es_update_4015_db_version() {
665
  ES_Install::update_db_version( '4.0.15' );
666
- $db_update_option = '4015_db_updated_at';
667
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
668
  }
669
 
670
  /* --------------------- ES 4.0.15(End)--------------------------- */
@@ -677,8 +641,6 @@ function ig_es_update_411_alter_contacts_table() {
677
 
678
  function ig_es_update_411_db_version() {
679
  ES_Install::update_db_version( '4.1.1' );
680
- $db_update_option = '411_db_updated_at';
681
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
682
  }
683
 
684
  /* --------------------- ES 4.1.1(End)--------------------------- */
@@ -708,8 +670,6 @@ function ig_es_update_417_alter_mailing_queue_table() {
708
 
709
  function ig_es_update_417_db_version() {
710
  ES_Install::update_db_version( '4.1.7' );
711
- $db_update_option = '417_db_updated_at';
712
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
713
  }
714
 
715
  /* --------------------- ES 4.1.7(End)--------------------------- */
@@ -749,13 +709,84 @@ function ig_es_update_4113_create_files() {
749
 
750
  /**
751
  * Add DB update time
752
- *
753
  * @since 4.1.13
754
  */
755
  function ig_es_update_4113_db_version() {
756
  ES_Install::update_db_version( '4.1.13' );
757
- $db_update_option = '4113_db_updated_at';
758
- ES_Common::set_ig_option( $db_update_option, ig_get_current_date_time() );
759
  }
760
 
761
- /* --------------------- ES 4.1.13(End)--------------------------- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
 
26
  function ig_es_update_320_db_version() {
27
  ES_Install::update_db_version( '3.2.0' );
 
 
 
 
 
28
  }
29
 
30
  /* --------------------- ES 3.2.0 (End)--------------------------- */
79
 
80
  function ig_es_update_327_db_version() {
81
  ES_Install::update_db_version( '3.2.7' );
 
 
82
  }
83
 
84
  /* --------------------- ES 3.2.7 (End)--------------------------- */
169
 
170
  function ig_es_update_330_db_version() {
171
  ES_Install::update_db_version( '3.3.0' );
 
 
172
  }
173
 
174
  /* --------------------- ES 3.3.0 (End)--------------------------- */
368
 
369
  function ig_es_update_340_db_version() {
370
  ES_Install::update_db_version( '3.4.0' );
 
 
371
 
372
 
373
  }
398
 
399
  function ig_es_update_3516_db_version() {
400
  ES_Install::update_db_version( '3.5.16' );
 
 
 
 
 
401
  }
402
 
403
  /* --------------------- ES 3.5.16 (End)--------------------------- */
478
 
479
  // Import contacts from es_emaillist table to ig_contacts and ig_lists_contacts table
480
  function ig_es_update_400_migrate_subscribers() {
 
481
  ES_DB_Contacts::migrate_subscribers_from_older_version();
 
482
  }
483
 
484
  function ig_es_update_400_migrate_post_notifications() {
493
  */
494
 
495
  ES_DB_Mailing_Queue::migrate_notifications();
 
496
  }
497
 
498
  function ig_es_update_400_migrate_reports_data() {
512
 
513
  function ig_es_update_400_db_version() {
514
  ES_Install::update_db_version( '4.0.0' );
 
 
 
515
  }
516
 
517
  /* --------------------- ES 4.0.0 (End)--------------------------- */
523
 
524
  function ig_es_update_401_db_version() {
525
  ES_Install::update_db_version( '4.0.1' );
 
 
526
  }
527
 
528
  /* --------------------- ES 4.0.1 (End)--------------------------- */
536
 
537
  function ig_es_update_402_db_version() {
538
  ES_Install::update_db_version( '4.0.2' );
 
 
539
  }
540
 
541
  /* --------------------- ES 4.0.2(End)--------------------------- */
560
 
561
  function ig_es_update_403_db_version() {
562
  ES_Install::update_db_version( '4.0.3' );
 
 
563
  }
564
 
565
  /* --------------------- ES 4.0.3(End)--------------------------- */
589
 
590
  function ig_es_update_405_db_version() {
591
  ES_Install::update_db_version( '4.0.5' );
 
 
592
  }
593
 
594
  /* --------------------- ES 4.0.5(End)--------------------------- */
602
 
603
  function ig_es_update_4010_db_version() {
604
  ES_Install::update_db_version( '4.0.10' );
 
 
605
  }
606
 
607
  /* --------------------- ES 4.0.10(End)--------------------------- */
608
 
609
  function ig_es_update_4011_migrate_newsletter_es_template_type() {
610
+ ES_DB_Notifications::migrate_newsletter_es_template_type();
611
  }
612
 
613
  function ig_es_update_4011_update_campaign_id_in_mailing_queue() {
616
 
617
  function ig_es_update_4011_db_version() {
618
  ES_Install::update_db_version( '4.0.11' );
 
 
619
  }
620
 
621
  /* --------------------- ES 4.0.11(End)--------------------------- */
629
 
630
  function ig_es_update_4015_db_version() {
631
  ES_Install::update_db_version( '4.0.15' );
 
 
632
  }
633
 
634
  /* --------------------- ES 4.0.15(End)--------------------------- */
641
 
642
  function ig_es_update_411_db_version() {
643
  ES_Install::update_db_version( '4.1.1' );
 
 
644
  }
645
 
646
  /* --------------------- ES 4.1.1(End)--------------------------- */
670
 
671
  function ig_es_update_417_db_version() {
672
  ES_Install::update_db_version( '4.1.7' );
 
 
673
  }
674
 
675
  /* --------------------- ES 4.1.7(End)--------------------------- */
709
 
710
  /**
711
  * Add DB update time
712
+ *
713
  * @since 4.1.13
714
  */
715
  function ig_es_update_4113_db_version() {
716
  ES_Install::update_db_version( '4.1.13' );
 
 
717
  }
718
 
719
+ /* --------------------- ES 4.1.13(End)--------------------------- */
720
+
721
+ function ig_es_update_4115_create_tables() {
722
+
723
+ global $wpdb;
724
+
725
+ $wpdb->hide_errors();
726
+ require_once ABSPATH . 'wp-admin/includes/upgrade.php';
727
+ dbDelta( ES_Install::get_ig_es_4115_schema() );
728
+ }
729
+
730
+ /**
731
+ * Migrate db_updated_at options into new structure
732
+ *
733
+ * @since 4.1.15
734
+ */
735
+ function ig_es_update_4115_migrate_db_update_history() {
736
+
737
+ $db_update_history_option = 'db_update_history';
738
+ $db_update_history_data = ES_Common::get_ig_option( $db_update_history_option, array() );
739
+
740
+ /**
741
+ * We have already created these many options to store date and time of individual
742
+ * version installation. Now, we are merging into single option
743
+ */
744
+ $db_update_at_options = array(
745
+ '4.0.0' => '400_db_updated_at',
746
+ '4.0.1' => '401_db_updated_at',
747
+ '4.0.2' => '402_db_updated_at',
748
+ '4.0.3' => '403_db_updated_at',
749
+ '4.0.5' => '405_db_updated_at',
750
+ '4.0.10' => '4010_db_updated_at',
751
+ '4.0.11' => '4011_db_updated_at',
752
+ '4.0.15' => '4015_db_updated_at',
753
+ '4.1.1' => '411_db_updated_at',
754
+ '4.1.7' => '417_db_updated_at',
755
+ '4.1.13' => '4113_db_updated_at'
756
+ );
757
+
758
+ foreach ( $db_update_at_options as $version => $option ) {
759
+ $value = ES_Common::get_ig_option( $option, false );
760
+ if ( $value ) {
761
+ $db_update_history_data[ $version ] = $value;
762
+
763
+ // As we are migrating to new structure
764
+ // Delete existing option
765
+ ES_Common::delete_ig_option( $option );
766
+ }
767
+ }
768
+
769
+ ES_Common::set_ig_option( $db_update_history_option, $db_update_history_data );
770
+
771
+ }
772
+
773
+ /**
774
+ * add form success message according to opt-in type
775
+ *
776
+ * @since 4.1.15
777
+ */
778
+ function ig_es_update_4115_add_form_submission_option() {
779
+ $ig_es_option_type = get_option( 'ig_es_optin_type' );
780
+ $message = ( $ig_es_option_type == 'double_opt_in' ) ? __( 'Your subscription was successful! Kindly check your mailbox and confirm your subscription. If you don\'t see the email within a few minutes, check the spam/junk folder.', 'email-subscribers' ) : __( 'Successfully Subscribed.', 'email-subscribers' );
781
+ update_option( 'ig_es_form_submission_success_message', $message );
782
+ }
783
+
784
+ /**
785
+ * Update DB Update history
786
+ *
787
+ * @since 4.1.15
788
+ */
789
+ function ig_es_update_4115_db_version() {
790
+ ES_Install::update_db_version( '4.1.15' );
791
+ }
792
+ /* --------------------- ES 4.1.15(End)--------------------------- */
languages/email-subscribers.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Email Subscribers & Newsletters\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2019-08-19 04:23+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
@@ -15,7 +15,7 @@ msgstr ""
15
  "X-Generator: Loco https://localise.biz/\n"
16
  "X-Loco-Version: 2.2.0; wp-5.1"
17
 
18
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:171
19
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:11
20
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:12
21
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:11
@@ -23,86 +23,245 @@ msgstr ""
23
  msgid "Email Subscribers"
24
  msgstr ""
25
 
26
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:174
27
  msgid "Dashboard"
28
  msgstr ""
29
 
30
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:175
31
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:90
32
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:305
33
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:20
34
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:66
 
35
  msgid "Lists"
36
  msgstr ""
37
 
38
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:176
39
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/help.php:112
40
  msgid "Post Notifications"
41
  msgstr ""
42
 
43
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:177
44
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:33
45
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:233
46
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:197
47
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:202
 
 
48
  msgid "Broadcast"
49
  msgstr ""
50
 
51
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:178
52
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:20
53
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:43
54
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:82
55
  msgid "Reports"
56
  msgstr ""
57
 
58
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:179
59
  msgid "Audience"
60
  msgstr ""
61
 
62
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:180
63
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:89
64
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:236
65
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:36
66
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:49
67
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:100
68
  msgid "Campaigns"
69
  msgstr ""
70
 
71
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:181
72
  msgid "Settings"
73
  msgstr ""
74
 
75
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:182
76
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:88
77
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:19
78
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:20
79
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:42
80
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:67
81
  msgid "Forms"
82
  msgstr ""
83
 
84
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:183
85
  msgid "Template Preview"
86
  msgstr ""
87
 
88
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:390
89
  msgid "Something went wrong"
90
  msgstr ""
91
 
92
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:75
93
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:124
94
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:80
95
  msgid "Send"
96
  msgstr ""
97
 
98
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:125
99
  msgid ""
100
  "Allow Email Subscribers to track plugin usage. We guarantee no sensitive "
101
  "data is collected."
102
  msgstr ""
103
 
104
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/es-backward.php:114
105
- msgid "Confirm Your Subscription!"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
106
  msgstr ""
107
 
108
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/pro-features.php:59
@@ -290,238 +449,107 @@ msgid ""
290
  "from you."
291
  msgstr ""
292
 
293
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:138
294
- msgid "Email Subscribers Pro"
295
- msgstr ""
296
-
297
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:153
298
- msgid "Get Starter Now!"
299
  msgstr ""
300
 
301
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:165
302
- #, php-format
303
- msgid ""
304
- "WordPress Cron is disable on your site. Email notifications from Email "
305
- "Subscribers plugin will not be sent automatically. <a href=\"%s\" "
306
- "target=\"_blank\" >Here's how you can enable it.</a>"
307
  msgstr ""
308
 
309
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:166
310
- #, php-format
311
- msgid "Or schedule Cron in <a href=\"%s\" target=\"_blank\">cPanel</a>"
312
  msgstr ""
313
 
314
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:167
315
- #, php-format
316
- msgid ""
317
- "Or use <strong><a href=\"%s\" target=\"_blank\">Email Subscribners Pro</a>"
318
- "</strong> for automatic Cron support"
319
  msgstr ""
320
 
321
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:168
322
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:178
323
- msgid "OK, I Got it!"
324
  msgstr ""
325
 
326
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:177
327
- #, php-format
328
- msgid ""
329
- "📣 <b>[Coming Soon]</b> New Feature : Send <strong>Post Digest</strong> using "
330
- "Email Subscribers <a href=\"%s\" target=\"_blank\">[Read more]</a>"
331
  msgstr ""
332
 
333
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:99
334
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:667
335
- msgid "Subscribed"
336
  msgstr ""
337
 
338
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:100
339
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:668
340
- msgid "Unconfirmed"
341
  msgstr ""
342
 
343
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:101
344
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:669
345
- msgid "Unsubscribed"
346
  msgstr ""
347
 
348
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:116
349
- msgid "Disable email notification"
350
  msgstr ""
351
 
352
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:117
353
- msgid "Send email immediately"
354
  msgstr ""
355
 
356
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:118
357
- msgid "Send email via cron job"
 
 
 
358
  msgstr ""
359
 
360
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:261
361
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:275
362
- msgid "Select Status"
363
  msgstr ""
364
 
365
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:262
366
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:787
367
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:578
368
- msgid "Enable"
369
  msgstr ""
370
 
371
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:263
372
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:788
373
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:579
374
- msgid "Disable"
 
375
  msgstr ""
376
 
377
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:302
378
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:145
379
- msgid "Select Template"
 
 
380
  msgstr ""
381
 
382
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:331
383
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:193
384
- msgid "Active"
 
 
 
385
  msgstr ""
386
 
387
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:332
388
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:193
389
- msgid "Inactive"
 
390
  msgstr ""
391
 
392
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:382
393
- msgid "Select Categories"
394
  msgstr ""
395
 
396
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:396
397
- msgid "All Categories (including newly created categories)"
398
- msgstr ""
399
-
400
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:419
401
- msgid "No Custom Post Types Available"
402
- msgstr ""
403
-
404
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:440
405
- msgid "Single Opt-In"
406
- msgstr ""
407
-
408
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:441
409
- msgid "Double Opt-In"
410
- msgstr ""
411
-
412
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:449
413
- msgid "Full Size"
414
- msgstr ""
415
-
416
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:450
417
- msgid "Medium Size"
418
- msgstr ""
419
-
420
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:451
421
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:214
422
- msgid "Thumbnail"
423
- msgstr ""
424
-
425
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-mailer.php:111
426
- msgid "Welcome !"
427
- msgstr ""
428
-
429
- #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:110
430
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:404
431
- msgid "Please enter email address"
432
- msgstr ""
433
-
434
- #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:111
435
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:405
436
- msgid "You need to wait for sometime before subscribing again"
437
- msgstr ""
438
-
439
- #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:112
440
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:406
441
- msgid "Successfully Subscribed."
442
- msgstr ""
443
-
444
- #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:113
445
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:407
446
- msgid ""
447
- "Your subscription was successful! Kindly check your mailbox and confirm your "
448
- "subscription. If you don't see the email within a few minutes, check the "
449
- "spam/junk folder."
450
- msgstr ""
451
-
452
- #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:114
453
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:408
454
- msgid "Email Address already exists!"
455
- msgstr ""
456
-
457
- #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:115
458
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:409
459
- msgid "Oops.. Unexpected error occurred."
460
- msgstr ""
461
-
462
- #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:116
463
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:410
464
- msgid "Invalid email address"
465
- msgstr ""
466
-
467
- #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:117
468
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:412
469
- msgid "Please try after some time"
470
- msgstr ""
471
-
472
- #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:198
473
- msgid "Sorry, we couldn't find you. Please contact admin."
474
- msgstr ""
475
-
476
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:7
477
- #, php-format
478
- msgid ""
479
- "Created two Lists - <a href=\"%s\" target=\"_blank\">Main</a> and <a "
480
- "href=\"%s\" target=\"_blank\">Test</a>"
481
- msgstr ""
482
-
483
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:8
484
- msgid "Added yourself"
485
- msgstr ""
486
-
487
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:8
488
- msgid "to both lists"
489
- msgstr ""
490
-
491
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:9
492
- #, php-format
493
- msgid ""
494
- "Created a <a href=\"%s\" target=\"_blank\"> subscription / lead collection "
495
- "optin form</a>"
496
- msgstr ""
497
-
498
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:10
499
- #, php-format
500
- msgid ""
501
- "Added optin form to <a href=\"%s\" target=\"_blank\">default widget area</a> "
502
- "to show it on your site"
503
- msgstr ""
504
-
505
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:11
506
- #, php-format
507
- msgid ""
508
- "Created two Campaigns - \"<a href=\"%s\" target=\"_blank\">Newsletter "
509
- "Broadcast</a>\" and \"<a href=\"%s\" target=\"_blank\">New Post "
510
- "Notification</a>\""
511
- msgstr ""
512
-
513
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:15
514
- msgid ""
515
- "Next step is to test everything by <strong>sending a test mail</strong>. <br>"
516
- "We've already added you, but recommend adding another email to test."
517
- msgstr ""
518
-
519
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:18
520
- msgid "Add an email to send a test to:"
521
- msgstr ""
522
-
523
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:20
524
- msgid "Send a test email"
525
  msgstr ""
526
 
527
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:28
@@ -551,7 +579,7 @@ msgstr ""
551
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:47
552
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:72
553
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:95
554
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:66
555
  #, php-format
556
  msgid "I have read and agreed to your %s."
557
  msgstr ""
@@ -559,7 +587,7 @@ msgstr ""
559
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:47
560
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:72
561
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:95
562
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:66
563
  msgid "Privacy Policy"
564
  msgstr ""
565
 
@@ -875,53 +903,69 @@ msgid ""
875
  "target=\"_blank\">add Rainmaker’s form in Email Subscribers</a>"
876
  msgstr ""
877
 
878
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:19
879
- msgid "Here's a quick look at changes within the plugin:"
 
 
 
 
 
 
 
 
 
 
 
 
880
  msgstr ""
881
 
882
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:20
 
 
 
 
883
  #, php-format
884
  msgid ""
885
  "1. Newsletters are now <b>Broadcasts</b>. Broadcasts and Post notifications "
886
  "are now merged in <a href=\"%s\" target=\"_blank\">Campaigns</a>"
887
  msgstr ""
888
 
889
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:21
890
  #, php-format
891
  msgid ""
892
  "2. Subscribers are now called <b>Contacts</b> and part of an <a href=\"%s\" "
893
  "target=\"_blank\">Audience</a>"
894
  msgstr ""
895
 
896
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:22
897
  #, php-format
898
  msgid "3. Groups are now called <a href=\"%s\" target=\"_blank\">Lists</a>"
899
  msgstr ""
900
 
901
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:23
902
  #, php-format
903
  msgid "4. Find <a href=\"%s\" target=\"_blank\">Forms</a> here"
904
  msgstr ""
905
 
906
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:25
907
  msgid "Explore all changes"
908
  msgstr ""
909
 
910
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:27
911
  msgid "You are all setup 👍"
912
  msgstr ""
913
 
914
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:28
915
  msgid "Here are the things you can do next"
916
  msgstr ""
917
 
918
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:30
919
  #, php-format
920
  msgid ""
921
  "1.Check <a href=\"%s\" target=\"blank\" >optin form</a> on your homepage"
922
  msgstr ""
923
 
924
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:31
925
  #, php-format
926
  msgid ""
927
  "2. <a href=\"%s\" target=\"blank\" ><b>Review and rearrange the form from "
@@ -929,44 +973,44 @@ msgid ""
929
  "adding a form to another place from this help article.</a>"
930
  msgstr ""
931
 
932
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:32
933
  #, php-format
934
  msgid ""
935
  "3. Go ahead and take a look around. Tweak settings, review <a href=\"%s\" "
936
  "target=\"_blank\">design templates</a> or go through the documentation."
937
  msgstr ""
938
 
939
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:33
940
  msgid "4. And if you haven't already, signup for the free course below."
941
  msgstr ""
942
 
943
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:36
944
  msgid "Hello! 👋"
945
  msgstr ""
946
 
947
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:37
948
  msgid ""
949
  "Email Subscribers is a complete newsletter plugin that lets you collect "
950
  "leads, send automated new blog post notification emails, send newsletters "
951
  "and more. It’s your tool to build an audience and engage with them ongoingly."
952
  msgstr ""
953
 
954
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:38
955
  msgid "We’ve setup the basics to save you time."
956
  msgstr ""
957
 
958
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:39
959
  msgid "Please read this carefully and make changes as needed"
960
  msgstr ""
961
 
962
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:41
963
  msgid ""
964
  "1. We created two lists - <b>Main List</b> and <b>Test List</b>. Also added "
965
  "yourself to the Test List. That way you can test campaigns on the Test List "
966
  "before sending them to the Main List ;-)"
967
  msgstr ""
968
 
969
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:42
970
  #, php-format
971
  msgid ""
972
  "2. We also created a lead collection / subscription form and added it the "
@@ -976,7 +1020,7 @@ msgid ""
976
  "article.</a>"
977
  msgstr ""
978
 
979
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:43
980
  #, php-format
981
  msgid ""
982
  "3. BTW, we also sent a few test emails to the Test List. <a href=\"%s\" "
@@ -984,30 +1028,30 @@ msgid ""
984
  "post notification).<b> So check your email \""
985
  msgstr ""
986
 
987
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:43
988
  msgid "\" and confirm you got those test emails.</b>"
989
  msgstr ""
990
 
991
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:44
992
  #, php-format
993
  msgid ""
994
  "4. Go ahead and take a look around. Tweak settings, review <a href=\"%s\" "
995
  "target=\"_blank\">design templates</a> or go through the documentation."
996
  msgstr ""
997
 
998
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:45
999
  msgid "5. And don’t forget to signup for the free course below."
1000
  msgstr ""
1001
 
1002
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:52
1003
  msgid "Free Course - Email Marketing Mastery"
1004
  msgstr ""
1005
 
1006
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:56
1007
  msgid "In short 5 weeks: build your list and succeed with email marketing"
1008
  msgstr ""
1009
 
1010
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:57
1011
  msgid ""
1012
  "Do you want to build your list, keep off spam, write emails that people open "
1013
  "and click through? Do you want to build your brand and nurture an amazing "
@@ -1015,93 +1059,77 @@ msgid ""
1015
  "\t\t\t\t\t\t\t\t\t\t\t\tEnter your name and email on the form to get it all."
1016
  msgstr ""
1017
 
1018
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:68
1019
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:215
1020
  #: ../../../../wpRepos/gitlab/email-subscribers/public/partials/class-es-shortcode.php:124
1021
  msgid "Subscribe"
1022
  msgstr ""
1023
 
1024
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:86
1025
  msgid "Overview"
1026
  msgstr ""
1027
 
1028
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:87
1029
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:451
1030
  msgid "Active Contacts"
1031
  msgstr ""
1032
 
1033
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:93
1034
  msgid "Help & How to's"
1035
  msgstr ""
1036
 
1037
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:94
1038
  msgid "How to create and show subscription forms."
1039
  msgstr ""
1040
 
1041
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:95
1042
  msgid "How to create a new campaign for new blog post "
1043
  msgstr ""
1044
 
1045
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:96
1046
  msgid "How to create new template for Post Notification or Broadcast"
1047
  msgstr ""
1048
 
1049
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:97
1050
  msgid "How to Create and Send Broadcasts Emails"
1051
  msgstr ""
1052
 
1053
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:98
1054
  msgid "How to add WordPress users to your lists"
1055
  msgstr ""
1056
 
1057
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:99
1058
  msgid "All Documentation"
1059
  msgstr ""
1060
 
1061
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:102
1062
  msgid "<span>Join our</span> Email Subscribers Secret Club!"
1063
  msgstr ""
1064
 
1065
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:103
1066
  msgid ""
1067
  "Be a part of growing Email Subscribers community. Share your valuable "
1068
  "feedback and get quick help from community. It's a great way to connect with "
1069
  "real people"
1070
  msgstr ""
1071
 
1072
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:108
1073
  msgid "Questions? Need Help?"
1074
  msgstr ""
1075
 
1076
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:109
1077
  msgid "Contact Us"
1078
  msgstr ""
1079
 
1080
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:110
1081
  #, php-format
1082
  msgid "Version: %s"
1083
  msgstr ""
1084
 
1085
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/pricing.php:61
1086
- msgid "Ready to Grow Your Audience?"
1087
- msgstr ""
1088
-
1089
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/pricing.php:63
1090
- msgid "Get Starter @ $49/year"
1091
- msgstr ""
1092
-
1093
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/pricing.php:67
1094
- msgid "Get Pro @ $129/year"
1095
- msgstr ""
1096
-
1097
- #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/pricing.php:70
1098
- msgid "OR @ $9/month"
1099
- msgstr ""
1100
-
1101
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:42
1102
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:48
1103
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:980
1104
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:1000
1105
  msgid "Please select list."
1106
  msgstr ""
1107
 
@@ -1131,21 +1159,21 @@ msgid "Campaigns > Edit Post Notification"
1131
  msgstr ""
1132
 
1133
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:238
1134
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:42
1135
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:206
1136
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:198
 
1137
  msgid "Add New"
1138
  msgstr ""
1139
 
1140
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:240
1141
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:52
1142
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:101
1143
  msgid "Manage Templates"
1144
  msgstr ""
1145
 
1146
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:249
1147
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:157
1148
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:74
1149
  msgid "Select List"
1150
  msgstr ""
1151
 
@@ -1181,1181 +1209,1187 @@ msgid ""
1181
  "(Optional) Select custom post type for which you want to send notification."
1182
  msgstr ""
1183
 
1184
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:34
1185
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:198
1186
- msgid "Post Notification"
1187
  msgstr ""
1188
 
1189
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:65
1190
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:69
1191
- msgid "Available Keywords"
1192
  msgstr ""
1193
 
1194
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:69
1195
- msgid "for Broadcast:"
1196
  msgstr ""
1197
 
1198
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:107
1199
- msgid "Preview Template"
1200
  msgstr ""
1201
 
1202
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:213
1203
- msgid "Template Type"
1204
  msgstr ""
1205
 
1206
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:248
1207
- msgid "Duplicate"
1208
  msgstr ""
1209
 
1210
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:19
1211
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:20
1212
- msgid "Campaign"
1213
  msgstr ""
1214
 
1215
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:50
1216
- msgid "Create Post Notification"
 
 
 
 
 
1217
  msgstr ""
1218
 
1219
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:51
1220
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:108
1221
- msgid "Send Broadcast"
 
 
 
 
1222
  msgstr ""
1223
 
1224
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:169
1225
- msgid "No Campaigns Found."
1226
  msgstr ""
1227
 
1228
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:205
1229
- msgid "All"
1230
  msgstr ""
1231
 
1232
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:255
1233
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:433
 
 
 
 
1234
  #, php-format
1235
- msgid "<a href=\"?page=%s&action=%s&list=%s&_wpnonce=%s\">Edit</a>"
1236
  msgstr ""
1237
 
1238
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:256
1239
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:434
1240
  #, php-format
1241
- msgid ""
1242
- "<a href=\"?page=%s&action=%s&list=%s&_wpnonce=%s\" onclick=\"return "
1243
- "checkDelete()\">Delete</a>"
1244
  msgstr ""
1245
 
1246
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:275
1247
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:282
1248
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:675
1249
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:223
1250
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:450
1251
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:733
1252
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:169
1253
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:172
1254
- #: ../../../../wpRepos/gitlab/email-subscribers/public/partials/class-es-shortcode.php:144
1255
- #: ../../../../wpRepos/gitlab/email-subscribers/public/partials/class-es-shortcode.php:144
1256
- msgid "Name"
1257
- msgstr ""
1258
-
1259
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:276
1260
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:277
1261
- msgid "Type"
1262
- msgstr ""
1263
-
1264
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:277
1265
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:291
1266
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:19
1267
- msgid "List"
1268
- msgstr ""
1269
-
1270
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:278
1271
- msgid "Categories"
1272
- msgstr ""
1273
-
1274
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:279
1275
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:98
1276
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:278
1277
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:292
1278
- msgid "Status"
1279
- msgstr ""
1280
-
1281
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:319
1282
- msgid "Search Campaigns"
1283
- msgstr ""
1284
-
1285
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:356
1286
- msgid "You are not allowed to delete campaign."
1287
- msgstr ""
1288
-
1289
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:360
1290
- msgid "Campaign has been deleted successfully!"
1291
- msgstr ""
1292
-
1293
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:379
1294
- msgid "Campaign(s) have been deleted successfully!"
1295
- msgstr ""
1296
-
1297
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:384
1298
- msgid "Please check campaign(s) to delete."
1299
- msgstr ""
1300
-
1301
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:72
1302
- msgid "Widget Title"
1303
- msgstr ""
1304
-
1305
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:76
1306
- msgid "Short description about subscription form"
1307
- msgstr ""
1308
-
1309
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:80
1310
- msgid "Display Name Field"
1311
- msgstr ""
1312
-
1313
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:82
1314
- msgid "YES"
1315
- msgstr ""
1316
-
1317
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:83
1318
- msgid "NO"
1319
- msgstr ""
1320
-
1321
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:87
1322
- msgid "Subscriber Group"
1323
- msgstr ""
1324
-
1325
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:11
1326
- msgid "Email Subscribers Widget"
1327
- msgstr ""
1328
-
1329
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:49
1330
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:330
1331
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:67
1332
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:333
1333
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:405
1334
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:441
1335
- msgid "Yes"
1336
- msgstr ""
1337
-
1338
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:49
1339
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:334
1340
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:64
1341
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:333
1342
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:406
1343
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:442
1344
- msgid "No"
1345
- msgstr ""
1346
-
1347
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-info.php:22
1348
- msgid "<span class=\"es-fire-sale\"> 🔥 </span> Go Pro"
1349
- msgstr ""
1350
-
1351
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:15
1352
- msgid "Import Subscribers"
1353
- msgstr ""
1354
-
1355
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:113
1356
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:117
1357
- #, php-format
1358
- msgid "Total %d contacts have been imported successfully!"
1359
- msgstr ""
1360
-
1361
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:121
1362
- #, php-format
1363
- msgid "%d contacts are already exists."
1364
- msgstr ""
1365
-
1366
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:126
1367
  #, php-format
1368
  msgid "%d contacts are invalid."
1369
  msgstr ""
1370
 
1371
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:136
1372
  msgid "Error: Please Select List"
1373
  msgstr ""
1374
 
1375
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:140
1376
  msgid "Error: Please select status"
1377
  msgstr ""
1378
 
1379
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:144
1380
  msgid "Error: Please Upload only CSV File"
1381
  msgstr ""
1382
 
1383
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:148
1384
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:152
1385
  msgid "Error: Please Upload File"
1386
  msgstr ""
1387
 
1388
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:171
1389
  msgid "Select CSV file"
1390
  msgstr ""
1391
 
1392
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:173
1393
  msgid "Check CSV structure"
1394
  msgstr ""
1395
 
1396
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:174
1397
  msgid "from here"
1398
  msgstr ""
1399
 
1400
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:185
1401
  msgid "Select status"
1402
  msgstr ""
1403
 
1404
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:197
1405
  msgid "Select list"
1406
  msgstr ""
1407
 
1408
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:209
1409
  msgid "Import"
1410
  msgstr ""
1411
 
1412
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:226
1413
  msgid "Audience > Import Contacts"
1414
  msgstr ""
1415
 
1416
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:86
1417
- msgid "You do not have permission to edit this form."
 
1418
  msgstr ""
1419
 
1420
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:89
1421
- msgid "Please add form name."
1422
  msgstr ""
1423
 
1424
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:94
1425
- msgid "Please select list(s) in which contact will be subscribed."
 
1426
  msgstr ""
1427
 
1428
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:139
1429
- msgid "Form has been added successfully!"
1430
  msgstr ""
1431
 
1432
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:184
1433
- msgid "Form has been updated successfully!"
1434
  msgstr ""
1435
 
1436
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:193
1437
- msgid "Sorry, form not found"
 
 
1438
  msgstr ""
1439
 
1440
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:230
1441
- msgid "New Form"
 
 
 
 
1442
  msgstr ""
1443
 
1444
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:232
1445
- msgid "Edit Form"
 
 
 
 
 
 
 
 
 
1446
  msgstr ""
1447
 
1448
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:249
1449
- msgid "Form Name"
 
1450
  msgstr ""
1451
 
1452
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:257
1453
- msgid "Description"
 
 
1454
  msgstr ""
1455
 
1456
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:265
1457
- msgid "Form Fields"
1458
  msgstr ""
1459
 
1460
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:270
1461
- msgid "Field"
 
 
 
1462
  msgstr ""
1463
 
1464
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:271
1465
- msgid "Show?"
1466
  msgstr ""
1467
 
1468
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:272
1469
- msgid "Required?"
1470
  msgstr ""
1471
 
1472
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:273
1473
- msgid "Label"
1474
  msgstr ""
1475
 
1476
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:276
1477
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:97
1478
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:290
1479
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:552
1480
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:734
1481
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:178
1482
- #: ../../../../wpRepos/gitlab/email-subscribers/public/partials/class-es-shortcode.php:174
1483
- msgid "Email"
1484
  msgstr ""
1485
 
1486
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:294
1487
- msgid "Button"
1488
  msgstr ""
1489
 
1490
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:306
1491
- msgid "Contacts will be added into selected list(s)"
 
1492
  msgstr ""
1493
 
1494
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:324
1495
- msgid "Allow contact to choose list(s)"
1496
  msgstr ""
1497
 
1498
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:325
1499
- msgid "Allow contacts to choose list(s) in which they want to subscribe."
 
1500
  msgstr ""
1501
 
1502
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:354
1503
- #, php-format
1504
- msgid ""
1505
- "Secure your form and avoid spam signups with Email Subscribers Starter Plan "
1506
- "<a target=\"_blank\" style=\"font-weight: bold; cursor:pointer; text-"
1507
- "decoration:none\" href=\"%s\">Get started</a>"
1508
  msgstr ""
1509
 
1510
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:659
1511
- #, php-format
1512
- msgid "<a href=\"?page=%s&action=%s&form=%s&_wpnonce=%s\">Edit</a>"
 
1513
  msgstr ""
1514
 
1515
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:660
1516
- #, php-format
1517
- msgid ""
1518
- "<a href=\"?page=%s&action=%s&form=%s&_wpnonce=%s\" onclick=\"return "
1519
- "checkDelete()\">Delete</a>"
1520
  msgstr ""
1521
 
1522
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:676
1523
- msgid "Shortcode"
 
1524
  msgstr ""
1525
 
1526
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:677
1527
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:453
1528
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:736
1529
- msgid "Created"
1530
  msgstr ""
1531
 
1532
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:705
1533
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:260
1534
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:343
1535
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:482
1536
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:768
1537
- msgid "Delete"
1538
  msgstr ""
1539
 
1540
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:715
1541
- msgid "Search Forms"
1542
  msgstr ""
1543
 
1544
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:751
1545
- msgid "You do not have permission to delete this form."
1546
  msgstr ""
1547
 
1548
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:758
1549
- msgid "Form has been deleted successfully!"
 
1550
  msgstr ""
1551
 
1552
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:773
1553
- msgid "Form(s) have been deleted successfully!"
1554
  msgstr ""
1555
 
1556
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:776
1557
- msgid "Please select form(s) to delete."
1558
  msgstr ""
1559
 
1560
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:800
1561
- msgid "No Forms avaliable."
 
1562
  msgstr ""
1563
 
1564
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:411
1565
- msgid "Invalid name"
 
1566
  msgstr ""
1567
 
1568
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:413
1569
- msgid "Oops...unable to add subscriber"
 
 
 
 
 
 
1570
  msgstr ""
1571
 
1572
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:414
1573
- msgid "You do not have permission to add subscriber"
1574
  msgstr ""
1575
 
1576
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:415
1577
- msgid "Please select the list"
 
1578
  msgstr ""
1579
 
1580
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:416
1581
- msgid "Invalid Captcha"
1582
  msgstr ""
1583
 
1584
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:19
1585
- msgid "Report"
1586
  msgstr ""
1587
 
1588
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:48
1589
- #, php-format
1590
- msgid ""
1591
- "<a href='%s' target='_blank' class='page-title-action es-imp-button'>Send "
1592
- "Queued Emails Now</a>"
1593
  msgstr ""
1594
 
1595
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:50
1596
- msgid ""
1597
- "<span class='page-title-action button-disabled'>Send Queued Emails Now</span>"
1598
  msgstr ""
1599
 
1600
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:51
1601
- msgid "<br /><span class='es-helper'>No emails found in queue</span>"
1602
  msgstr ""
1603
 
1604
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:96
1605
- msgid "Sr No"
1606
  msgstr ""
1607
 
1608
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:99
1609
- msgid "Sent Date"
 
1610
  msgstr ""
1611
 
1612
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:100
1613
- msgid "Viewed Status"
1614
  msgstr ""
1615
 
1616
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:101
1617
- msgid "Viewed Date"
1618
  msgstr ""
1619
 
1620
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:165
1621
- msgid "Viewed"
 
1622
  msgstr ""
1623
 
1624
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:165
1625
- msgid "Not yet viewed"
1626
  msgstr ""
1627
 
1628
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:178
1629
- msgid "No Reports avaliable."
 
 
1630
  msgstr ""
1631
 
1632
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:220
1633
- msgid "Completed"
 
 
1634
  msgstr ""
1635
 
1636
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:259
1637
- msgid "View"
 
 
1638
  msgstr ""
1639
 
 
 
1640
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:261
1641
- msgid "Preview"
1642
- msgstr ""
1643
-
1644
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:276
1645
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:349
1646
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:377
1647
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:415
1648
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:454
1649
- msgid "Subject"
1650
- msgstr ""
1651
-
1652
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:279
1653
- msgid "Start Date"
1654
- msgstr ""
1655
-
1656
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:280
1657
- msgid "End Date"
1658
- msgstr ""
1659
-
1660
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:281
1661
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:70
1662
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:169
1663
- msgid "Total Contacts"
1664
- msgstr ""
1665
-
1666
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:427
1667
- msgid "You do not have permission to view notification"
1668
- msgstr ""
1669
-
1670
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:439
1671
- msgid "You do not have permission to delete notification"
1672
- msgstr ""
1673
-
1674
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:444
1675
- msgid "Report has been deleted successfully!"
1676
- msgstr ""
1677
-
1678
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:453
1679
- msgid "You do not have permission to preview notification"
1680
- msgstr ""
1681
-
1682
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:471
1683
- msgid "Reports have been deleted successfully!"
1684
  msgstr ""
1685
 
1686
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:483
1687
- msgid "Preview Email"
1688
  msgstr ""
1689
 
1690
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:486
1691
- msgid ""
1692
- "This is how the email you sent may look. <br>Note: Different email services "
1693
- "(like gmail, yahoo etc) display email content differently. So there could be "
1694
- "a slight variation on how your customer will view the email content."
1695
  msgstr ""
1696
 
1697
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:26
1698
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:312
1699
- msgid "Please Select List"
1700
  msgstr ""
1701
 
1702
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:37
1703
- msgid "No data available"
1704
  msgstr ""
1705
 
1706
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:60
1707
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:50
1708
- msgid "Export Contacts"
1709
  msgstr ""
1710
 
1711
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:68
1712
- msgid "No."
1713
  msgstr ""
1714
 
1715
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:69
1716
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:27
1717
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:176
1718
- msgid "Contacts"
1719
  msgstr ""
1720
 
1721
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:71
1722
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:454
1723
- msgid "Export"
1724
  msgstr ""
1725
 
1726
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:85
1727
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:452
1728
- msgid "All Contacts"
1729
  msgstr ""
1730
 
1731
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:86
1732
- msgid "Subscribed Contacts"
1733
  msgstr ""
1734
 
1735
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:87
1736
- msgid "Unsubscribed Contacts"
1737
  msgstr ""
1738
 
1739
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:89
1740
- msgid "Unconfirmed Contacts"
1741
  msgstr ""
1742
 
1743
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:107
1744
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:399
1745
- msgid "Download"
1746
  msgstr ""
1747
 
1748
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:125
1749
- msgid "Audience > Export Contacts"
1750
  msgstr ""
1751
 
1752
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:216
1753
- msgid "Export the Subscribers"
1754
  msgstr ""
1755
 
1756
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:288
1757
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:542
1758
- msgid "First Name"
1759
  msgstr ""
1760
 
1761
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:289
1762
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:547
1763
- msgid "Last Name"
1764
  msgstr ""
1765
 
1766
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:293
1767
- msgid "Opt-In Type"
1768
  msgstr ""
1769
 
1770
- #. __( 'List', 'email-subscribers' ),
1771
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:294
1772
- msgid "Created On"
1773
  msgstr ""
1774
 
1775
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:42
1776
- msgid "Audience > Lists"
1777
  msgstr ""
1778
 
1779
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:83
1780
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:528
1781
- msgid "You do not have permission to edit list"
1782
  msgstr ""
1783
 
1784
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:85
1785
- msgid "Please add list name"
1786
  msgstr ""
1787
 
1788
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:128
1789
- msgid "List has been added successfully!"
1790
  msgstr ""
1791
 
1792
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:169
1793
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:532
1794
- msgid "List has been updated successfully!"
1795
  msgstr ""
1796
 
1797
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:208
1798
- msgid "Edit List"
1799
  msgstr ""
1800
 
1801
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:212
1802
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:77
1803
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:193
1804
- msgid "Manage Lists"
1805
  msgstr ""
1806
 
1807
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:380
1808
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:389
1809
  #, php-format
1810
- msgid "<a href=\"%s\" target=\"_blank\">%d</a>"
1811
- msgstr ""
1812
-
1813
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:492
1814
- msgid "Search Lists"
1815
- msgstr ""
1816
-
1817
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:544
1818
- msgid "You do not have permission to delete list"
1819
  msgstr ""
1820
 
1821
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:549
1822
- msgid "List has been deleted successfully!"
 
1823
  msgstr ""
1824
 
1825
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:564
1826
- msgid "List(s) have been deleted successfully"
 
 
 
1827
  msgstr ""
1828
 
1829
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:567
1830
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:28
1831
- msgid "Please select list"
1832
  msgstr ""
1833
 
1834
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:591
1835
- msgid "No lists avaliable."
1836
  msgstr ""
1837
 
1838
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:99
1839
- msgid "Campaigns > Broadcast"
1840
  msgstr ""
1841
 
1842
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:151
1843
- msgid "Content of the selected template will be broadcasted."
1844
  msgstr ""
1845
 
1846
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:163
1847
- msgid "Contacts from the selected list will be notified."
1848
  msgstr ""
1849
 
1850
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-cron.php:144
1851
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:452
1852
- msgid "Campaign Sent!"
1853
  msgstr ""
1854
 
1855
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-form-widget.php:11
1856
- msgid "Email Subscribers Form"
1857
  msgstr ""
1858
 
1859
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:36
1860
  msgid "Settings have been saved successfully!"
1861
  msgstr ""
1862
 
1863
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:56
1864
  msgid "Sync WordPress Users?"
1865
  msgstr ""
1866
 
1867
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:58
1868
  msgid ""
1869
  "Whenever someone signup, it will automatically be added into selected list"
1870
  msgstr ""
1871
 
1872
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:76
1873
  msgid "Select the list in which newly registered user will be subscribed to"
1874
  msgstr ""
1875
 
1876
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:88
1877
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:674
1878
  msgid "Save Settings"
1879
  msgstr ""
1880
 
1881
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:95
1882
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:68
1883
  msgid "Sync"
1884
  msgstr ""
1885
 
1886
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:143
1887
  msgid "Audience > Sync Contacts"
1888
  msgstr ""
1889
 
1890
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:161
1891
  msgid "WordPress"
1892
  msgstr ""
1893
 
1894
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-tools.php:31
1895
- #, php-format
1896
- msgid "Test email to %s"
1897
- msgstr ""
1898
-
1899
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-tools.php:35
1900
- msgid "Email has been sent. Please check your inbox"
1901
- msgstr ""
1902
-
1903
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:26
1904
- msgid "Contact"
1905
- msgstr ""
1906
-
1907
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:41
1908
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:192
1909
- msgid "Add New Contact"
1910
  msgstr ""
1911
 
1912
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:59
1913
- msgid "Import Contacts"
1914
  msgstr ""
1915
 
1916
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:70
1917
- msgid "New"
1918
  msgstr ""
1919
 
1920
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:127
1921
- msgid "Audience > Contacts"
1922
  msgstr ""
1923
 
1924
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:197
1925
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:502
1926
- msgid "Edit Contact"
 
 
1927
  msgstr ""
1928
 
1929
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:282
1930
- msgid "Contact already exist."
 
1931
  msgstr ""
1932
 
1933
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:298
1934
- msgid "Contact has been added successfully!"
1935
  msgstr ""
1936
 
1937
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:300
1938
- msgid "Contact has been updated successfully!"
1939
  msgstr ""
1940
 
1941
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:307
1942
- msgid "Please Enter First Name"
1943
  msgstr ""
1944
 
1945
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:317
1946
- msgid "Please Enter Valid Email Address"
1947
  msgstr ""
1948
 
1949
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:497
1950
- msgid "Contact updated successfully!"
1951
  msgstr ""
1952
 
1953
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:534
1954
- msgid "No list found"
1955
  msgstr ""
1956
 
1957
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:556
1958
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:735
1959
- msgid "List(s)"
1960
  msgstr ""
1961
 
1962
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:567
1963
- msgid "Save Changes"
1964
  msgstr ""
1965
 
1966
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:710
1967
- #, php-format
1968
- msgid "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\">Edit</a>"
1969
  msgstr ""
1970
 
1971
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:711
1972
- #, php-format
1973
- msgid ""
1974
- "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\" onclick=\"return "
1975
- "checkDelete()\">Delete</a>"
1976
  msgstr ""
1977
 
1978
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:717
1979
- #, php-format
1980
- msgid ""
1981
- "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\">Resend "
1982
- "Confirmation<a>"
1983
  msgstr ""
1984
 
1985
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:769
1986
- msgid "Move To List"
1987
  msgstr ""
1988
 
1989
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:770
1990
- msgid "Add To List"
 
 
 
 
1991
  msgstr ""
1992
 
1993
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:771
1994
- msgid "Change Status"
1995
  msgstr ""
1996
 
1997
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:786
1998
- msgid "Search Contacts"
1999
  msgstr ""
2000
 
2001
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:791
2002
- msgid "All Statuses"
2003
  msgstr ""
2004
 
2005
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:797
2006
- msgid "All Lists"
2007
  msgstr ""
2008
 
2009
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:886
2010
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:948
2011
- msgid "Contact(s) have been deleted successfully!"
2012
  msgstr ""
2013
 
2014
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:918
2015
- msgid "Confirmation email has been sent successfully!"
2016
  msgstr ""
2017
 
2018
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:936
2019
- msgid "Please select subscribers to update."
2020
  msgstr ""
2021
 
2022
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:959
2023
- msgid "Please select status."
2024
  msgstr ""
2025
 
2026
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:969
2027
- msgid "Status has been changed successfully!"
 
 
 
2028
  msgstr ""
2029
 
2030
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:989
2031
- msgid "Contact(s) have been moved to list successfully!"
 
2032
  msgstr ""
2033
 
2034
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:1009
2035
- msgid "Contact(s) have been added to list successfully!"
2036
  msgstr ""
2037
 
2038
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:1020
2039
- msgid "No contacts avaliable."
 
2040
  msgstr ""
2041
 
2042
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:116
2043
  msgid "General"
2044
  msgstr ""
2045
 
2046
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:117
2047
  msgid "Notifications"
2048
  msgstr ""
2049
 
2050
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:118
2051
  msgid "Email Sending"
2052
  msgstr ""
2053
 
2054
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:119
2055
  msgid "Security"
2056
  msgstr ""
2057
 
2058
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:165
2059
  msgid "Sender"
2060
  msgstr ""
2061
 
2062
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:170
2063
  msgid "Choose a FROM name for all the emails to be sent from this plugin."
2064
  msgstr ""
2065
 
2066
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:179
2067
  msgid ""
2068
  "Choose a FROM email address for all the emails to be sent from this plugin"
2069
  msgstr ""
2070
 
2071
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:181
2072
  msgid "Email Address"
2073
  msgstr ""
2074
 
2075
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:189
2076
  msgid "Email Addresses"
2077
  msgstr ""
2078
 
2079
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:191
2080
  msgid ""
2081
  "Enter the admin email addresses that should receive notifications (separated "
2082
  "by comma)."
2083
  msgstr ""
2084
 
2085
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:197
2086
  msgid "Email Type"
2087
  msgstr ""
2088
 
2089
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:198
2090
  msgid ""
2091
  "Select whether to send HTML or Plain Text email using WordPress or PHP mail()"
2092
  ". We recommend to send email using WordPres"
2093
  msgstr ""
2094
 
2095
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:206
2096
  msgid "Opt-in Type"
2097
  msgstr ""
2098
 
2099
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:215
2100
  msgid "Image Size"
2101
  msgstr ""
2102
 
2103
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:218
2104
  msgid ""
2105
  "<p>Select image size for {{POSTIMAGE}} to be shown in the Post Notification "
2106
  "Emails.</p>"
2107
  msgstr ""
2108
 
2109
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:224
2110
  msgid "Track Opens"
2111
  msgstr ""
2112
 
2113
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:226
2114
  msgid "Check this if you want to track email opening."
2115
  msgstr ""
2116
 
2117
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:238
 
 
 
 
2118
  msgid "Show Unsubscribe Message In Email Footer"
2119
  msgstr ""
2120
 
2121
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:239
2122
  msgid ""
2123
  "Add text which you want your contact to see in footer to unsubscribe. Use "
2124
  "{{UNSUBSCRIBE-LINK}} keyword to add unsubscribe link."
2125
  msgstr ""
2126
 
2127
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:246
2128
  msgid "Subscription Success/ Error Messages"
2129
  msgstr ""
2130
 
2131
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:253
2132
  msgid "You have been subscribed successfully!"
2133
  msgstr ""
2134
 
2135
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:255
2136
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:285
2137
  msgid "Success Message"
2138
  msgstr ""
2139
 
2140
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:256
2141
  msgid ""
2142
  "Show this message if contact is successfully subscribed from Double Opt-In "
2143
  "(Confirmation) Email"
2144
  msgstr ""
2145
 
2146
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:264
2147
  msgid ""
2148
  "Oops.. Your request couldn't be completed. This email address seems to be "
2149
  "already subscribed / blocked."
2150
  msgstr ""
2151
 
2152
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:266
2153
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:297
2154
  msgid "Error Message"
2155
  msgstr ""
2156
 
2157
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:267
2158
  msgid ""
2159
  "Show this message if any error occured after clicking confirmation link from "
2160
  "Double Opt-In (Confirmation) Email."
2161
  msgstr ""
2162
 
2163
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:275
2164
  msgid "Unsubscribe Success/ Error Messages"
2165
  msgstr ""
2166
 
2167
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:283
2168
  msgid ""
2169
  "Thank You, You have been successfully unsubscribed. You will no longer hear "
2170
  "from us."
2171
  msgstr ""
2172
 
2173
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:286
2174
  msgid ""
2175
  "Once contact clicks on unsubscribe link, he/she will be redirected to a page "
2176
  "where this message will be shown."
2177
  msgstr ""
2178
 
2179
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:298
2180
  msgid ""
2181
  "Show this message if any error occured after clicking on unsubscribe link."
2182
  msgstr ""
2183
 
2184
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:328
2185
  msgid "Welcome Email"
2186
  msgstr ""
2187
 
2188
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:338
2189
  msgid "Enable?"
2190
  msgstr ""
2191
 
2192
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:339
2193
  msgid "Send welcome email to new contact after signup."
2194
  msgstr ""
2195
 
2196
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:359
2197
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:388
2198
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:423
2199
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:465
2200
  msgid "Content"
2201
  msgstr ""
2202
 
2203
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:360
2204
  msgid ""
2205
  "Available keywords. {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}, {{EMAIL}}, {{LIST}"
2206
  "}, {{UNSUBSCRIBE-LINK}}"
2207
  msgstr ""
2208
 
2209
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:367
2210
  msgid "Confirmation Email"
2211
  msgstr ""
2212
 
2213
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:389
2214
  msgid ""
2215
  "If Double Optin is set, contact will receive confirmation email with above "
2216
  "content. You can use {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}, {{EMAIL}}, "
2217
  "{{SUBSCRIBE-LINK}} keywords"
2218
  msgstr ""
2219
 
2220
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:397
2221
  msgid "Admin Notification On New Subscription"
2222
  msgstr ""
2223
 
2224
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:402
2225
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:438
2226
  msgid "Notify?"
2227
  msgstr ""
2228
 
2229
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:408
2230
  msgid "Set this option to \"Yes\" to notify admin(s) for new contact signup."
2231
  msgstr ""
2232
 
2233
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:417
2234
  msgid ""
2235
  "Subject for the admin email whenever a new contact signs up and is confirmed"
2236
  msgstr ""
2237
 
2238
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:418
2239
  msgid "New email subscription"
2240
  msgstr ""
2241
 
2242
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:425
2243
  msgid ""
2244
  "Content for the admin email whenever a new subscriber signs up and is "
2245
  "confirmed. Available Keywords: {{NAME}}, {{EMAIL}}, {{LIST}}"
2246
  msgstr ""
2247
 
2248
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:433
2249
  msgid "Admin Notification On Every Campaign Sent"
2250
  msgstr ""
2251
 
2252
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:444
2253
  msgid "Set this option to \"Yes\" to notify admin(s) on every campaign sent."
2254
  msgstr ""
2255
 
2256
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:466
2257
  msgid ""
2258
  "Send report to admin(s) whenever campaign is successfully sent to all "
2259
  "contacts. Available Keywords: {{DATE}}, {{SUBJECT}}, {{COUNT}}"
2260
  msgstr ""
2261
 
2262
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:483
2263
  msgid "Cron URL"
2264
  msgstr ""
2265
 
2266
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:493
2267
  msgid "Disable WordPress Cron"
2268
  msgstr ""
2269
 
2270
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:494
2271
  msgid ""
2272
  "Check this if you do not want Email Subscribers to use WP cron for sending "
2273
  "emails"
2274
  msgstr ""
2275
 
2276
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:503
2277
  msgid "Maximum Emails To Send In An Hour"
2278
  msgstr ""
2279
 
2280
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:504
2281
  msgid "Total emails your host can send in an hour."
2282
  msgstr ""
2283
 
2284
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:514
2285
  msgid "Send Test Email"
2286
  msgstr ""
2287
 
2288
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:515
2289
  msgid "Enter email address to send test email."
2290
  msgstr ""
2291
 
2292
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:524
2293
  msgid "Blocked Domain(s)"
2294
  msgstr ""
2295
 
2296
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:526
2297
  msgid ""
2298
  "Seeing spam signups from particular domains? Enter domains names (one per "
2299
  "line) that you want to block here."
2300
  msgstr ""
2301
 
2302
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/notices/class-es-admin-notices.php:97
2303
- msgid "Action failed. Please refresh the page and retry."
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2304
  msgstr ""
2305
 
2306
- #. %d: interval
2307
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/upgrade/class-es-background-process.php:189
2308
  #, php-format
2309
- msgid "Every %d minutes"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2310
  msgstr ""
2311
 
2312
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:662
2313
  msgid "Please select an option"
2314
  msgstr ""
2315
 
2316
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:857
2317
  msgid "I no longer need the plugin"
2318
  msgstr ""
2319
 
2320
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:861
2321
  msgid "I'm switching to a different plugin"
2322
  msgstr ""
2323
 
2324
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:863
2325
  msgid "Please share which plugin"
2326
  msgstr ""
2327
 
2328
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:866
2329
  msgid "I couldn't get the plugin to work"
2330
  msgstr ""
2331
 
2332
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:870
2333
  msgid "It's a temporary deactivation"
2334
  msgstr ""
2335
 
2336
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:874
2337
  msgid "Other"
2338
  msgstr ""
2339
 
2340
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:876
2341
  msgid "Please share the reason"
2342
  msgstr ""
2343
 
2344
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:883
2345
  msgid "Quick Feedback"
2346
  msgstr ""
2347
 
2348
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:884
2349
  #, php-format
2350
  msgid "If you have a moment, please share why you are deactivating %s:"
2351
  msgstr ""
2352
 
2353
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:907
2354
  #, php-format
2355
  msgid "Submit %s Deactivate"
2356
  msgstr ""
2357
 
2358
- #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback-v-1-0-7.php:909
2359
  #, php-format
2360
  msgid "Skip %s Deactivate"
2361
  msgstr ""
3
  msgstr ""
4
  "Project-Id-Version: Email Subscribers & Newsletters\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2019-09-11 05:14+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
15
  "X-Generator: Loco https://localise.biz/\n"
16
  "X-Loco-Version: 2.2.0; wp-5.1"
17
 
18
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:170
19
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:11
20
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:12
21
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:11
23
  msgid "Email Subscribers"
24
  msgstr ""
25
 
26
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:173
27
  msgid "Dashboard"
28
  msgstr ""
29
 
30
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:174
31
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:91
 
32
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:20
33
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:66
34
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:307
35
  msgid "Lists"
36
  msgstr ""
37
 
38
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:175
39
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/help.php:112
40
  msgid "Post Notifications"
41
  msgstr ""
42
 
43
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:176
44
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:201
 
 
45
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:202
46
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:34
47
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:236
48
  msgid "Broadcast"
49
  msgstr ""
50
 
51
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:177
52
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:20
53
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:43
54
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:82
55
  msgid "Reports"
56
  msgstr ""
57
 
58
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:178
59
  msgid "Audience"
60
  msgstr ""
61
 
62
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:179
63
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:90
64
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:236
65
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:36
66
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:50
67
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:79
68
  msgid "Campaigns"
69
  msgstr ""
70
 
71
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:180
72
  msgid "Settings"
73
  msgstr ""
74
 
75
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:181
76
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:89
77
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:19
78
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:20
79
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:43
80
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:68
81
  msgid "Forms"
82
  msgstr ""
83
 
84
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:182
85
  msgid "Template Preview"
86
  msgstr ""
87
 
88
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:392
89
  msgid "Something went wrong"
90
  msgstr ""
91
 
92
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:63
93
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:90
 
94
  msgid "Send"
95
  msgstr ""
96
 
97
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:64
98
  msgid ""
99
  "Allow Email Subscribers to track plugin usage. We guarantee no sensitive "
100
  "data is collected."
101
  msgstr ""
102
 
103
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:130
104
+ msgid "Not a member yet?"
105
+ msgstr ""
106
+
107
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:132
108
+ msgid "Join"
109
+ msgstr ""
110
+
111
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:132
112
+ msgid "Email Subscribers Secret Club"
113
+ msgstr ""
114
+
115
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:132
116
+ msgid "on Facebook"
117
+ msgstr ""
118
+
119
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback.php:136
120
+ msgid "Join Now"
121
+ msgstr ""
122
+
123
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:99
124
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:674
125
+ msgid "Subscribed"
126
+ msgstr ""
127
+
128
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:100
129
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:675
130
+ msgid "Unconfirmed"
131
+ msgstr ""
132
+
133
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:101
134
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:676
135
+ msgid "Unsubscribed"
136
+ msgstr ""
137
+
138
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:116
139
+ msgid "Disable email notification"
140
+ msgstr ""
141
+
142
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:117
143
+ msgid "Send email immediately"
144
+ msgstr ""
145
+
146
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:118
147
+ msgid "Send email via cron job"
148
+ msgstr ""
149
+
150
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:261
151
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:275
152
+ msgid "Select Status"
153
+ msgstr ""
154
+
155
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:262
156
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:581
157
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:798
158
+ msgid "Enable"
159
+ msgstr ""
160
+
161
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:263
162
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:582
163
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:799
164
+ msgid "Disable"
165
+ msgstr ""
166
+
167
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:302
168
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:124
169
+ msgid "Select Template"
170
+ msgstr ""
171
+
172
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:331
173
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:195
174
+ msgid "Active"
175
+ msgstr ""
176
+
177
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:332
178
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:195
179
+ msgid "Inactive"
180
+ msgstr ""
181
+
182
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:382
183
+ msgid "Select Categories"
184
+ msgstr ""
185
+
186
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:396
187
+ msgid "All Categories (Also include all categories which will create later)"
188
+ msgstr ""
189
+
190
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:419
191
+ msgid "No Custom Post Types Available"
192
+ msgstr ""
193
+
194
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:440
195
+ msgid "Single Opt-In"
196
+ msgstr ""
197
+
198
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:441
199
+ msgid "Double Opt-In"
200
+ msgstr ""
201
+
202
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:449
203
+ msgid "Full Size"
204
+ msgstr ""
205
+
206
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:450
207
+ msgid "Medium Size"
208
+ msgstr ""
209
+
210
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:451
211
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:217
212
+ msgid "Thumbnail"
213
+ msgstr ""
214
+
215
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-mailer.php:113
216
+ msgid "Welcome !"
217
+ msgstr ""
218
+
219
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-install.php:636
220
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/upgrade/es-update-functions.php:780
221
+ msgid ""
222
+ "Your subscription was successful! Kindly check your mailbox and confirm your "
223
+ "subscription. If you don't see the email within a few minutes, check the "
224
+ "spam/junk folder."
225
+ msgstr ""
226
+
227
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:136
228
+ msgid "Email Subscribers Pro"
229
+ msgstr ""
230
+
231
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:151
232
+ msgid "Get Starter Now!"
233
+ msgstr ""
234
+
235
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:163
236
+ #, php-format
237
+ msgid ""
238
+ "WordPress Cron is disable on your site. Email notifications from Email "
239
+ "Subscribers plugin will not be sent automatically. <a href=\"%s\" "
240
+ "target=\"_blank\" >Here's how you can enable it.</a>"
241
+ msgstr ""
242
+
243
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:164
244
+ #, php-format
245
+ msgid "Or schedule Cron in <a href=\"%s\" target=\"_blank\">cPanel</a>"
246
+ msgstr ""
247
+
248
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:165
249
+ #, php-format
250
+ msgid ""
251
+ "Or use <strong><a href=\"%s\" target=\"_blank\">Email Subscribers Pro</a>"
252
+ "</strong> for automatic Cron support"
253
+ msgstr ""
254
+
255
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:166
256
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:176
257
+ msgid "OK, I Got it!"
258
+ msgstr ""
259
+
260
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/class-email-subscribers.php:175
261
+ #, php-format
262
+ msgid ""
263
+ "📣 <b>[Coming Soon]</b> New Feature : Send <strong>Post Digest</strong> using "
264
+ "Email Subscribers <a href=\"%s\" target=\"_blank\">[Read more]</a>"
265
  msgstr ""
266
 
267
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/pro-features.php:59
449
  "from you."
450
  msgstr ""
451
 
452
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/es-backward.php:111
453
+ msgid "Confirm Your Subscription!"
 
 
 
 
454
  msgstr ""
455
 
456
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:110
457
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:387
458
+ msgid "Please enter email address"
 
 
 
459
  msgstr ""
460
 
461
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:111
462
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:388
463
+ msgid "You need to wait for sometime before subscribing again"
464
  msgstr ""
465
 
466
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:112
467
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:389
468
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/upgrade/es-update-functions.php:780
469
+ msgid "Successfully Subscribed."
 
470
  msgstr ""
471
 
472
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:114
473
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:390
474
+ msgid "Email Address already exists!"
475
  msgstr ""
476
 
477
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:115
478
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:391
479
+ msgid "Oops.. Unexpected error occurred."
 
 
480
  msgstr ""
481
 
482
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:116
483
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:392
484
+ msgid "Invalid email address"
485
  msgstr ""
486
 
487
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:117
488
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:394
489
+ msgid "Please try after some time"
490
  msgstr ""
491
 
492
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:205
493
+ msgid "You are already subscribed!"
 
494
  msgstr ""
495
 
496
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:207
497
+ msgid "You are already unsubscribed!"
498
  msgstr ""
499
 
500
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/class-email-subscribers-public.php:213
501
+ msgid "Sorry, we couldn't find you. Please contact admin."
502
  msgstr ""
503
 
504
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:7
505
+ #, php-format
506
+ msgid ""
507
+ "Created two Lists - <a href=\"%s\" target=\"_blank\">Main</a> and <a "
508
+ "href=\"%s\" target=\"_blank\">Test</a>"
509
  msgstr ""
510
 
511
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:8
512
+ msgid "Added yourself"
 
513
  msgstr ""
514
 
515
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:8
516
+ msgid "to both lists"
 
 
517
  msgstr ""
518
 
519
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:9
520
+ #, php-format
521
+ msgid ""
522
+ "Created a <a href=\"%s\" target=\"_blank\"> subscription / lead collection "
523
+ "optin form</a>"
524
  msgstr ""
525
 
526
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:10
527
+ #, php-format
528
+ msgid ""
529
+ "Added optin form to <a href=\"%s\" target=\"_blank\">default widget area</a> "
530
+ "to show it on your site"
531
  msgstr ""
532
 
533
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:11
534
+ #, php-format
535
+ msgid ""
536
+ "Created two Campaigns - \"<a href=\"%s\" target=\"_blank\">Newsletter "
537
+ "Broadcast</a>\" and \"<a href=\"%s\" target=\"_blank\">New Post "
538
+ "Notification</a>\""
539
  msgstr ""
540
 
541
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:15
542
+ msgid ""
543
+ "Next step is to test everything by <strong>sending a test mail</strong>. <br>"
544
+ "We've already added you, but recommend adding another email to test."
545
  msgstr ""
546
 
547
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:18
548
+ msgid "Add an email to send a test to:"
549
  msgstr ""
550
 
551
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:20
552
+ msgid "Send a test email"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
553
  msgstr ""
554
 
555
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:28
579
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:47
580
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:72
581
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:95
582
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:67
583
  #, php-format
584
  msgid "I have read and agreed to your %s."
585
  msgstr ""
587
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:47
588
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:72
589
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/onboarding.php:95
590
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:67
591
  msgid "Privacy Policy"
592
  msgstr ""
593
 
903
  "target=\"_blank\">add Rainmaker’s form in Email Subscribers</a>"
904
  msgstr ""
905
 
906
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/pricing.php:61
907
+ msgid "Ready to Grow Your Audience?"
908
+ msgstr ""
909
+
910
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/pricing.php:63
911
+ msgid "Get Starter @ $49/year"
912
+ msgstr ""
913
+
914
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/pricing.php:67
915
+ msgid "Get Pro @ $129/year"
916
+ msgstr ""
917
+
918
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/pricing.php:70
919
+ msgid "OR @ $9/month"
920
  msgstr ""
921
 
922
  #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:20
923
+ msgid "Here's a quick look at changes within the plugin:"
924
+ msgstr ""
925
+
926
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:21
927
  #, php-format
928
  msgid ""
929
  "1. Newsletters are now <b>Broadcasts</b>. Broadcasts and Post notifications "
930
  "are now merged in <a href=\"%s\" target=\"_blank\">Campaigns</a>"
931
  msgstr ""
932
 
933
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:22
934
  #, php-format
935
  msgid ""
936
  "2. Subscribers are now called <b>Contacts</b> and part of an <a href=\"%s\" "
937
  "target=\"_blank\">Audience</a>"
938
  msgstr ""
939
 
940
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:23
941
  #, php-format
942
  msgid "3. Groups are now called <a href=\"%s\" target=\"_blank\">Lists</a>"
943
  msgstr ""
944
 
945
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:24
946
  #, php-format
947
  msgid "4. Find <a href=\"%s\" target=\"_blank\">Forms</a> here"
948
  msgstr ""
949
 
950
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:26
951
  msgid "Explore all changes"
952
  msgstr ""
953
 
954
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:28
955
  msgid "You are all setup 👍"
956
  msgstr ""
957
 
958
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:29
959
  msgid "Here are the things you can do next"
960
  msgstr ""
961
 
962
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:31
963
  #, php-format
964
  msgid ""
965
  "1.Check <a href=\"%s\" target=\"blank\" >optin form</a> on your homepage"
966
  msgstr ""
967
 
968
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:32
969
  #, php-format
970
  msgid ""
971
  "2. <a href=\"%s\" target=\"blank\" ><b>Review and rearrange the form from "
973
  "adding a form to another place from this help article.</a>"
974
  msgstr ""
975
 
976
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:33
977
  #, php-format
978
  msgid ""
979
  "3. Go ahead and take a look around. Tweak settings, review <a href=\"%s\" "
980
  "target=\"_blank\">design templates</a> or go through the documentation."
981
  msgstr ""
982
 
983
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:34
984
  msgid "4. And if you haven't already, signup for the free course below."
985
  msgstr ""
986
 
987
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:37
988
  msgid "Hello! 👋"
989
  msgstr ""
990
 
991
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:38
992
  msgid ""
993
  "Email Subscribers is a complete newsletter plugin that lets you collect "
994
  "leads, send automated new blog post notification emails, send newsletters "
995
  "and more. It’s your tool to build an audience and engage with them ongoingly."
996
  msgstr ""
997
 
998
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:39
999
  msgid "We’ve setup the basics to save you time."
1000
  msgstr ""
1001
 
1002
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:40
1003
  msgid "Please read this carefully and make changes as needed"
1004
  msgstr ""
1005
 
1006
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:42
1007
  msgid ""
1008
  "1. We created two lists - <b>Main List</b> and <b>Test List</b>. Also added "
1009
  "yourself to the Test List. That way you can test campaigns on the Test List "
1010
  "before sending them to the Main List ;-)"
1011
  msgstr ""
1012
 
1013
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:43
1014
  #, php-format
1015
  msgid ""
1016
  "2. We also created a lead collection / subscription form and added it the "
1020
  "article.</a>"
1021
  msgstr ""
1022
 
1023
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:44
1024
  #, php-format
1025
  msgid ""
1026
  "3. BTW, we also sent a few test emails to the Test List. <a href=\"%s\" "
1028
  "post notification).<b> So check your email \""
1029
  msgstr ""
1030
 
1031
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:44
1032
  msgid "\" and confirm you got those test emails.</b>"
1033
  msgstr ""
1034
 
1035
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:45
1036
  #, php-format
1037
  msgid ""
1038
  "4. Go ahead and take a look around. Tweak settings, review <a href=\"%s\" "
1039
  "target=\"_blank\">design templates</a> or go through the documentation."
1040
  msgstr ""
1041
 
1042
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:46
1043
  msgid "5. And don’t forget to signup for the free course below."
1044
  msgstr ""
1045
 
1046
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:53
1047
  msgid "Free Course - Email Marketing Mastery"
1048
  msgstr ""
1049
 
1050
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:57
1051
  msgid "In short 5 weeks: build your list and succeed with email marketing"
1052
  msgstr ""
1053
 
1054
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:58
1055
  msgid ""
1056
  "Do you want to build your list, keep off spam, write emails that people open "
1057
  "and click through? Do you want to build your brand and nurture an amazing "
1059
  "\t\t\t\t\t\t\t\t\t\t\t\tEnter your name and email on the form to get it all."
1060
  msgstr ""
1061
 
1062
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:69
1063
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:217
1064
  #: ../../../../wpRepos/gitlab/email-subscribers/public/partials/class-es-shortcode.php:124
1065
  msgid "Subscribe"
1066
  msgstr ""
1067
 
1068
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:87
1069
  msgid "Overview"
1070
  msgstr ""
1071
 
1072
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:88
1073
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:451
1074
  msgid "Active Contacts"
1075
  msgstr ""
1076
 
1077
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:94
1078
  msgid "Help & How to's"
1079
  msgstr ""
1080
 
1081
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:95
1082
  msgid "How to create and show subscription forms."
1083
  msgstr ""
1084
 
1085
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:96
1086
  msgid "How to create a new campaign for new blog post "
1087
  msgstr ""
1088
 
1089
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:97
1090
  msgid "How to create new template for Post Notification or Broadcast"
1091
  msgstr ""
1092
 
1093
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:98
1094
  msgid "How to Create and Send Broadcasts Emails"
1095
  msgstr ""
1096
 
1097
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:99
1098
  msgid "How to add WordPress users to your lists"
1099
  msgstr ""
1100
 
1101
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:100
1102
  msgid "All Documentation"
1103
  msgstr ""
1104
 
1105
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:103
1106
  msgid "<span>Join our</span> Email Subscribers Secret Club!"
1107
  msgstr ""
1108
 
1109
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:104
1110
  msgid ""
1111
  "Be a part of growing Email Subscribers community. Share your valuable "
1112
  "feedback and get quick help from community. It's a great way to connect with "
1113
  "real people"
1114
  msgstr ""
1115
 
1116
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:109
1117
  msgid "Questions? Need Help?"
1118
  msgstr ""
1119
 
1120
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:110
1121
  msgid "Contact Us"
1122
  msgstr ""
1123
 
1124
+ #: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:111
1125
  #, php-format
1126
  msgid "Version: %s"
1127
  msgstr ""
1128
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1129
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:42
1130
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:48
1131
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:989
1132
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:1010
1133
  msgid "Please select list."
1134
  msgstr ""
1135
 
1159
  msgstr ""
1160
 
1161
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:238
 
1162
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:206
1163
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:43
1164
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:199
1165
  msgid "Add New"
1166
  msgstr ""
1167
 
1168
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:240
1169
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:53
1170
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:80
1171
  msgid "Manage Templates"
1172
  msgstr ""
1173
 
1174
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:249
1175
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:77
1176
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:136
1177
  msgid "Select List"
1178
  msgstr ""
1179
 
1209
  "(Optional) Select custom post type for which you want to send notification."
1210
  msgstr ""
1211
 
1212
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:72
1213
+ msgid "Widget Title"
 
1214
  msgstr ""
1215
 
1216
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:76
1217
+ msgid "Short description about subscription form"
 
1218
  msgstr ""
1219
 
1220
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:80
1221
+ msgid "Display Name Field"
1222
  msgstr ""
1223
 
1224
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:82
1225
+ msgid "YES"
1226
  msgstr ""
1227
 
1228
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:83
1229
+ msgid "NO"
1230
  msgstr ""
1231
 
1232
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:87
1233
+ msgid "Subscriber Group"
1234
  msgstr ""
1235
 
1236
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:11
1237
+ msgid "Email Subscribers Widget"
 
1238
  msgstr ""
1239
 
1240
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:49
1241
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:332
1242
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:70
1243
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:354
1244
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:426
1245
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:462
1246
+ msgid "Yes"
1247
  msgstr ""
1248
 
1249
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:49
1250
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:336
1251
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:67
1252
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:354
1253
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:427
1254
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:463
1255
+ msgid "No"
1256
  msgstr ""
1257
 
1258
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-info.php:22
1259
+ msgid "<span class=\"es-fire-sale\"> 🔥 </span> Go Pro"
1260
  msgstr ""
1261
 
1262
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:15
1263
+ msgid "Import Subscribers"
1264
  msgstr ""
1265
 
1266
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:27
1267
+ msgid "Sorry, you do not have permission to import contacts."
1268
+ msgstr ""
1269
+
1270
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:129
1271
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:133
1272
  #, php-format
1273
+ msgid "Total %d contacts have been imported successfully!"
1274
  msgstr ""
1275
 
1276
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:137
 
1277
  #, php-format
1278
+ msgid "%d contacts are already exists."
 
 
1279
  msgstr ""
1280
 
1281
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1282
  #, php-format
1283
  msgid "%d contacts are invalid."
1284
  msgstr ""
1285
 
1286
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:152
1287
  msgid "Error: Please Select List"
1288
  msgstr ""
1289
 
1290
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:156
1291
  msgid "Error: Please select status"
1292
  msgstr ""
1293
 
1294
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:160
1295
  msgid "Error: Please Upload only CSV File"
1296
  msgstr ""
1297
 
1298
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:164
1299
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:168
1300
  msgid "Error: Please Upload File"
1301
  msgstr ""
1302
 
1303
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:187
1304
  msgid "Select CSV file"
1305
  msgstr ""
1306
 
1307
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:189
1308
  msgid "Check CSV structure"
1309
  msgstr ""
1310
 
1311
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:190
1312
  msgid "from here"
1313
  msgstr ""
1314
 
1315
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:201
1316
  msgid "Select status"
1317
  msgstr ""
1318
 
1319
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:213
1320
  msgid "Select list"
1321
  msgstr ""
1322
 
1323
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:226
1324
  msgid "Import"
1325
  msgstr ""
1326
 
1327
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-import-subscribers.php:243
1328
  msgid "Audience > Import Contacts"
1329
  msgstr ""
1330
 
1331
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:19
1332
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:20
1333
+ msgid "Campaign"
1334
  msgstr ""
1335
 
1336
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:51
1337
+ msgid "Create Post Notification"
1338
  msgstr ""
1339
 
1340
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:52
1341
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:87
1342
+ msgid "Send Broadcast"
1343
  msgstr ""
1344
 
1345
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:172
1346
+ msgid "No Campaigns Found."
1347
  msgstr ""
1348
 
1349
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:209
1350
+ msgid "All"
1351
  msgstr ""
1352
 
1353
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:260
1354
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:433
1355
+ #, php-format
1356
+ msgid "<a href=\"?page=%s&action=%s&list=%s&_wpnonce=%s\">Edit</a>"
1357
  msgstr ""
1358
 
1359
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:261
1360
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:434
1361
+ #, php-format
1362
+ msgid ""
1363
+ "<a href=\"?page=%s&action=%s&list=%s&_wpnonce=%s\" onclick=\"return "
1364
+ "checkDelete()\">Delete</a>"
1365
  msgstr ""
1366
 
1367
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:280
1368
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:223
1369
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:450
1370
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:284
1371
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:684
1372
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:181
1373
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:184
1374
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:740
1375
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/partials/class-es-shortcode.php:144
1376
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/partials/class-es-shortcode.php:144
1377
+ msgid "Name"
1378
  msgstr ""
1379
 
1380
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:281
1381
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:278
1382
+ msgid "Type"
1383
  msgstr ""
1384
 
1385
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:282
1386
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:297
1387
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:19
1388
+ msgid "List"
1389
  msgstr ""
1390
 
1391
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:283
1392
+ msgid "Categories"
1393
  msgstr ""
1394
 
1395
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:284
1396
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:298
1397
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:98
1398
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:279
1399
+ msgid "Status"
1400
  msgstr ""
1401
 
1402
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:324
1403
+ msgid "Search Campaigns"
1404
  msgstr ""
1405
 
1406
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:362
1407
+ msgid "You are not allowed to delete campaign."
1408
  msgstr ""
1409
 
1410
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:367
1411
+ msgid "Campaign has been deleted successfully!"
1412
  msgstr ""
1413
 
1414
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:386
1415
+ msgid "Campaign(s) have been deleted successfully!"
 
 
 
 
 
 
1416
  msgstr ""
1417
 
1418
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:391
1419
+ msgid "Please check campaign(s) to delete."
1420
  msgstr ""
1421
 
1422
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:31
1423
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:307
1424
+ msgid "Please Select List"
1425
  msgstr ""
1426
 
1427
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:42
1428
+ msgid "No data available"
1429
  msgstr ""
1430
 
1431
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:65
1432
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:50
1433
+ msgid "Export Contacts"
1434
  msgstr ""
1435
 
1436
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:73
1437
+ msgid "No."
 
 
 
 
1438
  msgstr ""
1439
 
1440
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:74
1441
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:27
1442
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:176
1443
+ msgid "Contacts"
1444
  msgstr ""
1445
 
1446
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:75
1447
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:148
1448
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:282
1449
+ msgid "Total Contacts"
 
1450
  msgstr ""
1451
 
1452
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:76
1453
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:454
1454
+ msgid "Export"
1455
  msgstr ""
1456
 
1457
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:90
1458
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:452
1459
+ msgid "All Contacts"
 
1460
  msgstr ""
1461
 
1462
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:91
1463
+ msgid "Subscribed Contacts"
 
 
 
 
1464
  msgstr ""
1465
 
1466
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:92
1467
+ msgid "Unsubscribed Contacts"
1468
  msgstr ""
1469
 
1470
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:94
1471
+ msgid "Unconfirmed Contacts"
1472
  msgstr ""
1473
 
1474
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:112
1475
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:399
1476
+ msgid "Download"
1477
  msgstr ""
1478
 
1479
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:130
1480
+ msgid "Audience > Export Contacts"
1481
  msgstr ""
1482
 
1483
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:222
1484
+ msgid "Export the Subscribers"
1485
  msgstr ""
1486
 
1487
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:294
1488
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:540
1489
+ msgid "First Name"
1490
  msgstr ""
1491
 
1492
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:295
1493
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:545
1494
+ msgid "Last Name"
1495
  msgstr ""
1496
 
1497
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:296
1498
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:278
1499
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:97
1500
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:190
1501
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:550
1502
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:741
1503
+ #: ../../../../wpRepos/gitlab/email-subscribers/public/partials/class-es-shortcode.php:174
1504
+ msgid "Email"
1505
  msgstr ""
1506
 
1507
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:299
1508
+ msgid "Opt-In Type"
1509
  msgstr ""
1510
 
1511
+ #. __( 'List', 'email-subscribers' ),
1512
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:300
1513
+ msgid "Created On"
1514
  msgstr ""
1515
 
1516
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:393
1517
+ msgid "Invalid name"
1518
  msgstr ""
1519
 
1520
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:395
1521
+ msgid "Oops...unable to add subscriber"
1522
  msgstr ""
1523
 
1524
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:396
1525
+ msgid "You do not have permission to add subscriber"
 
 
 
1526
  msgstr ""
1527
 
1528
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:397
1529
+ msgid "Please select the list"
 
1530
  msgstr ""
1531
 
1532
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-subscription.php:398
1533
+ msgid "Invalid Captcha"
1534
  msgstr ""
1535
 
1536
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:42
1537
+ msgid "Audience > Lists"
1538
  msgstr ""
1539
 
1540
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:83
1541
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:528
1542
+ msgid "You do not have permission to edit list"
1543
  msgstr ""
1544
 
1545
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:85
1546
+ msgid "Please add list name"
1547
  msgstr ""
1548
 
1549
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:128
1550
+ msgid "List has been added successfully!"
1551
  msgstr ""
1552
 
1553
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:169
1554
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:532
1555
+ msgid "List has been updated successfully!"
1556
  msgstr ""
1557
 
1558
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:208
1559
+ msgid "Edit List"
1560
  msgstr ""
1561
 
1562
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:212
1563
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:77
1564
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:194
1565
+ msgid "Manage Lists"
1566
  msgstr ""
1567
 
1568
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:380
1569
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:389
1570
+ #, php-format
1571
+ msgid "<a href=\"%s\" target=\"_blank\">%d</a>"
1572
  msgstr ""
1573
 
1574
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:453
1575
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:686
1576
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:743
1577
+ msgid "Created"
1578
  msgstr ""
1579
 
1580
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:482
1581
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:714
1582
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:261
1583
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:344
1584
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:775
1585
+ msgid "Delete"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1586
  msgstr ""
1587
 
1588
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:492
1589
+ msgid "Search Lists"
1590
  msgstr ""
1591
 
1592
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:544
1593
+ msgid "You do not have permission to delete list"
 
 
 
1594
  msgstr ""
1595
 
1596
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:551
1597
+ msgid "List has been deleted successfully!"
 
1598
  msgstr ""
1599
 
1600
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:567
1601
+ msgid "List(s) have been deleted successfully"
1602
  msgstr ""
1603
 
1604
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:570
1605
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:31
1606
+ msgid "Please select list"
1607
  msgstr ""
1608
 
1609
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:594
1610
+ msgid "No lists avaliable."
1611
  msgstr ""
1612
 
1613
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-form-widget.php:11
1614
+ msgid "Email Subscribers Form"
 
 
1615
  msgstr ""
1616
 
1617
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:87
1618
+ msgid "You do not have permission to edit this form."
 
1619
  msgstr ""
1620
 
1621
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:90
1622
+ msgid "Please add form name."
 
1623
  msgstr ""
1624
 
1625
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:95
1626
+ msgid "Please select list(s) in which contact will be subscribed."
1627
  msgstr ""
1628
 
1629
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:141
1630
+ msgid "Form has been added successfully!"
1631
  msgstr ""
1632
 
1633
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:186
1634
+ msgid "Form has been updated successfully!"
1635
  msgstr ""
1636
 
1637
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:195
1638
+ msgid "Sorry, form not found"
 
1639
  msgstr ""
1640
 
1641
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:232
1642
+ msgid "New Form"
1643
  msgstr ""
1644
 
1645
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:234
1646
+ msgid "Edit Form"
1647
  msgstr ""
1648
 
1649
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:251
1650
+ msgid "Form Name"
 
1651
  msgstr ""
1652
 
1653
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:259
1654
+ msgid "Description"
 
1655
  msgstr ""
1656
 
1657
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:267
1658
+ msgid "Form Fields"
1659
  msgstr ""
1660
 
1661
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:272
1662
+ msgid "Field"
 
1663
  msgstr ""
1664
 
1665
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:273
1666
+ msgid "Show?"
1667
  msgstr ""
1668
 
1669
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:274
1670
+ msgid "Required?"
 
1671
  msgstr ""
1672
 
1673
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:275
1674
+ msgid "Label"
1675
  msgstr ""
1676
 
1677
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:296
1678
+ msgid "Button"
1679
  msgstr ""
1680
 
1681
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:308
1682
+ msgid "Contacts will be added into selected list(s)"
 
1683
  msgstr ""
1684
 
1685
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:326
1686
+ msgid "Allow contact to choose list(s)"
1687
  msgstr ""
1688
 
1689
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:327
1690
+ msgid "Allow contacts to choose list(s) in which they want to subscribe."
 
 
1691
  msgstr ""
1692
 
1693
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:356
 
1694
  #, php-format
1695
+ msgid ""
1696
+ "Secure your form and avoid spam signups with Email Subscribers Starter Plan "
1697
+ "<a target=\"_blank\" style=\"font-weight: bold; cursor:pointer; text-"
1698
+ "decoration:none\" href=\"%s\">Get started</a>"
 
 
 
 
 
1699
  msgstr ""
1700
 
1701
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:668
1702
+ #, php-format
1703
+ msgid "<a href=\"?page=%s&action=%s&form=%s&_wpnonce=%s\">Edit</a>"
1704
  msgstr ""
1705
 
1706
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:669
1707
+ #, php-format
1708
+ msgid ""
1709
+ "<a href=\"?page=%s&action=%s&form=%s&_wpnonce=%s\" onclick=\"return "
1710
+ "checkDelete()\">Delete</a>"
1711
  msgstr ""
1712
 
1713
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:685
1714
+ msgid "Shortcode"
 
1715
  msgstr ""
1716
 
1717
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:724
1718
+ msgid "Search Forms"
1719
  msgstr ""
1720
 
1721
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:762
1722
+ msgid "You do not have permission to delete this form."
1723
  msgstr ""
1724
 
1725
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:769
1726
+ msgid "Form has been deleted successfully!"
1727
  msgstr ""
1728
 
1729
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:784
1730
+ msgid "Form(s) have been deleted successfully!"
1731
  msgstr ""
1732
 
1733
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:787
1734
+ msgid "Please select form(s) to delete."
 
1735
  msgstr ""
1736
 
1737
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:811
1738
+ msgid "No Forms avaliable."
1739
  msgstr ""
1740
 
1741
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:39
1742
  msgid "Settings have been saved successfully!"
1743
  msgstr ""
1744
 
1745
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:59
1746
  msgid "Sync WordPress Users?"
1747
  msgstr ""
1748
 
1749
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:61
1750
  msgid ""
1751
  "Whenever someone signup, it will automatically be added into selected list"
1752
  msgstr ""
1753
 
1754
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:79
1755
  msgid "Select the list in which newly registered user will be subscribed to"
1756
  msgstr ""
1757
 
1758
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:91
1759
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:705
1760
  msgid "Save Settings"
1761
  msgstr ""
1762
 
1763
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:98
1764
  #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:68
1765
  msgid "Sync"
1766
  msgstr ""
1767
 
1768
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:146
1769
  msgid "Audience > Sync Contacts"
1770
  msgstr ""
1771
 
1772
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:164
1773
  msgid "WordPress"
1774
  msgstr ""
1775
 
1776
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:78
1777
+ msgid "Campaigns > Broadcast"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1778
  msgstr ""
1779
 
1780
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:130
1781
+ msgid "Content of the selected template will be broadcasted."
1782
  msgstr ""
1783
 
1784
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:142
1785
+ msgid "Contacts from the selected list will be notified."
1786
  msgstr ""
1787
 
1788
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:19
1789
+ msgid "Report"
1790
  msgstr ""
1791
 
1792
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:48
1793
+ #, php-format
1794
+ msgid ""
1795
+ "<a href='%s' target='_blank' class='page-title-action es-imp-button'>Send "
1796
+ "Queued Emails Now</a>"
1797
  msgstr ""
1798
 
1799
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:50
1800
+ msgid ""
1801
+ "<span class='page-title-action button-disabled'>Send Queued Emails Now</span>"
1802
  msgstr ""
1803
 
1804
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:51
1805
+ msgid "<br /><span class='es-helper'>No emails found in queue</span>"
1806
  msgstr ""
1807
 
1808
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:96
1809
+ msgid "Sr No"
1810
  msgstr ""
1811
 
1812
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:99
1813
+ msgid "Sent Date"
1814
  msgstr ""
1815
 
1816
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:100
1817
+ msgid "Viewed Status"
1818
  msgstr ""
1819
 
1820
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:101
1821
+ msgid "Viewed Date"
1822
  msgstr ""
1823
 
1824
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:165
1825
+ msgid "Viewed"
1826
  msgstr ""
1827
 
1828
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:165
1829
+ msgid "Not yet viewed"
 
1830
  msgstr ""
1831
 
1832
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:178
1833
+ msgid "No Reports avaliable."
1834
  msgstr ""
1835
 
1836
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:198
1837
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:35
1838
+ msgid "Post Notification"
1839
  msgstr ""
1840
 
1841
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:220
1842
+ msgid "Completed"
 
 
 
1843
  msgstr ""
1844
 
1845
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:260
1846
+ msgid "View"
 
 
 
1847
  msgstr ""
1848
 
1849
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:262
1850
+ msgid "Preview"
1851
  msgstr ""
1852
 
1853
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:277
1854
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:370
1855
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:398
1856
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:436
1857
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:475
1858
+ msgid "Subject"
1859
  msgstr ""
1860
 
1861
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:280
1862
+ msgid "Start Date"
1863
  msgstr ""
1864
 
1865
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:281
1866
+ msgid "End Date"
1867
  msgstr ""
1868
 
1869
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:429
1870
+ msgid "You do not have permission to view notification"
1871
  msgstr ""
1872
 
1873
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:441
1874
+ msgid "You do not have permission to delete notification"
1875
  msgstr ""
1876
 
1877
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:447
1878
+ msgid "Report has been deleted successfully!"
 
1879
  msgstr ""
1880
 
1881
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:456
1882
+ msgid "You do not have permission to preview notification"
1883
  msgstr ""
1884
 
1885
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:474
1886
+ msgid "Reports have been deleted successfully!"
1887
  msgstr ""
1888
 
1889
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:486
1890
+ msgid "Preview Email"
1891
  msgstr ""
1892
 
1893
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:489
1894
+ msgid ""
1895
+ "This is how the email you sent may look. <br>Note: Different email services "
1896
+ "(like gmail, yahoo etc) display email content differently. So there could be "
1897
+ "a slight variation on how your customer will view the email content."
1898
  msgstr ""
1899
 
1900
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-tools.php:32
1901
+ #, php-format
1902
+ msgid "Test email to %s"
1903
  msgstr ""
1904
 
1905
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-tools.php:36
1906
+ msgid "Email has been sent. Please check your inbox"
1907
  msgstr ""
1908
 
1909
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-cron.php:139
1910
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:473
1911
+ msgid "Campaign Sent!"
1912
  msgstr ""
1913
 
1914
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:114
1915
  msgid "General"
1916
  msgstr ""
1917
 
1918
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:115
1919
  msgid "Notifications"
1920
  msgstr ""
1921
 
1922
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:116
1923
  msgid "Email Sending"
1924
  msgstr ""
1925
 
1926
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:117
1927
  msgid "Security"
1928
  msgstr ""
1929
 
1930
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:177
1931
  msgid "Sender"
1932
  msgstr ""
1933
 
1934
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:182
1935
  msgid "Choose a FROM name for all the emails to be sent from this plugin."
1936
  msgstr ""
1937
 
1938
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:191
1939
  msgid ""
1940
  "Choose a FROM email address for all the emails to be sent from this plugin"
1941
  msgstr ""
1942
 
1943
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:193
1944
  msgid "Email Address"
1945
  msgstr ""
1946
 
1947
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:201
1948
  msgid "Email Addresses"
1949
  msgstr ""
1950
 
1951
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:203
1952
  msgid ""
1953
  "Enter the admin email addresses that should receive notifications (separated "
1954
  "by comma)."
1955
  msgstr ""
1956
 
1957
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:209
1958
  msgid "Email Type"
1959
  msgstr ""
1960
 
1961
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:210
1962
  msgid ""
1963
  "Select whether to send HTML or Plain Text email using WordPress or PHP mail()"
1964
  ". We recommend to send email using WordPres"
1965
  msgstr ""
1966
 
1967
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:218
1968
  msgid "Opt-in Type"
1969
  msgstr ""
1970
 
1971
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:227
1972
  msgid "Image Size"
1973
  msgstr ""
1974
 
1975
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:230
1976
  msgid ""
1977
  "<p>Select image size for {{POSTIMAGE}} to be shown in the Post Notification "
1978
  "Emails.</p>"
1979
  msgstr ""
1980
 
1981
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:236
1982
  msgid "Track Opens"
1983
  msgstr ""
1984
 
1985
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:238
1986
  msgid "Check this if you want to track email opening."
1987
  msgstr ""
1988
 
1989
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:249
1990
+ msgid "Message to display after form submission"
1991
+ msgstr ""
1992
+
1993
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:259
1994
  msgid "Show Unsubscribe Message In Email Footer"
1995
  msgstr ""
1996
 
1997
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:260
1998
  msgid ""
1999
  "Add text which you want your contact to see in footer to unsubscribe. Use "
2000
  "{{UNSUBSCRIBE-LINK}} keyword to add unsubscribe link."
2001
  msgstr ""
2002
 
2003
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:267
2004
  msgid "Subscription Success/ Error Messages"
2005
  msgstr ""
2006
 
2007
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:274
2008
  msgid "You have been subscribed successfully!"
2009
  msgstr ""
2010
 
2011
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:276
2012
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:306
2013
  msgid "Success Message"
2014
  msgstr ""
2015
 
2016
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:277
2017
  msgid ""
2018
  "Show this message if contact is successfully subscribed from Double Opt-In "
2019
  "(Confirmation) Email"
2020
  msgstr ""
2021
 
2022
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:285
2023
  msgid ""
2024
  "Oops.. Your request couldn't be completed. This email address seems to be "
2025
  "already subscribed / blocked."
2026
  msgstr ""
2027
 
2028
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:287
2029
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:318
2030
  msgid "Error Message"
2031
  msgstr ""
2032
 
2033
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:288
2034
  msgid ""
2035
  "Show this message if any error occured after clicking confirmation link from "
2036
  "Double Opt-In (Confirmation) Email."
2037
  msgstr ""
2038
 
2039
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:296
2040
  msgid "Unsubscribe Success/ Error Messages"
2041
  msgstr ""
2042
 
2043
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:304
2044
  msgid ""
2045
  "Thank You, You have been successfully unsubscribed. You will no longer hear "
2046
  "from us."
2047
  msgstr ""
2048
 
2049
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:307
2050
  msgid ""
2051
  "Once contact clicks on unsubscribe link, he/she will be redirected to a page "
2052
  "where this message will be shown."
2053
  msgstr ""
2054
 
2055
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:319
2056
  msgid ""
2057
  "Show this message if any error occured after clicking on unsubscribe link."
2058
  msgstr ""
2059
 
2060
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:349
2061
  msgid "Welcome Email"
2062
  msgstr ""
2063
 
2064
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:359
2065
  msgid "Enable?"
2066
  msgstr ""
2067
 
2068
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:360
2069
  msgid "Send welcome email to new contact after signup."
2070
  msgstr ""
2071
 
2072
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:380
2073
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:409
2074
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:444
2075
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:486
2076
  msgid "Content"
2077
  msgstr ""
2078
 
2079
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:381
2080
  msgid ""
2081
  "Available keywords. {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}, {{EMAIL}}, {{LIST}"
2082
  "}, {{UNSUBSCRIBE-LINK}}"
2083
  msgstr ""
2084
 
2085
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:388
2086
  msgid "Confirmation Email"
2087
  msgstr ""
2088
 
2089
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:410
2090
  msgid ""
2091
  "If Double Optin is set, contact will receive confirmation email with above "
2092
  "content. You can use {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}, {{EMAIL}}, "
2093
  "{{SUBSCRIBE-LINK}} keywords"
2094
  msgstr ""
2095
 
2096
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:418
2097
  msgid "Admin Notification On New Subscription"
2098
  msgstr ""
2099
 
2100
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:423
2101
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:459
2102
  msgid "Notify?"
2103
  msgstr ""
2104
 
2105
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:429
2106
  msgid "Set this option to \"Yes\" to notify admin(s) for new contact signup."
2107
  msgstr ""
2108
 
2109
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:438
2110
  msgid ""
2111
  "Subject for the admin email whenever a new contact signs up and is confirmed"
2112
  msgstr ""
2113
 
2114
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:439
2115
  msgid "New email subscription"
2116
  msgstr ""
2117
 
2118
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:446
2119
  msgid ""
2120
  "Content for the admin email whenever a new subscriber signs up and is "
2121
  "confirmed. Available Keywords: {{NAME}}, {{EMAIL}}, {{LIST}}"
2122
  msgstr ""
2123
 
2124
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:454
2125
  msgid "Admin Notification On Every Campaign Sent"
2126
  msgstr ""
2127
 
2128
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:465
2129
  msgid "Set this option to \"Yes\" to notify admin(s) on every campaign sent."
2130
  msgstr ""
2131
 
2132
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:487
2133
  msgid ""
2134
  "Send report to admin(s) whenever campaign is successfully sent to all "
2135
  "contacts. Available Keywords: {{DATE}}, {{SUBJECT}}, {{COUNT}}"
2136
  msgstr ""
2137
 
2138
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:504
2139
  msgid "Cron URL"
2140
  msgstr ""
2141
 
2142
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:514
2143
  msgid "Disable WordPress Cron"
2144
  msgstr ""
2145
 
2146
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:515
2147
  msgid ""
2148
  "Check this if you do not want Email Subscribers to use WP cron for sending "
2149
  "emails"
2150
  msgstr ""
2151
 
2152
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:524
2153
  msgid "Maximum Emails To Send In An Hour"
2154
  msgstr ""
2155
 
2156
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:525
2157
  msgid "Total emails your host can send in an hour."
2158
  msgstr ""
2159
 
2160
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:535
2161
  msgid "Send Test Email"
2162
  msgstr ""
2163
 
2164
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:536
2165
  msgid "Enter email address to send test email."
2166
  msgstr ""
2167
 
2168
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:545
2169
  msgid "Blocked Domain(s)"
2170
  msgstr ""
2171
 
2172
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:547
2173
  msgid ""
2174
  "Seeing spam signups from particular domains? Enter domains names (one per "
2175
  "line) that you want to block here."
2176
  msgstr ""
2177
 
2178
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:26
2179
+ msgid "Contact"
2180
+ msgstr ""
2181
+
2182
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:41
2183
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:193
2184
+ msgid "Add New Contact"
2185
+ msgstr ""
2186
+
2187
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:59
2188
+ msgid "Import Contacts"
2189
+ msgstr ""
2190
+
2191
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:70
2192
+ msgid "New"
2193
+ msgstr ""
2194
+
2195
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:127
2196
+ msgid "Audience > Contacts"
2197
+ msgstr ""
2198
+
2199
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:198
2200
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:499
2201
+ msgid "Edit Contact"
2202
+ msgstr ""
2203
+
2204
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:256
2205
+ msgid "Contact already exist."
2206
+ msgstr ""
2207
+
2208
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:293
2209
+ msgid "Contact has been added successfully!"
2210
+ msgstr ""
2211
+
2212
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:295
2213
+ msgid "Contact has been updated successfully!"
2214
+ msgstr ""
2215
+
2216
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:302
2217
+ msgid "Please Enter First Name"
2218
+ msgstr ""
2219
+
2220
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:312
2221
+ msgid "Please Enter Valid Email Address"
2222
+ msgstr ""
2223
+
2224
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:494
2225
+ msgid "Contact updated successfully!"
2226
+ msgstr ""
2227
+
2228
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:532
2229
+ msgid "No list found"
2230
+ msgstr ""
2231
+
2232
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:556
2233
+ msgid "Send Welcome Email?"
2234
+ msgstr ""
2235
+
2236
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:563
2237
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:742
2238
+ msgid "List(s)"
2239
+ msgstr ""
2240
+
2241
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:574
2242
+ msgid "Save Changes"
2243
+ msgstr ""
2244
+
2245
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:717
2246
+ #, php-format
2247
+ msgid "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\">Edit</a>"
2248
+ msgstr ""
2249
+
2250
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:718
2251
+ #, php-format
2252
+ msgid ""
2253
+ "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\" onclick=\"return "
2254
+ "checkDelete()\">Delete</a>"
2255
  msgstr ""
2256
 
2257
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:724
 
2258
  #, php-format
2259
+ msgid ""
2260
+ "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\">Resend "
2261
+ "Confirmation<a>"
2262
+ msgstr ""
2263
+
2264
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:776
2265
+ msgid "Move To List"
2266
+ msgstr ""
2267
+
2268
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:777
2269
+ msgid "Add To List"
2270
+ msgstr ""
2271
+
2272
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:778
2273
+ msgid "Change Status"
2274
+ msgstr ""
2275
+
2276
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:793
2277
+ msgid "Search Contacts"
2278
+ msgstr ""
2279
+
2280
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:798
2281
+ msgid "All Statuses"
2282
+ msgstr ""
2283
+
2284
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:804
2285
+ msgid "All Lists"
2286
+ msgstr ""
2287
+
2288
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:894
2289
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:957
2290
+ msgid "Contact(s) have been deleted successfully!"
2291
+ msgstr ""
2292
+
2293
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:926
2294
+ msgid "Confirmation email has been sent successfully!"
2295
+ msgstr ""
2296
+
2297
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:945
2298
+ msgid "Please select subscribers to update."
2299
+ msgstr ""
2300
+
2301
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:968
2302
+ msgid "Please select status."
2303
+ msgstr ""
2304
+
2305
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:978
2306
+ msgid "Status has been changed successfully!"
2307
+ msgstr ""
2308
+
2309
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:998
2310
+ msgid "Contact(s) have been moved to list successfully!"
2311
+ msgstr ""
2312
+
2313
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:1019
2314
+ msgid "Contact(s) have been added to list successfully!"
2315
+ msgstr ""
2316
+
2317
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:1030
2318
+ msgid "No contacts avaliable."
2319
+ msgstr ""
2320
+
2321
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:66
2322
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:71
2323
+ msgid "Available Keywords"
2324
+ msgstr ""
2325
+
2326
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:71
2327
+ msgid "for Broadcast:"
2328
+ msgstr ""
2329
+
2330
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:110
2331
+ msgid "Preview Template"
2332
+ msgstr ""
2333
+
2334
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:216
2335
+ msgid "Template Type"
2336
+ msgstr ""
2337
+
2338
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-templates-table.php:253
2339
+ msgid "Duplicate"
2340
+ msgstr ""
2341
+
2342
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/notices/class-es-admin-notices.php:97
2343
+ msgid "Action failed. Please refresh the page and retry."
2344
  msgstr ""
2345
 
2346
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:732
2347
  msgid "Please select an option"
2348
  msgstr ""
2349
 
2350
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:927
2351
  msgid "I no longer need the plugin"
2352
  msgstr ""
2353
 
2354
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:931
2355
  msgid "I'm switching to a different plugin"
2356
  msgstr ""
2357
 
2358
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:933
2359
  msgid "Please share which plugin"
2360
  msgstr ""
2361
 
2362
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:936
2363
  msgid "I couldn't get the plugin to work"
2364
  msgstr ""
2365
 
2366
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:940
2367
  msgid "It's a temporary deactivation"
2368
  msgstr ""
2369
 
2370
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:944
2371
  msgid "Other"
2372
  msgstr ""
2373
 
2374
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:946
2375
  msgid "Please share the reason"
2376
  msgstr ""
2377
 
2378
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:953
2379
  msgid "Quick Feedback"
2380
  msgstr ""
2381
 
2382
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:954
2383
  #, php-format
2384
  msgid "If you have a moment, please share why you are deactivating %s:"
2385
  msgstr ""
2386
 
2387
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:977
2388
  #, php-format
2389
  msgid "Submit %s Deactivate"
2390
  msgstr ""
2391
 
2392
+ #: ../../../../wpRepos/gitlab/email-subscribers/includes/feedback/class-ig-feedback.php:979
2393
  #, php-format
2394
  msgid "Skip %s Deactivate"
2395
  msgstr ""
public/class-email-subscribers-public.php CHANGED
@@ -110,7 +110,7 @@ class Email_Subscribers_Public {
110
  'es_empty_email_notice' => __( 'Please enter email address', 'email-subscribers' ),
111
  'es_rate_limit_notice' => __( 'You need to wait for sometime before subscribing again', 'email-subscribers' ),
112
  'es_single_optin_success_message' => __( 'Successfully Subscribed.', 'email-subscribers' ),
113
- 'es_double_optin_success_message' => __( 'Your subscription was successful! Kindly check your mailbox and confirm your subscription. If you don\'t see the email within a few minutes, check the spam/junk folder.', 'email-subscribers' ),
114
  'es_email_exists_notice' => __( 'Email Address already exists!', 'email-subscribers' ),
115
  'es_unexpected_error_notice' => __( 'Oops.. Unexpected error occurred.', 'email-subscribers' ),
116
  'es_invalid_email_notice' => __( 'Invalid email address', 'email-subscribers' ),
@@ -138,10 +138,10 @@ class Email_Subscribers_Public {
138
  new ES_Handle_Subscription();
139
  new ES_Shortcode();
140
 
141
- $option = ! empty( $_REQUEST['es'] ) ? sanitize_text_field($_REQUEST['es']) : '';
142
- $db_id = ! empty( $_REQUEST['db'] ) ? $_REQUEST['db'] : '';
143
- $email = ! empty( $_REQUEST['email'] ) ? sanitize_email($_REQUEST['email']) : '';
144
- $guid = ! empty( $_REQUEST['guid'] ) ? sanitize_text_field($_REQUEST['guid']) : '';
145
 
146
  $email = str_replace( ' ', '+', $email );
147
 
@@ -201,10 +201,10 @@ class Email_Subscribers_Public {
201
  ES_Common::send_signup_notification_to_admins( $data );
202
  }
203
  } else {
204
- if($status === 'subscribed') {
205
- $message = __('You are already subscribed!', 'email-subscribers');
206
  } else {
207
- $message = __('You are already unsubscribed!', 'email-subscribers');
208
  }
209
  }
210
 
110
  'es_empty_email_notice' => __( 'Please enter email address', 'email-subscribers' ),
111
  'es_rate_limit_notice' => __( 'You need to wait for sometime before subscribing again', 'email-subscribers' ),
112
  'es_single_optin_success_message' => __( 'Successfully Subscribed.', 'email-subscribers' ),
113
+ // 'es_double_optin_success_message' => __( 'Your subscription was successful! Kindly check your mailbox and confirm your subscription. If you don\'t see the email within a few minutes, check the spam/junk folder.', 'email-subscribers' ),
114
  'es_email_exists_notice' => __( 'Email Address already exists!', 'email-subscribers' ),
115
  'es_unexpected_error_notice' => __( 'Oops.. Unexpected error occurred.', 'email-subscribers' ),
116
  'es_invalid_email_notice' => __( 'Invalid email address', 'email-subscribers' ),
138
  new ES_Handle_Subscription();
139
  new ES_Shortcode();
140
 
141
+ $option = ig_es_clean( ig_es_get_request_data( 'es' ) );
142
+ $db_id = ig_es_clean( ig_es_get_request_data( 'db' ) );
143
+ $email = sanitize_email( ig_es_get_request_data( 'email' ) );
144
+ $guid = ig_es_clean( ig_es_get_request_data( 'guid' ) );
145
 
146
  $email = str_replace( ' ', '+', $email );
147
 
201
  ES_Common::send_signup_notification_to_admins( $data );
202
  }
203
  } else {
204
+ if ( $status === 'subscribed' ) {
205
+ $message = __( 'You are already subscribed!', 'email-subscribers' );
206
  } else {
207
+ $message = __( 'You are already unsubscribed!', 'email-subscribers' );
208
  }
209
  }
210
 
public/partials/cron-message.php CHANGED
@@ -5,12 +5,12 @@ if ( ! defined( 'ABSPATH' ) ) {
5
  exit;
6
  }
7
 
8
- $es_page_request = $_GET['es'];
9
 
10
- $blogname = get_option( 'blogname' );
11
- $noerror = true;
12
- $home_url = home_url( '/' );
13
- ?>
14
  <html>
15
  <head>
16
  <title><?php echo $blogname; ?></title>
@@ -28,27 +28,27 @@ if ( ! defined( 'ABSPATH' ) ) {
28
  <body>
29
  <div class="es_center_info es_successfully_subscribed">
30
  <p> <?php echo $message; ?> </p>
31
- <table class="table">
32
- <tr>
33
- <td><?php _e('Total Emails Sent', 'email-subscribers'); ?></td>
34
- <td><?php echo $total_emails_sent; ?></td>
35
- </tr>
36
- <tr>
37
- <td><?php _e('Total Emails In Queue', 'email-subscribers'); ?></td>
38
- <td><?php
39
- echo $total_emails_to_be_sent;
40
- if($total_emails_to_be_sent > 0) {
41
- echo ' ' . $send_now_text; ?>
42
- <?php } ?>
43
- </td>
44
-
45
- </tr>
46
-
47
- </table>
48
 
49
  </div>
50
  </body>
51
  </html>
52
- <?php
53
 
54
  die();
5
  exit;
6
  }
7
 
8
+ $es_page_request = ig_es_clean( ig_es_get_request_data( 'es' ) );
9
 
10
+ $blogname = get_option( 'blogname' );
11
+ $noerror = true;
12
+ $home_url = home_url( '/' );
13
+ ?>
14
  <html>
15
  <head>
16
  <title><?php echo $blogname; ?></title>
28
  <body>
29
  <div class="es_center_info es_successfully_subscribed">
30
  <p> <?php echo $message; ?> </p>
31
+ <table class="table">
32
+ <tr>
33
+ <td><?php _e( 'Total Emails Sent', 'email-subscribers' ); ?></td>
34
+ <td><?php echo $total_emails_sent; ?></td>
35
+ </tr>
36
+ <tr>
37
+ <td><?php _e( 'Total Emails In Queue', 'email-subscribers' ); ?></td>
38
+ <td><?php
39
+ echo $total_emails_to_be_sent;
40
+ if ( $total_emails_to_be_sent > 0 ) {
41
+ echo ' ' . $send_now_text; ?>
42
+ <?php } ?>
43
+ </td>
44
+
45
+ </tr>
46
+
47
+ </table>
48
 
49
  </div>
50
  </body>
51
  </html>
52
+ <?php
53
 
54
  die();
public/partials/subscription-successfull.php CHANGED
@@ -5,7 +5,7 @@ if ( ! defined( 'ABSPATH' ) ) {
5
  exit;
6
  }
7
 
8
- $es_page_request = $_GET['es'];
9
 
10
  $blogname = get_option( 'blogname' );
11
  $noerror = true;
5
  exit;
6
  }
7
 
8
+ $es_page_request = ig_es_clean(ig_es_get_request_data('es'));
9
 
10
  $blogname = get_option( 'blogname' );
11
  $noerror = true;
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.2
8
- Stable tag: 4.1.14
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses
11
 
@@ -300,6 +300,11 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
300
 
301
  == Changelog ==
302
 
 
 
 
 
 
303
  = 4.1.14 (28.08.2019) =
304
  * New: Import First Name & Last Name
305
  * Update: Added "Send Welcome email" option to send out Welcome Email.
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.3
8
+ Stable tag: 4.1.15
9
  License: GPLv3
10
  License URI: http://www.gnu.org/licenses
11
 
300
 
301
  == Changelog ==
302
 
303
+ = 4.1.15 (12.09.2019) =
304
+ * New: Stop email sending if hourly email sending limit exceeded.
305
+ * Update: Added option to customize message after form submission (Email Subscribers > Settings Menu)
306
+ * Fixed: Import contacts issue
307
+
308
  = 4.1.14 (28.08.2019) =
309
  * New: Import First Name & Last Name
310
  * Update: Added "Send Welcome email" option to send out Welcome Email.