Email Subscribers & Newsletters - Version 4.7.2

Version Description

4.7.2 (12.05.2021)

  • New: Support for 'List-Unsubscribe' email header
  • New: Support for 'Subscribed at' field while importing contacts through CSV
  • Update: Support for Sendgrid batch email API [PRO]
  • Update: Improved page load performance on Email Subscribers' admin pages

4.7.1 (30.04.2021)

  • New: Send emails using Postmark batch API [PRO]
  • Update: Improved dashboard UI
  • Fix: Post digest category issue [PRO]
  • Fix: Garbage characters in few cases when an email containing HTML entities is sent using Pepipost
  • Fix: Ajax call on every page load

4.7.0 (05.04.2021)

  • New: Support for list and status fields while importing contacts through CSV
  • New: Using batch API to send emails through Mailgun [PRO]

4.6.14 (25.03.2021)

  • New: Send emails using Mailgun, SparkPost and SendGrid [PRO]
  • New: Import contacts from MailChimp

4.6.13 (17.03.2021)

  • New: Campaign rules to filter recipients while sending sequence emails [PRO]
  • Update: Tested upto WordPress 5.7
  • Fix: Invalid date and time for campaign reports activity table

4.6.12.1 (05.03.2021)

  • Fix: Subscription issue with Icegram plugin

4.6.12 (04.03.2021)

  • New: Filter recipients using new campaign rules for 'is in List' and 'is not in List'[PRO] while sending broadcast
  • Update: Improved campaign report UI
  • Update: Improved securities in subscription form
Download this release

Release Info

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

Code changes from version 4.7.1 to 4.7.2

Files changed (43) hide show
  1. email-subscribers.php +2 -2
  2. lite/admin/class-email-subscribers-admin.php +3 -1
  3. lite/admin/class-ig-es-onboarding.php +37 -4
  4. lite/admin/css/email-subscribers-admin.css +7 -2
  5. lite/admin/dist/main.css +1 -1
  6. lite/admin/js/email-subscribers-admin.js +4 -4
  7. lite/admin/partials/dashboard.php +1 -2
  8. lite/admin/partials/onboarding.php +1 -1
  9. lite/includes/class-email-subscribers.php +1 -0
  10. lite/includes/classes/class-es-actions.php +0 -2
  11. lite/includes/classes/class-es-admin-settings.php +1 -1
  12. lite/includes/classes/class-es-cache.php +42 -13
  13. lite/includes/classes/class-es-campaign-report.php +3 -3
  14. lite/includes/classes/class-es-contacts-table.php +25 -9
  15. lite/includes/classes/class-es-forms-table.php +192 -186
  16. lite/includes/classes/class-es-handle-post-notification.php +2 -2
  17. lite/includes/classes/class-es-handle-subscription.php +1 -1
  18. lite/includes/classes/class-es-import-subscribers.php +17 -7
  19. lite/includes/classes/class-es-lists-table.php +12 -0
  20. lite/includes/classes/class-es-mailer.php +166 -11
  21. lite/includes/classes/class-es-newsletters.php +11 -8
  22. lite/includes/classes/class-es-queue.php +1 -1
  23. lite/includes/classes/class-es-reports-table.php +1 -1
  24. lite/includes/classes/class-ig-es-subscriber-query.php +3 -3
  25. lite/includes/db/class-es-db-actions.php +18 -11
  26. lite/includes/db/class-es-db-contacts.php +18 -6
  27. lite/includes/db/class-es-db-links.php +2 -0
  28. lite/includes/db/class-es-db-lists-contacts.php +2 -3
  29. lite/includes/db/class-es-db-lists.php +4 -4
  30. lite/includes/db/class-es-db-mailing-queue.php +30 -12
  31. lite/includes/db/class-es-db-sending-queue.php +2 -14
  32. lite/includes/db/class-es-db.php +203 -27
  33. lite/includes/es-core-functions.php +1 -1
  34. lite/includes/mailers/class-es-base-mailer.php +45 -1
  35. lite/includes/mailers/class-es-pepipost-mailer.php +32 -6
  36. lite/includes/mailers/class-es-phpmail-mailer.php +6 -0
  37. lite/includes/workflows/class-es-workflow-data-types.php +2 -1
  38. lite/includes/workflows/data-types/class-es-data-type-subscriber.php +96 -0
  39. lite/includes/workflows/queue/class-es-workflow-queue.php +21 -10
  40. lite/includes/workflows/triggers/class-es-trigger-user-deleted.php +18 -8
  41. lite/languages/email-subscribers.pot +326 -310
  42. lite/public/class-email-subscribers-public.php +2 -1
  43. readme.txt +24 -4
email-subscribers.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Email Subscribers & Newsletters
4
  * Plugin URI: https://www.icegram.com/
5
  * Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
6
- * Version: 4.7.1
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
@@ -178,7 +178,7 @@ if ( 'premium' === $ig_es_plan ) {
178
  /* ***************************** Initial Compatibility Work (End) ******************* */
179
 
180
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
181
- define( 'ES_PLUGIN_VERSION', '4.7.1' );
182
  }
183
 
184
  // Plugin Folder Path.
3
  * Plugin Name: Email Subscribers & Newsletters
4
  * Plugin URI: https://www.icegram.com/
5
  * Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
6
+ * Version: 4.7.2
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
178
  /* ***************************** Initial Compatibility Work (End) ******************* */
179
 
180
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
181
+ define( 'ES_PLUGIN_VERSION', '4.7.2' );
182
  }
183
 
184
  // Plugin Folder Path.
lite/admin/class-email-subscribers-admin.php CHANGED
@@ -213,9 +213,11 @@ class Email_Subscribers_Admin {
213
  if ( 'es_workflows' === $get_page ) {
214
 
215
  if ( ! wp_script_is( 'clipboard', 'registered' ) ) {
216
- wp_enqueue_script( 'clipboard', plugin_dir_url( __FILE__ ) . 'js/clipboard.js', array( 'jquery' ), '2.0.6', false );
217
  }
218
 
 
 
219
  if ( ! function_exists( 'ig_es_wp_js_editor_admin_scripts' ) ) {
220
  /**
221
  * Include WP JS Editor library's main file. This file contains required functions to enqueue required js file which being used to create WordPress editor dynamcially.
213
  if ( 'es_workflows' === $get_page ) {
214
 
215
  if ( ! wp_script_is( 'clipboard', 'registered' ) ) {
216
+ wp_register_script( 'clipboard', plugin_dir_url( __FILE__ ) . 'js/clipboard.js', array( 'jquery' ), '2.0.6', false );
217
  }
218
 
219
+ wp_enqueue_script( 'clipboard' );
220
+
221
  if ( ! function_exists( 'ig_es_wp_js_editor_admin_scripts' ) ) {
222
  /**
223
  * Include WP JS Editor library's main file. This file contains required functions to enqueue required js file which being used to create WordPress editor dynamcially.
lite/admin/class-ig-es-onboarding.php CHANGED
@@ -66,7 +66,7 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
66
  'evaluate_email_delivery',
67
  ),
68
  'completion_tasks' => array(
69
- 'subscribe_to_klawoo',
70
  'save_final_configuration',
71
  )
72
  );
@@ -359,7 +359,7 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
359
  $response['status'] = 'success';
360
  }
361
  $current_tasks_done[] = $current_task;
362
- } else if ( 'skipped' === $task_response['status'] ) {
363
  $response['status'] = 'skipped';
364
  $current_tasks_skipped[] = $current_task;
365
  } else {
@@ -472,6 +472,9 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
472
 
473
  public function create_contacts_and_add_to_list() {
474
 
 
 
 
475
  // Get default list data.
476
  $default_list_id = 0;
477
  $default_list = ES()->lists_db->get_list_by_name( IG_DEFAULT_LIST );
@@ -1196,9 +1199,39 @@ if ( ! class_exists( 'IG_ES_Onboarding' ) ) {
1196
  *
1197
  * @since 4.6.0
1198
  */
1199
- public function subscribe_to_klawoo() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1200
 
1201
- $response = Email_Subscribers_Admin::klawoo_subscribe( true );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1202
 
1203
  return $response;
1204
  }
66
  'evaluate_email_delivery',
67
  ),
68
  'completion_tasks' => array(
69
+ 'subscribe_to_es',
70
  'save_final_configuration',
71
  )
72
  );
359
  $response['status'] = 'success';
360
  }
361
  $current_tasks_done[] = $current_task;
362
+ } elseif ( 'skipped' === $task_response['status'] ) {
363
  $response['status'] = 'skipped';
364
  $current_tasks_skipped[] = $current_task;
365
  } else {
472
 
473
  public function create_contacts_and_add_to_list() {
474
 
475
+ // Flush cache to make sure we get data from DB instead of cache
476
+ ES_Cache::flush();
477
+
478
  // Get default list data.
479
  $default_list_id = 0;
480
  $default_list = ES()->lists_db->get_list_by_name( IG_DEFAULT_LIST );
1199
  *
1200
  * @since 4.6.0
1201
  */
1202
+ public function subscribe_to_es() {
1203
+
1204
+ $response = array(
1205
+ 'status' => 'error'
1206
+ );
1207
+
1208
+ $name = ig_es_get_request_data( 'name', '' );
1209
+ $email = ig_es_get_request_data( 'email', '' );
1210
+ $list = ig_es_get_request_data( 'list', '' );
1211
+
1212
+ if ( ! empty( $list ) && is_email( $email ) ) {
1213
+ $url_params = array(
1214
+ 'ig_es_external_action' => 'subscribe',
1215
+ 'name' => $name,
1216
+ 'email' => $email,
1217
+ 'list' => $list,
1218
+ );
1219
 
1220
+ $ig_es_url = 'https://www.icegram.com/';
1221
+ $ig_es_url = add_query_arg( $url_params, $ig_es_url );
1222
+
1223
+ // Make a asynchronous request.
1224
+ $api_response = wp_remote_get( $ig_es_url );
1225
+ if ( ! is_wp_error( $api_response ) ) {
1226
+ $body = ! empty( $api_response['body'] ) && ES_Common::is_valid_json( $api_response['body'] ) ? json_decode( $api_response['body'], true ) : '';
1227
+ if ( ! empty( $body ) ) {
1228
+ // If we have received an id in response then email is successfully queued at mailgun server.
1229
+ if ( ! empty( $body['status'] ) && 'SUCCESS' === $body['status'] ) {
1230
+ $response['status'] = 'success';
1231
+ }
1232
+ }
1233
+ }
1234
+ }
1235
 
1236
  return $response;
1237
  }
lite/admin/css/email-subscribers-admin.css CHANGED
@@ -1703,7 +1703,7 @@ div.broadcast_side_content{
1703
  margin-left: auto;
1704
  margin-right: auto;
1705
  }
1706
- #es-shortcode{
1707
  -webkit-user-select: all;
1708
  -ms-user-select: all;
1709
  user-select: all;
@@ -2116,4 +2116,9 @@ body[class*="es_reports"] .recipient-text {
2116
  .es-importer-logo {
2117
  width: 160px;
2118
  }
2119
- /** Import subscribers CSS - END */
 
 
 
 
 
1703
  margin-left: auto;
1704
  margin-right: auto;
1705
  }
1706
+ .es-code{
1707
  -webkit-user-select: all;
1708
  -ms-user-select: all;
1709
  user-select: all;
2116
  .es-importer-logo {
2117
  width: 160px;
2118
  }
2119
+ /** Import subscribers CSS - END */
2120
+
2121
+ .es-items-lists table.fixed{
2122
+ overflow:visible !important;
2123
+ border-color:transparent;
2124
+ }
lite/admin/dist/main.css CHANGED
@@ -1 +1 @@
1
- /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}a{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}img{border-width:0}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus,.form-radio:checked{border-color:transparent}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}li.menu-top div.wp-menu-image img{display:initial;border-style:none}.ig-es-primary-button,.ig-es-send-queue-emails{border-color:transparent;padding:.5rem 1rem;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.ig-es-primary-button,.ig-es-send-queue-emails,.ig-es-title-button,.wp-heading-inline+.page-title-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;font-size:.875rem;line-height:1.25rem;font-weight:500;--text-opacity:1;--bg-opacity:1;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-title-button,.wp-heading-inline+.page-title-action{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));color:#374151;color:rgba(55,65,81,var(--text-opacity));background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));padding:.25rem .75rem}.wrap .wp-heading-inline+.page-title-action{margin-left:.5rem}.ig-es-title-button:hover,.wp-heading-inline+.page-title-action:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.ig-es-title-button:focus,.wp-heading-inline+.page-title-action:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45);--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.ig-es-primary-button:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.ig-es-primary-button:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.ig-es-imp-button{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important;border-radius:.375rem!important;border-width:1px!important;border-color:transparent!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;background-color:#0e9f6e!important;background-color:rgba(14,159,110,var(--bg-opacity))!important;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform!important;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;-webkit-transition-duration:.15s!important;transition-duration:.15s!important}.ig-es-imp-button,.ig-es-imp-button:hover{--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important;--bg-opacity:1!important}.ig-es-imp-button:hover{background-color:#31c48d!important;background-color:rgba(49,196,141,var(--bg-opacity))!important}.ig-es-imp-button:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(132,225,188,.45)!important;box-shadow:0 0 0 3px rgba(132,225,188,.45)!important}.ig-es-link-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:transparent;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;background-color:#ff5a1f;background-color:rgba(255,90,31,var(--bg-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-link-button,.ig-es-link-button:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity));--bg-opacity:1}.ig-es-link-button:hover{background-color:#ff8a4c;background-color:rgba(255,138,76,var(--bg-opacity))}.ig-es-link-button:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(253,186,140,.45);box-shadow:0 0 0 3px rgba(253,186,140,.45)}.ig-es-action.js-open .ig-es-action__header{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.form-input{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;border-radius:.375rem!important;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.form-input:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important}.form-checkbox{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E")}.form-radio{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}.form-checkbox:checked,.form-radio:checked{--text-opacity:1!important;color:#5850ec!important;color:rgba(88,80,236,var(--text-opacity))!important}.form-select{font-size:.875rem!important;--border-opacity:1!important;border-color:#9fa6b2!important;border-color:rgba(159,166,178,var(--border-opacity))!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important}.form-select:focus,input[type=number]:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;--border-opacity:1!important;border-color:#a4cafe!important;border-color:rgba(164,202,254,var(--border-opacity))!important}.es-check-toggle:checked~.es-mail-toggle-line{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.es-check-toggle:checked~.es-mail-toggle-dot{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-translate-x:100%}.es-mail-toggle-line{width:2.25rem;height:1.25rem;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot,.es-mail-toggle-line{display:block;--bg-opacity:1;border-radius:9999px}.es-mail-toggle-dot{width:.875rem;height:.875rem;margin-left:.25rem;position:absolute;top:0;bottom:0;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot:focus-within{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}[type=radio]:checked+.es-mailer-logo{-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-scale-x:1.1;--transform-scale-y:1.1;-webkit-box-shadow:0 0 3px 1px #5a67d8;box-shadow:0 0 3px 1px #5a67d8}[type=radio]:checked+.es-mailer-logo:hover{border-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.wp-core-ui .button,.wp-core-ui .button-secondary{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{font-size:.875rem;border-radius:.375rem;border-width:1px;line-height:1.25rem;font-weight:500;--text-opacity:1}.wp-core-ui .button-primary{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.wp-core-ui .button-primary:hover,.wp-core-ui .button:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.wp-core-ui .search-box input[name=s],.wp-core-ui select{border-radius:.375rem}.wp-core-ui #bulk-action-selector-top,.wp-core-ui #doaction,.wp-core-ui #doaction2,.wp-core-ui #filter-by-date,.wp-core-ui #post-query-submit,.wp-core-ui #poststuff select,.wp-core-ui #search-submit{cursor:pointer;line-height:1.25rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity));background-color:transparent;font-size:.875rem}.wp-core-ui #search-submit{margin-left:.375rem}.es-add-or-condition:hover,.wp-core-ui #doaction2:hover .wp-core-ui #post-query-submit:hover,.wp-core-ui #doaction:hover,.wp-core-ui #search-submit:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.es-add-or-condition:focus,.wp-core-ui #doaction2:focus .wp-core-ui #post-query-submit:focus,.wp-core-ui #doaction:focus,.wp-core-ui #search-submit:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(159,166,178,.45);box-shadow:0 0 0 3px rgba(159,166,178,.45)}.es-items-lists table.fixed,.post-type-es_template table.fixed{margin-top:1rem;margin-bottom:1rem;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.5rem;overflow:hidden}.es-items-lists table.fixed tfoot td,.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead td,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead td,.post-type-es_template table.fixed thead th{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));font-weight:500;letter-spacing:.05em}.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead th{padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .widefat thead td input,.post-type-es_template .widefat thead td input{margin-right:1.5rem}.post-type-es_template .wrap{padding-top:1rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.post-type-es_template .wrap>h1{padding-top:0;font-weight:600;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));line-height:2.25rem}.es-items-lists .striped>tbody tr,.post-type-es_template .striped>tbody tr{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));padding-top:.5rem;padding-bottom:.5rem}.es-campaign-reports-table .striped>tbody tr{border-bottom-width:2px}.es-items-lists .striped>tbody>:nth-child(odd),.post-type-es_template .striped>tbody>:nth-child(odd){--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.es_onboard_email{padding:.25rem .75rem!important}.es_reports_table_header{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));text-align:left;font-size:.875rem;line-height:1rem;font-weight:500;--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));letter-spacing:.05em}.importing-progress,.progress{width:100%;height:2rem;--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity));overflow:hidden;position:relative;text-align:right;line-height:1rem;margin-top:.375rem;border-radius:.25rem}.importing-progress span.bar,.progress span.bar{display:block;position:absolute;line-height:2.5rem;padding-top:.25rem;padding-bottom:.25rem;top:0;bottom:0;left:0;border-radius:.25rem;overflow:hidden;background-image:-webkit-gradient(linear,left top,right top,from(var(--gradient-color-stops)));background-image:linear-gradient(90deg,var(--gradient-color-stops));--gradient-from-color:#42389d;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(66,56,157,0));--gradient-to-color:#6875f5;--bg-opacity:1;background-color:#8da2fb;background-color:rgba(141,162,251,var(--bg-opacity))}.es_sequences_wrapper .ig-es-campaign-rules label{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));font-weight:500;--text-opacity:0.75;font-size:.875rem;letter-spacing:.025em;line-height:1.5rem}.email-subscribers_page_es_workflows #ig_es_workflow_trigger select option:disabled{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.installing{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity));-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.success{--text-opacity:1!important;color:#4b5563!important;color:rgba(75,85,99,var(--text-opacity))!important;font-weight:500!important;-webkit-animation:none!important;animation:none!important}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.skipping{--text-opacity:1!important;color:#9fa6b2!important;color:rgba(159,166,178,var(--text-opacity))!important;-webkit-animation:none!important;animation:none!important}.es_primary_link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1rem;font-size:.875rem;font-weight:700;--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);border-bottom-width:2px;border-color:transparent;cursor:pointer}.es_primary_link:active,.es_primary_link:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.es_primary_link:focus{outline:2px solid transparent;outline-offset:2px;--border-opacity:1;border-color:#5145cd;border-color:rgba(81,69,205,var(--border-opacity));-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.es_helper_text{font-style:italic;font-size:.75rem;font-weight:400;--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity));line-height:1.375}.space-y-1>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.25rem*var(--space-y-reverse))}.space-y-2>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.5rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.5rem*var(--space-y-reverse))}.space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.space-x-3>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.75rem*var(--space-x-reverse));margin-left:calc(0.75rem*(1 - var(--space-x-reverse)))}.space-y-4>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1rem*var(--space-y-reverse))}.space-y-5>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1.25rem*var(--space-y-reverse))}.divide-y>:not(template)~:not(template){--divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--divide-y-reverse)));border-bottom-width:calc(1px*var(--divide-y-reverse))}.divide-gray-200>:not(template)~:not(template){--divide-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--divide-opacity))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-black{--bg-opacity:1;background-color:#000;background-color:rgba(0,0,0,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-300{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.bg-gray-500{--bg-opacity:1;background-color:#6b7280;background-color:rgba(107,114,128,var(--bg-opacity))}.bg-red-50{--bg-opacity:1;background-color:#fdf2f2;background-color:rgba(253,242,242,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-yellow-100{--bg-opacity:1;background-color:#fdf6b2;background-color:rgba(253,246,178,var(--bg-opacity))}.bg-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity))}.bg-green-300{--bg-opacity:1;background-color:#84e1bc;background-color:rgba(132,225,188,var(--bg-opacity))}.bg-green-600{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.bg-teal-50{--bg-opacity:1;background-color:#edfafa;background-color:rgba(237,250,250,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-300{--bg-opacity:1;background-color:#a4cafe;background-color:rgba(164,202,254,var(--bg-opacity))}.bg-indigo-200{--bg-opacity:1;background-color:#cddbfe;background-color:rgba(205,219,254,var(--bg-opacity))}.bg-indigo-500{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.bg-indigo-600{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.bg-indigo-700{--bg-opacity:1;background-color:#5145cd;background-color:rgba(81,69,205,var(--bg-opacity))}.bg-indigo-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,var(--bg-opacity))}.bg-pink-200{--bg-opacity:1;background-color:#fad1e8;background-color:rgba(250,209,232,var(--bg-opacity))}.group:focus .group-focus\:bg-gray-400,.group:hover .group-hover\:bg-gray-400{--bg-opacity:1;background-color:#9fa6b2;background-color:rgba(159,166,178,var(--bg-opacity))}.hover\:bg-gray-50:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-gray-300:hover{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.hover\:bg-green-500:hover{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.hover\:bg-indigo-500:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.hover\:bg-indigo-600:hover{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.focus\:bg-gray-50:focus{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-opacity-75{--bg-opacity:0.75}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.border-indigo-300{--border-opacity:1;border-color:#b4c6fc;border-color:rgba(180,198,252,var(--border-opacity))}.border-indigo-500{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity))}.border-indigo-600{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.hover\:border-gray-200:hover{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.hover\:border-red-400:hover{--border-opacity:1;border-color:#f98080;border-color:rgba(249,128,128,var(--border-opacity))}.hover\:border-indigo-600:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-col,.flex-row{-webkit-box-direction:normal}.flex-col{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-thin{font-weight:200}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.h-1\.5{height:.375rem}.h-2\.5{height:.625rem}.h-full{height:100%}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.my-12{margin-top:3rem;margin-bottom:3rem}.my-16{margin-top:4rem;margin-bottom:4rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-7{margin-top:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.ml-8{margin-left:2rem}.mt-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.mb-12{margin-bottom:3rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.ml-16{margin-left:4rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mt-2\.5{margin-top:.625rem}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mr-3{margin-right:-.75rem}.-mb-4{margin-bottom:-1rem}.-mt-5{margin-top:-1.25rem}.-ml-6{margin-left:-1.5rem}.-ml-8{margin-left:-2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mt-1\.5{margin-top:-.375rem}.max-h-full{max-height:100%}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-13{padding:3.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-16{padding-left:4rem}.pt-0\.5{padding-top:.125rem}.pl-0\.5{padding-left:.125rem}.pt-1\.5{padding-top:.375rem}.pb-1\.5{padding-bottom:.375rem}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.bottom-2{bottom:.5rem}.bottom-5{bottom:1.25rem}.top-8{top:2rem}.top-10{top:2.5rem}.top-20{top:5rem}.resize{resize:both}.shadow-xs{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.05);box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-md{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-lg{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.shadow-inner{-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.hover\:shadow-md:hover{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.focus\:shadow-lg:focus{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.focus\:shadow-outline:focus{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.focus\:shadow-outline-red:focus{-webkit-box-shadow:0 0 0 3px rgba(248,180,180,.45);box-shadow:0 0 0 3px rgba(248,180,180,.45)}.focus\:shadow-outline-indigo:focus{-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.fill-current{fill:currentColor}.table-fixed{table-layout:fixed}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-black{--text-opacity:1;color:#000;color:rgba(0,0,0,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-500{--text-opacity:1;color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-red-800{--text-opacity:1;color:#9b1c1c;color:rgba(155,28,28,var(--text-opacity))}.text-orange-400{--text-opacity:1;color:#ff8a4c;color:rgba(255,138,76,var(--text-opacity))}.text-orange-500{--text-opacity:1;color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.text-yellow-400{--text-opacity:1;color:#e3a008;color:rgba(227,160,8,var(--text-opacity))}.text-yellow-600{--text-opacity:1;color:#9f580a;color:rgba(159,88,10,var(--text-opacity))}.text-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,var(--text-opacity))}.text-green-500{--text-opacity:1;color:#0e9f6e;color:rgba(14,159,110,var(--text-opacity))}.text-green-600{--text-opacity:1;color:#057a55;color:rgba(5,122,85,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#03543f;color:rgba(3,84,63,var(--text-opacity))}.text-teal-400{--text-opacity:1;color:#16bdca;color:rgba(22,189,202,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,var(--text-opacity))}.text-teal-800{--text-opacity:1;color:#05505c;color:rgba(5,80,92,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#76a9fa;color:rgba(118,169,250,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-700{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#1e429f;color:rgba(30,66,159,var(--text-opacity))}.text-indigo-100{--text-opacity:1;color:#e5edff;color:rgba(229,237,255,var(--text-opacity))}.text-indigo-400{--text-opacity:1;color:#8da2fb;color:rgba(141,162,251,var(--text-opacity))}.text-indigo-500{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.text-indigo-600{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-indigo-700{--text-opacity:1;color:#5145cd;color:rgba(81,69,205,var(--text-opacity))}.text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:hover .group-hover\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:hover .group-hover\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:focus .group-focus\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:focus .group-focus\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-700:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.hover\:text-indigo-500:hover{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-indigo-600:active{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-opacity-75{--text-opacity:0.75}.text-opacity-100{--text-opacity:1}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.invisible{visibility:hidden}.whitespace-no-wrap{white-space:nowrap}.break-words{word-wrap:break-word;overflow-wrap:break-word}.break-all{word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-12{width:3rem}.w-24{width:6rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-auto{width:auto}.w-1\.5{width:.375rem}.w-2\.5{width:.625rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-9\/12{width:75%}.w-10\/12{width:83.333333%}.w-11\/12{width:91.666667%}.w-full{width:100%}.w-screen{width:100vw}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.gap-8{grid-gap:2rem;gap:2rem}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{-webkit-transform-origin:top right;transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.transition-all{-webkit-transition-property:all;transition-property:all}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}.transition-opacity{-webkit-transition-property:opacity;transition-property:opacity}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}.duration-200{-webkit-transition-duration:.2s;transition-duration:.2s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.animate-ping{-webkit-animation:ping 1s cubic-bezier(0,0,.2,1) infinite;animation:ping 1s cubic-bezier(0,0,.2,1) infinite}.animate-pulse{-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@media (min-width:640px){.sm\:space-y-0>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0px*(1 - var(--space-y-reverse)));margin-bottom:calc(0px*var(--space-y-reverse))}.sm\:space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.sm\:space-x-4>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(1rem*var(--space-x-reverse));margin-left:calc(1rem*(1 - var(--space-x-reverse)))}.sm\:rounded-md{border-radius:.375rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.sm\:grid{display:grid}.sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:h-10{height:2.5rem}.sm\:text-sm{font-size:.875rem}.sm\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:leading-5{line-height:1.25rem}.sm\:leading-7{line-height:1.75rem}.sm\:leading-9{line-height:2.25rem}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-7{margin-top:1.75rem;margin-bottom:1.75rem}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-10{width:2.5rem}.sm\:w-32{width:8rem}.sm\:w-auto{width:auto}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-2\/3{width:66.666667%}.sm\:w-2\/4{width:50%}.sm\:w-full{width:100%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:rounded-lg{border-radius:.5rem}.md\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:text-base{font-size:1rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:mt-0{margin-top:0}.md\:ml-2{margin-left:.5rem}.md\:ml-4{margin-left:1rem}.md\:ml-8{margin-left:2rem}.md\:-mr-8{margin-right:-2rem}.md\:max-w-xl{max-width:36rem}.md\:max-w-5xl{max-width:64rem}.md\:p-2{padding:.5rem}.md\:p-6{padding:1.5rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.md\:shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.md\:w-3\/5{width:60%}}@media (min-width:1024px){.lg\:bg-transparent{background-color:transparent}.lg\:border-transparent{border-color:transparent}.lg\:rounded-full{border-radius:9999px}.lg\:block{display:block}.lg\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.lg\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.lg\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.lg\:my-24{margin-top:6rem;margin-bottom:6rem}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:ml-16{margin-left:4rem}.lg\:-mr-16{margin-right:-4rem}.lg\:max-w-3xl{max-width:48rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pt-2{padding-top:.5rem}.lg\:pb-2{padding-bottom:.5rem}.lg\:pl-2{padding-left:.5rem}.lg\:top-1\/2{top:50%}.lg\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:w-40{width:10rem}.lg\:w-48{width:12rem}.lg\:w-1\/2{width:50%}.lg\:w-3\/5{width:60%}.lg\:w-3\/12{width:25%}.lg\:w-7\/12{width:58.333333%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:mr-0{margin-right:0}.xl\:ml-3{margin-left:.75rem}.xl\:ml-4{margin-left:1rem}.xl\:ml-20{margin-left:5rem}.xl\:ml-32{margin-left:8rem}.xl\:max-w-4xl{max-width:56rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:pr-3{padding-right:.75rem}.xl\:pb-4{padding-bottom:1rem}.xl\:top-1\/3{top:33.333333%}.xl\:w-64{width:16rem}.xl\:w-1\/4{width:25%}.xl\:w-2\/5{width:40%}.xl\:w-3\/5{width:60%}.xl\:w-2\/12{width:16.666667%}.xl\:w-6\/12{width:50%}.xl\:w-7\/12{width:58.333333%}}
1
+ /*! normalize.css v8.0.1 | MIT License | github.com/necolas/normalize.css */html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}main{display:block}h1{font-size:2em;margin:.67em 0}hr{-webkit-box-sizing:content-box;box-sizing:content-box;height:0;overflow:visible}pre{font-family:monospace,monospace;font-size:1em}a{background-color:transparent}abbr[title]{border-bottom:none;text-decoration:underline;-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp{font-family:monospace,monospace;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}img{border-style:none}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,input{overflow:visible}button,select{text-transform:none}[type=button],[type=reset],[type=submit],button{-webkit-appearance:button}[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner,button::-moz-focus-inner{border-style:none;padding:0}[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring,button:-moz-focusring{outline:1px dotted ButtonText}fieldset{padding:.35em .75em .625em}legend{-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;display:table;max-width:100%;padding:0;white-space:normal}progress{vertical-align:baseline}textarea{overflow:auto}[type=checkbox],[type=radio]{-webkit-box-sizing:border-box;box-sizing:border-box;padding:0}[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}[type=search]::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}details{display:block}summary{display:list-item}[hidden],template{display:none}blockquote,dd,dl,figure,h1,h2,h3,h4,h5,h6,hr,p,pre{margin:0}button{background-color:transparent;background-image:none}button:focus{outline:1px dotted;outline:5px auto -webkit-focus-ring-color}fieldset,ol,ul{margin:0;padding:0}ol,ul{list-style:none}html{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}*,:after,:before{-webkit-box-sizing:border-box;box-sizing:border-box;border:0 solid #d2d6dc}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-webkit-input-placeholder,textarea::-webkit-input-placeholder{color:#a0aec0}input::-moz-placeholder,textarea::-moz-placeholder{color:#a0aec0}input::-ms-input-placeholder,textarea::-ms-input-placeholder{color:#a0aec0}input::placeholder,textarea::placeholder{color:#a0aec0}[role=button],button{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}code,kbd,pre,samp{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}audio,canvas,embed,iframe,img,object,svg,video{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}a{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}img{border-width:0}.container{width:100%}@media (min-width:640px){.container{max-width:640px}}@media (min-width:768px){.container{max-width:768px}}@media (min-width:1024px){.container{max-width:1024px}}@media (min-width:1280px){.container{max-width:1280px}}.form-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-input::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-input::-moz-placeholder{color:#9fa6b2;opacity:1}.form-input::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-input::placeholder{color:#9fa6b2;opacity:1}.form-input:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-textarea{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-textarea::-webkit-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-moz-placeholder{color:#9fa6b2;opacity:1}.form-textarea::-ms-input-placeholder{color:#9fa6b2;opacity:1}.form-textarea::placeholder{color:#9fa6b2;opacity:1}.form-textarea:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-multiselect{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem .75rem;font-size:1rem;line-height:1.5}.form-multiselect:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-select{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;background-repeat:no-repeat;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.375rem;padding:.5rem 2.5rem .5rem .75rem;font-size:1rem;line-height:1.5;background-position:right .5rem center;background-size:1.5em 1.5em}.form-select::-ms-expand{color:#9fa6b2;border:none}@media not print{.form-select::-ms-expand{display:none}}@media print and (-ms-high-contrast:active),print and (-ms-high-contrast:none){.form-select{padding-right:.75rem}}.form-select:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E");border-color:transparent;background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-checkbox::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-checkbox{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px;border-radius:.25rem}.form-checkbox:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-checkbox:checked:focus,.form-radio:checked{border-color:transparent}.form-radio:checked{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E");background-color:currentColor;background-size:100% 100%;background-position:50%;background-repeat:no-repeat}@media not print{.form-radio::-ms-check{border-width:1px;color:transparent;background:inherit;border-color:inherit;border-radius:inherit}}.form-radio{-webkit-appearance:none;-moz-appearance:none;appearance:none;-webkit-print-color-adjust:exact;color-adjust:exact;display:inline-block;vertical-align:middle;background-origin:border-box;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-ms-flex-negative:0;flex-shrink:0;border-radius:100%;height:1rem;width:1rem;color:#3f83f8;background-color:#fff;border-color:#d2d6dc;border-width:1px}.form-radio:focus{outline:none;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45);border-color:#a4cafe}.form-radio:checked:focus{border-color:transparent}li.menu-top div.wp-menu-image img{display:initial;border-style:none}.ig-es-primary-button,.ig-es-send-queue-emails{border-color:transparent;padding:.5rem 1rem;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.ig-es-primary-button,.ig-es-send-queue-emails,.ig-es-title-button,.wp-heading-inline+.page-title-action{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;font-size:.875rem;line-height:1.25rem;font-weight:500;--text-opacity:1;--bg-opacity:1;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-title-button,.wp-heading-inline+.page-title-action{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity));color:#374151;color:rgba(55,65,81,var(--text-opacity));background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));padding:.25rem .75rem}.wrap .wp-heading-inline+.page-title-action{margin-left:.5rem}.ig-es-title-button:hover,.wp-heading-inline+.page-title-action:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.ig-es-title-button:focus,.wp-heading-inline+.page-title-action:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45);--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.ig-es-primary-button:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.ig-es-primary-button:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.ig-es-imp-button{display:-webkit-inline-box!important;display:-ms-inline-flexbox!important;display:inline-flex!important;-webkit-box-pack:center!important;-ms-flex-pack:center!important;justify-content:center!important;border-radius:.375rem!important;border-width:1px!important;border-color:transparent!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;background-color:#0e9f6e!important;background-color:rgba(14,159,110,var(--bg-opacity))!important;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform!important;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform!important;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1)!important;transition-timing-function:cubic-bezier(.4,0,.2,1)!important;-webkit-transition-duration:.15s!important;transition-duration:.15s!important}.ig-es-imp-button,.ig-es-imp-button:hover{--text-opacity:1!important;color:#fff!important;color:rgba(255,255,255,var(--text-opacity))!important;--bg-opacity:1!important}.ig-es-imp-button:hover{background-color:#31c48d!important;background-color:rgba(49,196,141,var(--bg-opacity))!important}.ig-es-imp-button:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(132,225,188,.45)!important;box-shadow:0 0 0 3px rgba(132,225,188,.45)!important}.ig-es-link-button{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;border-radius:.375rem;border-width:1px;border-color:transparent;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;background-color:#ff5a1f;background-color:rgba(255,90,31,var(--bg-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.ig-es-link-button,.ig-es-link-button:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity));--bg-opacity:1}.ig-es-link-button:hover{background-color:#ff8a4c;background-color:rgba(255,138,76,var(--bg-opacity))}.ig-es-link-button:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(253,186,140,.45);box-shadow:0 0 0 3px rgba(253,186,140,.45)}.ig-es-action.js-open .ig-es-action__header{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.form-input{--bg-opacity:1!important;background-color:#fff!important;background-color:rgba(255,255,255,var(--bg-opacity))!important;border-width:1px!important;border-radius:.375rem!important;-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;box-shadow:0 1px 2px 0 rgba(0,0,0,.05)!important;--border-opacity:1!important;border-color:#d2d6dc!important;border-color:rgba(210,214,220,var(--border-opacity))!important}.form-input:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important}.form-checkbox{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M5.707 7.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4a1 1 0 00-1.414-1.414L7 8.586 5.707 7.293z'/%3E%3C/svg%3E")}.form-radio{content:url("data:image/svg+xml;charset=utf-8,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Ccircle cx='8' cy='8' r='3'/%3E%3C/svg%3E")}.form-checkbox:checked,.form-radio:checked{--text-opacity:1!important;color:#5850ec!important;color:rgba(88,80,236,var(--text-opacity))!important}.form-select{font-size:.875rem!important;--border-opacity:1!important;border-color:#9fa6b2!important;border-color:rgba(159,166,178,var(--border-opacity))!important;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none'%3E%3Cpath d='M7 7l3-3 3 3m0 6l-3 3-3-3' stroke='%239fa6b2' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E")!important}.form-select:focus,input[type=number]:focus{outline:2px solid transparent!important;outline-offset:2px!important;-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;box-shadow:0 0 0 3px rgba(164,202,254,.45)!important;--border-opacity:1!important;border-color:#a4cafe!important;border-color:rgba(164,202,254,var(--border-opacity))!important}.es-check-toggle:checked~.es-mail-toggle-line{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.es-check-toggle:checked~.es-mail-toggle-dot{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-translate-x:100%}.es-mail-toggle-line{width:2.25rem;height:1.25rem;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity));-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot,.es-mail-toggle-line{display:block;--bg-opacity:1;border-radius:9999px}.es-mail-toggle-dot{width:.875rem;height:.875rem;margin-left:.25rem;position:absolute;top:0;bottom:0;-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.3s;transition-duration:.3s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.es-mail-toggle-dot:focus-within{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}[type=radio]:checked+.es-mailer-logo{-webkit-transition-property:all;transition-property:all;-webkit-transition-duration:.1s;transition-duration:.1s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));--transform-scale-x:1.1;--transform-scale-y:1.1;-webkit-box-shadow:0 0 3px 1px #5a67d8;box-shadow:0 0 3px 1px #5a67d8}[type=radio]:checked+.es-mailer-logo:hover{border-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.wp-core-ui .button,.wp-core-ui .button-secondary{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{font-size:.875rem;border-radius:.375rem;border-width:1px;line-height:1.25rem;font-weight:500;--text-opacity:1}.wp-core-ui .button-primary{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.wp-core-ui .button-primary:hover,.wp-core-ui .button:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.wp-core-ui .search-box input[name=s],.wp-core-ui select{border-radius:.375rem}.wp-core-ui #bulk-action-selector-top,.wp-core-ui #doaction,.wp-core-ui #doaction2,.wp-core-ui #filter-by-date,.wp-core-ui #post-query-submit,.wp-core-ui #poststuff select,.wp-core-ui #search-submit{cursor:pointer;line-height:1.25rem;--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity));background-color:transparent;font-size:.875rem}.wp-core-ui #search-submit{margin-left:.375rem}.es-add-or-condition:hover,.wp-core-ui #doaction2:hover .wp-core-ui #post-query-submit:hover,.wp-core-ui #doaction:hover,.wp-core-ui #search-submit:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,var(--border-opacity))}.es-add-or-condition:focus,.wp-core-ui #doaction2:focus .wp-core-ui #post-query-submit:focus,.wp-core-ui #doaction:focus,.wp-core-ui #search-submit:focus{outline:2px solid transparent;outline-offset:2px;-webkit-box-shadow:0 0 0 3px rgba(159,166,178,.45);box-shadow:0 0 0 3px rgba(159,166,178,.45)}.es-items-lists table.fixed,.post-type-es_template table.fixed{margin-top:1rem;margin-bottom:1rem;-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);border-radius:.5rem;overflow:hidden}.es-items-lists table.fixed tfoot td,.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead td,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead td,.post-type-es_template table.fixed thead th{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));font-weight:500;letter-spacing:.05em}.es-items-lists table.fixed tfoot th,.es-items-lists table.fixed thead th,.post-type-es_template table.fixed tfoot th,.post-type-es_template table.fixed thead th{padding-top:.5rem;padding-bottom:.5rem}.es-items-lists .widefat thead td input,.post-type-es_template .widefat thead td input{margin-right:1.5rem}.post-type-es_template .wrap{padding-top:1rem;font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.post-type-es_template .wrap>h1{padding-top:0;font-weight:600;--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));line-height:2.25rem}.es-items-lists .striped>tbody tr,.post-type-es_template .striped>tbody tr{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));padding-top:.5rem;padding-bottom:.5rem}.es-campaign-reports-table .striped>tbody tr{border-bottom-width:2px}.es-items-lists .striped>tbody>:nth-child(odd),.post-type-es_template .striped>tbody>:nth-child(odd){--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.es_onboard_email{padding:.25rem .75rem!important}.es_reports_table_header{border-bottom-width:1px;--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity));--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity));text-align:left;font-size:.875rem;line-height:1rem;font-weight:500;--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity));letter-spacing:.05em}.importing-progress,.progress{width:100%;height:2rem;--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity));overflow:hidden;position:relative;text-align:right;line-height:1rem;margin-top:.375rem;border-radius:.25rem}.importing-progress span.bar,.progress span.bar{display:block;position:absolute;line-height:2.5rem;padding-top:.25rem;padding-bottom:.25rem;top:0;bottom:0;left:0;border-radius:.25rem;overflow:hidden;background-image:-webkit-gradient(linear,left top,right top,from(var(--gradient-color-stops)));background-image:linear-gradient(90deg,var(--gradient-color-stops));--gradient-from-color:#42389d;--gradient-color-stops:var(--gradient-from-color),var(--gradient-to-color,rgba(66,56,157,0));--gradient-to-color:#6875f5;--bg-opacity:1;background-color:#8da2fb;background-color:rgba(141,162,251,var(--bg-opacity))}.es_sequences_wrapper .ig-es-campaign-rules label{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity));font-weight:500;--text-opacity:0.75;font-size:.875rem;letter-spacing:.025em;line-height:1.5rem}.email-subscribers_page_es_workflows #ig_es_workflow_trigger select option:disabled{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.installing{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity));-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.success{--text-opacity:1!important;color:#4b5563!important;color:rgba(75,85,99,var(--text-opacity))!important;font-weight:500!important;-webkit-animation:none!important;animation:none!important}.es_mailchimp_lists_and_status_input [type=checkbox]:checked+label.skipping{--text-opacity:1!important;color:#9fa6b2!important;color:rgba(159,166,178,var(--text-opacity))!important;-webkit-animation:none!important;animation:none!important}.es_primary_link{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex;-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center;margin-top:1rem;font-size:.875rem;font-weight:700;--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);border-bottom-width:2px;border-color:transparent;cursor:pointer}.es_primary_link:active,.es_primary_link:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.es_primary_link:focus{outline:2px solid transparent;outline-offset:2px;--border-opacity:1;border-color:#5145cd;border-color:rgba(81,69,205,var(--border-opacity));-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.es_helper_text{font-style:italic;font-size:.75rem;font-weight:400;--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity));line-height:1.375}.es-documentation{border-color:transparent;border-radius:9999px;-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-duration:.15s;transition-duration:.15s;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05);--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.es-documentation:hover{border-radius:9999px;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.es-documentation:focus,.es-documentation:hover{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity));-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05);--bg-opacity:1}.es-documentation:focus{background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.space-y-1>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.25rem*var(--space-y-reverse))}.space-y-2>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.5rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.5rem*var(--space-y-reverse))}.space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.space-x-3>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(0.75rem*var(--space-x-reverse));margin-left:calc(0.75rem*(1 - var(--space-x-reverse)))}.space-y-4>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1rem*var(--space-y-reverse))}.space-y-5>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(1.25rem*(1 - var(--space-y-reverse)));margin-bottom:calc(1.25rem*var(--space-y-reverse))}.divide-y>:not(template)~:not(template){--divide-y-reverse:0;border-top-width:calc(1px*(1 - var(--divide-y-reverse)));border-bottom-width:calc(1px*var(--divide-y-reverse))}.divide-gray-200>:not(template)~:not(template){--divide-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--divide-opacity))}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-black{--bg-opacity:1;background-color:#000;background-color:rgba(0,0,0,var(--bg-opacity))}.bg-gray-50{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.bg-gray-100{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-gray-200{--bg-opacity:1;background-color:#e5e7eb;background-color:rgba(229,231,235,var(--bg-opacity))}.bg-gray-300{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.bg-gray-500{--bg-opacity:1;background-color:#6b7280;background-color:rgba(107,114,128,var(--bg-opacity))}.bg-red-50{--bg-opacity:1;background-color:#fdf2f2;background-color:rgba(253,242,242,var(--bg-opacity))}.bg-red-100{--bg-opacity:1;background-color:#fde8e8;background-color:rgba(253,232,232,var(--bg-opacity))}.bg-yellow-100{--bg-opacity:1;background-color:#fdf6b2;background-color:rgba(253,246,178,var(--bg-opacity))}.bg-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,var(--bg-opacity))}.bg-green-300{--bg-opacity:1;background-color:#84e1bc;background-color:rgba(132,225,188,var(--bg-opacity))}.bg-green-600{--bg-opacity:1;background-color:#057a55;background-color:rgba(5,122,85,var(--bg-opacity))}.bg-teal-50{--bg-opacity:1;background-color:#edfafa;background-color:rgba(237,250,250,var(--bg-opacity))}.bg-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,var(--bg-opacity))}.bg-blue-300{--bg-opacity:1;background-color:#a4cafe;background-color:rgba(164,202,254,var(--bg-opacity))}.bg-indigo-200{--bg-opacity:1;background-color:#cddbfe;background-color:rgba(205,219,254,var(--bg-opacity))}.bg-indigo-500{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.bg-indigo-600{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.bg-indigo-700{--bg-opacity:1;background-color:#5145cd;background-color:rgba(81,69,205,var(--bg-opacity))}.bg-indigo-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,var(--bg-opacity))}.bg-pink-200{--bg-opacity:1;background-color:#fad1e8;background-color:rgba(250,209,232,var(--bg-opacity))}.group:focus .group-focus\:bg-gray-400,.group:hover .group-hover\:bg-gray-400{--bg-opacity:1;background-color:#9fa6b2;background-color:rgba(159,166,178,var(--bg-opacity))}.hover\:bg-gray-50:hover{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.hover\:bg-gray-100:hover{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.hover\:bg-gray-300:hover{--bg-opacity:1;background-color:#d2d6dc;background-color:rgba(210,214,220,var(--bg-opacity))}.hover\:bg-green-500:hover{--bg-opacity:1;background-color:#0e9f6e;background-color:rgba(14,159,110,var(--bg-opacity))}.hover\:bg-indigo-500:hover{--bg-opacity:1;background-color:#6875f5;background-color:rgba(104,117,245,var(--bg-opacity))}.hover\:bg-indigo-600:hover{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity))}.focus\:bg-gray-50:focus{--bg-opacity:1;background-color:#f9fafb;background-color:rgba(249,250,251,var(--bg-opacity))}.focus\:bg-gray-100:focus{--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-opacity))}.bg-opacity-75{--bg-opacity:0.75}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{--border-opacity:1;border-color:#f4f5f7;border-color:rgba(244,245,247,var(--border-opacity))}.border-gray-200{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.border-gray-300{--border-opacity:1;border-color:#d2d6dc;border-color:rgba(210,214,220,var(--border-opacity))}.border-gray-400{--border-opacity:1;border-color:#9fa6b2;border-color:rgba(159,166,178,var(--border-opacity))}.border-indigo-300{--border-opacity:1;border-color:#b4c6fc;border-color:rgba(180,198,252,var(--border-opacity))}.border-indigo-500{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity))}.border-indigo-600{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.hover\:border-gray-200:hover{--border-opacity:1;border-color:#e5e7eb;border-color:rgba(229,231,235,var(--border-opacity))}.hover\:border-red-400:hover{--border-opacity:1;border-color:#f98080;border-color:rgba(249,128,128,var(--border-opacity))}.hover\:border-indigo-600:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity))}.focus\:border-blue-300:focus{--border-opacity:1;border-color:#a4cafe;border-color:rgba(164,202,254,var(--border-opacity))}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.border-dashed{border-style:dashed}.border-dotted{border-style:dotted}.border-0{border-width:0}.border-2{border-width:2px}.border{border-width:1px}.border-t{border-top-width:1px}.border-r{border-right-width:1px}.border-b{border-bottom-width:1px}.cursor-default{cursor:default}.cursor-pointer{cursor:pointer}.cursor-not-allowed{cursor:not-allowed}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:-webkit-box;display:-ms-flexbox;display:flex}.inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.table{display:table}.table-caption{display:table-caption}.table-cell{display:table-cell}.grid{display:grid}.contents{display:contents}.hidden{display:none}.flex-row{-webkit-box-orient:horizontal;-ms-flex-direction:row;flex-direction:row}.flex-col,.flex-row{-webkit-box-direction:normal}.flex-col{-webkit-box-orient:vertical;-ms-flex-direction:column;flex-direction:column}.flex-wrap{-ms-flex-wrap:wrap;flex-wrap:wrap}.items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.clearfix:after{content:"";display:table;clear:both}.font-sans{font-family:system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji}.font-mono{font-family:Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-thin{font-weight:200}.font-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-2{height:.5rem}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-7{height:1.75rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-12{height:3rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.h-1\.5{height:.375rem}.h-2\.5{height:.625rem}.h-full{height:100%}.text-xs{font-size:.75rem}.text-sm{font-size:.875rem}.text-base{font-size:1rem}.text-lg{font-size:1.125rem}.text-xl{font-size:1.25rem}.text-2xl{font-size:1.5rem}.text-3xl{font-size:1.875rem}.text-4xl{font-size:2.25rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-9{line-height:2.25rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-none{list-style-type:none}.list-disc{list-style-type:disc}.list-decimal{list-style-type:decimal}.m-4{margin:1rem}.my-0{margin-top:0;margin-bottom:0}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mx-1{margin-left:.25rem;margin-right:.25rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.mx-2{margin-left:.5rem;margin-right:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.mx-6{margin-left:1.5rem;margin-right:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.mx-8{margin-left:2rem;margin-right:2rem}.mx-10{margin-left:2.5rem;margin-right:2.5rem}.my-12{margin-top:3rem;margin-bottom:3rem}.my-16{margin-top:4rem;margin-bottom:4rem}.mx-auto{margin-left:auto;margin-right:auto}.-my-4{margin-top:-1rem;margin-bottom:-1rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.25rem}.mr-1{margin-right:.25rem}.mb-1{margin-bottom:.25rem}.ml-1{margin-left:.25rem}.mt-2{margin-top:.5rem}.mr-2{margin-right:.5rem}.mb-2{margin-bottom:.5rem}.ml-2{margin-left:.5rem}.mt-3{margin-top:.75rem}.mr-3{margin-right:.75rem}.mb-3{margin-bottom:.75rem}.ml-3{margin-left:.75rem}.mt-4{margin-top:1rem}.mr-4{margin-right:1rem}.mb-4{margin-bottom:1rem}.ml-4{margin-left:1rem}.mt-5{margin-top:1.25rem}.ml-5{margin-left:1.25rem}.mt-6{margin-top:1.5rem}.mr-6{margin-right:1.5rem}.mb-6{margin-bottom:1.5rem}.ml-6{margin-left:1.5rem}.mt-7{margin-top:1.75rem}.mb-7{margin-bottom:1.75rem}.ml-7{margin-left:1.75rem}.mt-8{margin-top:2rem}.mr-8{margin-right:2rem}.ml-8{margin-left:2rem}.mt-10{margin-top:2.5rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.mb-12{margin-bottom:3rem}.ml-12{margin-left:3rem}.ml-14{margin-left:3.5rem}.mt-16{margin-top:4rem}.mr-16{margin-right:4rem}.ml-16{margin-left:4rem}.mt-0\.5{margin-top:.125rem}.mt-1\.5{margin-top:.375rem}.mr-1\.5{margin-right:.375rem}.mt-2\.5{margin-top:.625rem}.-mt-1{margin-top:-.25rem}.-mr-1{margin-right:-.25rem}.-mb-1{margin-bottom:-.25rem}.-mb-2{margin-bottom:-.5rem}.-mt-3{margin-top:-.75rem}.-mr-3{margin-right:-.75rem}.-mb-4{margin-bottom:-1rem}.-mt-5{margin-top:-1.25rem}.-ml-6{margin-left:-1.5rem}.-ml-8{margin-left:-2rem}.-mb-0\.5{margin-bottom:-.125rem}.-mt-1\.5{margin-top:-.375rem}.-mt-2\.5{margin-top:-.625rem}.max-h-full{max-height:100%}.max-w-3xl{max-width:48rem}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.min-h-screen{min-height:100vh}.min-w-0{min-width:0}.min-w-full{min-width:100%}.object-cover{-o-object-fit:cover;object-fit:cover}.opacity-0{opacity:0}.opacity-25{opacity:.25}.opacity-50{opacity:.5}.opacity-75{opacity:.75}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.overflow-auto{overflow:auto}.overflow-hidden{overflow:hidden}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.p-0{padding:0}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-13{padding:3.25rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.px-1{padding-left:.25rem;padding-right:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.px-3{padding-left:.75rem;padding-right:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.px-4{padding-left:1rem;padding-right:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-7{padding-top:1.75rem;padding-bottom:1.75rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-12{padding-top:3rem;padding-bottom:3rem}.px-12{padding-left:3rem;padding-right:3rem}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-1\.5{padding-left:.375rem;padding-right:.375rem}.pt-1{padding-top:.25rem}.pr-1{padding-right:.25rem}.pb-1{padding-bottom:.25rem}.pl-1{padding-left:.25rem}.pt-2{padding-top:.5rem}.pr-2{padding-right:.5rem}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.75rem}.pr-3{padding-right:.75rem}.pb-3{padding-bottom:.75rem}.pl-3{padding-left:.75rem}.pt-4{padding-top:1rem}.pr-4{padding-right:1rem}.pb-4{padding-bottom:1rem}.pl-4{padding-left:1rem}.pt-5{padding-top:1.25rem}.pb-5{padding-bottom:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.pt-10{padding-top:2.5rem}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pb-12{padding-bottom:3rem}.pl-16{padding-left:4rem}.pt-0\.5{padding-top:.125rem}.pl-0\.5{padding-left:.125rem}.pt-1\.5{padding-top:.375rem}.pb-1\.5{padding-bottom:.375rem}.pointer-events-none{pointer-events:none}.static{position:static}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:-webkit-sticky;position:sticky}.inset-0{right:0;left:0}.inset-0,.inset-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.bottom-0{bottom:0}.left-0{left:0}.bottom-2{bottom:.5rem}.bottom-5{bottom:1.25rem}.top-8{top:2rem}.top-10{top:2.5rem}.top-20{top:5rem}.resize{resize:both}.shadow-xs{-webkit-box-shadow:0 0 0 1px rgba(0,0,0,.05);box-shadow:0 0 0 1px rgba(0,0,0,.05)}.shadow-sm{-webkit-box-shadow:0 1px 2px 0 rgba(0,0,0,.05);box-shadow:0 1px 2px 0 rgba(0,0,0,.05)}.shadow{-webkit-box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06);box-shadow:0 1px 3px 0 rgba(0,0,0,.1),0 1px 2px 0 rgba(0,0,0,.06)}.shadow-md{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.shadow-lg{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.shadow-inner{-webkit-box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06);box-shadow:inset 0 2px 4px 0 rgba(0,0,0,.06)}.hover\:shadow-md:hover{-webkit-box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06);box-shadow:0 4px 6px -1px rgba(0,0,0,.1),0 2px 4px -1px rgba(0,0,0,.06)}.focus\:shadow-lg:focus{-webkit-box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05);box-shadow:0 10px 15px -3px rgba(0,0,0,.1),0 4px 6px -2px rgba(0,0,0,.05)}.focus\:shadow-outline:focus{-webkit-box-shadow:0 0 0 3px rgba(118,169,250,.45);box-shadow:0 0 0 3px rgba(118,169,250,.45)}.focus\:shadow-outline-blue:focus{-webkit-box-shadow:0 0 0 3px rgba(164,202,254,.45);box-shadow:0 0 0 3px rgba(164,202,254,.45)}.focus\:shadow-outline-red:focus{-webkit-box-shadow:0 0 0 3px rgba(248,180,180,.45);box-shadow:0 0 0 3px rgba(248,180,180,.45)}.focus\:shadow-outline-indigo:focus{-webkit-box-shadow:0 0 0 3px rgba(180,198,252,.45);box-shadow:0 0 0 3px rgba(180,198,252,.45)}.fill-current{fill:currentColor}.table-fixed{table-layout:fixed}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-white{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.text-black{--text-opacity:1;color:#000;color:rgba(0,0,0,var(--text-opacity))}.text-gray-300{--text-opacity:1;color:#d2d6dc;color:rgba(210,214,220,var(--text-opacity))}.text-gray-400{--text-opacity:1;color:#9fa6b2;color:rgba(159,166,178,var(--text-opacity))}.text-gray-500{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.text-gray-600{--text-opacity:1;color:#4b5563;color:rgba(75,85,99,var(--text-opacity))}.text-gray-700{--text-opacity:1;color:#374151;color:rgba(55,65,81,var(--text-opacity))}.text-gray-800{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.text-red-400{--text-opacity:1;color:#f98080;color:rgba(249,128,128,var(--text-opacity))}.text-red-500{--text-opacity:1;color:#f05252;color:rgba(240,82,82,var(--text-opacity))}.text-red-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,var(--text-opacity))}.text-red-800{--text-opacity:1;color:#9b1c1c;color:rgba(155,28,28,var(--text-opacity))}.text-orange-400{--text-opacity:1;color:#ff8a4c;color:rgba(255,138,76,var(--text-opacity))}.text-orange-500{--text-opacity:1;color:#ff5a1f;color:rgba(255,90,31,var(--text-opacity))}.text-yellow-400{--text-opacity:1;color:#e3a008;color:rgba(227,160,8,var(--text-opacity))}.text-yellow-600{--text-opacity:1;color:#9f580a;color:rgba(159,88,10,var(--text-opacity))}.text-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,var(--text-opacity))}.text-green-500{--text-opacity:1;color:#0e9f6e;color:rgba(14,159,110,var(--text-opacity))}.text-green-600{--text-opacity:1;color:#057a55;color:rgba(5,122,85,var(--text-opacity))}.text-green-800{--text-opacity:1;color:#03543f;color:rgba(3,84,63,var(--text-opacity))}.text-teal-400{--text-opacity:1;color:#16bdca;color:rgba(22,189,202,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,var(--text-opacity))}.text-teal-800{--text-opacity:1;color:#05505c;color:rgba(5,80,92,var(--text-opacity))}.text-blue-400{--text-opacity:1;color:#76a9fa;color:rgba(118,169,250,var(--text-opacity))}.text-blue-500{--text-opacity:1;color:#3f83f8;color:rgba(63,131,248,var(--text-opacity))}.text-blue-700{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.text-blue-800{--text-opacity:1;color:#1e429f;color:rgba(30,66,159,var(--text-opacity))}.text-indigo-100{--text-opacity:1;color:#e5edff;color:rgba(229,237,255,var(--text-opacity))}.text-indigo-400{--text-opacity:1;color:#8da2fb;color:rgba(141,162,251,var(--text-opacity))}.text-indigo-500{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.text-indigo-600{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-indigo-700{--text-opacity:1;color:#5145cd;color:rgba(81,69,205,var(--text-opacity))}.text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:hover .group-hover\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:hover .group-hover\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.group:focus .group-focus\:text-gray-900{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.group:focus .group-focus\:text-indigo-800{--text-opacity:1;color:#42389d;color:rgba(66,56,157,var(--text-opacity))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.hover\:text-gray-500:hover{--text-opacity:1;color:#6b7280;color:rgba(107,114,128,var(--text-opacity))}.hover\:text-gray-800:hover{--text-opacity:1;color:#252f3f;color:rgba(37,47,63,var(--text-opacity))}.hover\:text-gray-900:hover{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.hover\:text-blue-700:hover{--text-opacity:1;color:#1a56db;color:rgba(26,86,219,var(--text-opacity))}.hover\:text-indigo-500:hover{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.focus\:text-gray-900:focus{--text-opacity:1;color:#161e2e;color:rgba(22,30,46,var(--text-opacity))}.active\:text-indigo-600:active{--text-opacity:1;color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.text-opacity-75{--text-opacity:0.75}.text-opacity-100{--text-opacity:1}.italic{font-style:italic}.not-italic{font-style:normal}.uppercase{text-transform:uppercase}.lowercase{text-transform:lowercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-tight{letter-spacing:-.025em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.select-none{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.select-all{-webkit-user-select:all;-moz-user-select:all;-ms-user-select:all;user-select:all}.align-middle{vertical-align:middle}.align-bottom{vertical-align:bottom}.visible{visibility:visible}.invisible{visibility:hidden}.whitespace-no-wrap{white-space:nowrap}.break-words{word-wrap:break-word;overflow-wrap:break-word}.break-all{word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.w-0{width:0}.w-2{width:.5rem}.w-3{width:.75rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-7{width:1.75rem}.w-8{width:2rem}.w-12{width:3rem}.w-24{width:6rem}.w-40{width:10rem}.w-48{width:12rem}.w-56{width:14rem}.w-auto{width:auto}.w-1\.5{width:.375rem}.w-2\.5{width:.625rem}.w-1\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-9\/12{width:75%}.w-10\/12{width:83.333333%}.w-11\/12{width:91.666667%}.w-full{width:100%}.w-screen{width:100vw}.z-10{z-index:10}.z-20{z-index:20}.z-40{z-index:40}.z-50{z-index:50}.gap-8{grid-gap:2rem;gap:2rem}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.transform{--transform-translate-x:0;--transform-translate-y:0;--transform-rotate:0;--transform-skew-x:0;--transform-skew-y:0;--transform-scale-x:1;--transform-scale-y:1;-webkit-transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y));transform:translateX(var(--transform-translate-x)) translateY(var(--transform-translate-y)) rotate(var(--transform-rotate)) skewX(var(--transform-skew-x)) skewY(var(--transform-skew-y)) scaleX(var(--transform-scale-x)) scaleY(var(--transform-scale-y))}.origin-top-right{-webkit-transform-origin:top right;transform-origin:top right}.scale-95{--transform-scale-x:.95;--transform-scale-y:.95}.scale-100{--transform-scale-x:1;--transform-scale-y:1}.translate-x-0{--transform-translate-x:0}.-translate-x-full{--transform-translate-x:-100%}.transition-all{-webkit-transition-property:all;transition-property:all}.transition{-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform}.transition-opacity{-webkit-transition-property:opacity;transition-property:opacity}.ease-in{-webkit-transition-timing-function:cubic-bezier(.4,0,1,1);transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{-webkit-transition-timing-function:cubic-bezier(0,0,.2,1);transition-timing-function:cubic-bezier(0,0,.2,1)}.ease-in-out{-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-75{-webkit-transition-duration:75ms;transition-duration:75ms}.duration-100{-webkit-transition-duration:.1s;transition-duration:.1s}.duration-150{-webkit-transition-duration:.15s;transition-duration:.15s}.duration-200{-webkit-transition-duration:.2s;transition-duration:.2s}.duration-300{-webkit-transition-duration:.3s;transition-duration:.3s}@-webkit-keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes spin{to{-webkit-transform:rotate(1turn);transform:rotate(1turn)}}@keyframes ping{75%,to{-webkit-transform:scale(2);transform:scale(2);opacity:0}}@keyframes pulse{50%{opacity:.5}}@keyframes bounce{0%,to{-webkit-transform:translateY(-25%);transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{-webkit-transform:none;transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.animate-spin{-webkit-animation:spin 1s linear infinite;animation:spin 1s linear infinite}.animate-ping{-webkit-animation:ping 1s cubic-bezier(0,0,.2,1) infinite;animation:ping 1s cubic-bezier(0,0,.2,1) infinite}.animate-pulse{-webkit-animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite;animation:pulse 2s cubic-bezier(.4,0,.6,1) infinite}@media (min-width:640px){.sm\:space-y-0>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0px*(1 - var(--space-y-reverse)));margin-bottom:calc(0px*var(--space-y-reverse))}.sm\:space-y-3>:not(template)~:not(template){--space-y-reverse:0;margin-top:calc(0.75rem*(1 - var(--space-y-reverse)));margin-bottom:calc(0.75rem*var(--space-y-reverse))}.sm\:space-x-4>:not(template)~:not(template){--space-x-reverse:0;margin-right:calc(1rem*var(--space-x-reverse));margin-left:calc(1rem*(1 - var(--space-x-reverse)))}.sm\:rounded-md{border-radius:.375rem}.sm\:rounded-lg{border-radius:.5rem}.sm\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.sm\:grid{display:grid}.sm\:flex-row-reverse{-webkit-box-orient:horizontal;-webkit-box-direction:reverse;-ms-flex-direction:row-reverse;flex-direction:row-reverse}.sm\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.sm\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.sm\:h-10{height:2.5rem}.sm\:text-sm{font-size:.875rem}.sm\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:leading-5{line-height:1.25rem}.sm\:leading-7{line-height:1.75rem}.sm\:leading-9{line-height:2.25rem}.sm\:my-0{margin-top:0;margin-bottom:0}.sm\:mx-0{margin-left:0;margin-right:0}.sm\:my-7{margin-top:1.75rem;margin-bottom:1.75rem}.sm\:my-8{margin-top:2rem;margin-bottom:2rem}.sm\:my-12{margin-top:3rem;margin-bottom:3rem}.sm\:mt-0{margin-top:0}.sm\:ml-3{margin-left:.75rem}.sm\:ml-4{margin-left:1rem}.sm\:mt-5{margin-top:1.25rem}.sm\:max-w-lg{max-width:32rem}.sm\:p-6{padding:1.5rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-2{padding-left:.5rem;padding-right:.5rem}.sm\:px-4{padding-left:1rem;padding-right:1rem}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:pb-4{padding-bottom:1rem}.sm\:text-left{text-align:left}.sm\:align-middle{vertical-align:middle}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-10{width:2.5rem}.sm\:w-32{width:8rem}.sm\:w-auto{width:auto}.sm\:w-1\/2{width:50%}.sm\:w-1\/3{width:33.333333%}.sm\:w-2\/3{width:66.666667%}.sm\:w-2\/4{width:50%}.sm\:w-full{width:100%}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:768px){.md\:rounded-lg{border-radius:.5rem}.md\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.md\:items-start{-webkit-box-align:start;-ms-flex-align:start;align-items:flex-start}.md\:items-center{-webkit-box-align:center;-ms-flex-align:center;align-items:center}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:text-base{font-size:1rem}.md\:mx-0{margin-left:0;margin-right:0}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mx-auto{margin-left:auto;margin-right:auto}.md\:mt-0{margin-top:0}.md\:ml-2{margin-left:.5rem}.md\:ml-4{margin-left:1rem}.md\:ml-8{margin-left:2rem}.md\:-mr-8{margin-right:-2rem}.md\:max-w-xl{max-width:36rem}.md\:max-w-5xl{max-width:64rem}.md\:p-2{padding:.5rem}.md\:p-6{padding:1.5rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:px-1{padding-left:.25rem;padding-right:.25rem}.md\:px-2{padding-left:.5rem;padding-right:.5rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.md\:shadow-xl{-webkit-box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.md\:w-3\/5{width:60%}}@media (min-width:1024px){.lg\:bg-transparent{background-color:transparent}.lg\:border-transparent{border-color:transparent}.lg\:rounded-full{border-radius:9999px}.lg\:block{display:block}.lg\:flex{display:-webkit-box;display:-ms-flexbox;display:flex}.lg\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.lg\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.lg\:my-24{margin-top:6rem;margin-bottom:6rem}.lg\:mx-auto{margin-left:auto;margin-right:auto}.lg\:ml-16{margin-left:4rem}.lg\:-mr-16{margin-right:-4rem}.lg\:max-w-3xl{max-width:48rem}.lg\:p-6{padding:1.5rem}.lg\:p-8{padding:2rem}.lg\:px-3{padding-left:.75rem;padding-right:.75rem}.lg\:px-4{padding-left:1rem;padding-right:1rem}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:pt-2{padding-top:.5rem}.lg\:pb-2{padding-bottom:.5rem}.lg\:pl-2{padding-left:.5rem}.lg\:top-1\/2{top:50%}.lg\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:w-40{width:10rem}.lg\:w-48{width:12rem}.lg\:w-1\/2{width:50%}.lg\:w-3\/5{width:60%}.lg\:w-3\/12{width:25%}.lg\:w-7\/12{width:58.333333%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:mr-0{margin-right:0}.xl\:ml-2{margin-left:.5rem}.xl\:ml-3{margin-left:.75rem}.xl\:ml-4{margin-left:1rem}.xl\:ml-20{margin-left:5rem}.xl\:ml-32{margin-left:8rem}.xl\:max-w-4xl{max-width:56rem}.xl\:px-4{padding-left:1rem;padding-right:1rem}.xl\:pr-3{padding-right:.75rem}.xl\:pb-4{padding-bottom:1rem}.xl\:top-1\/3{top:33.333333%}.xl\:w-64{width:16rem}.xl\:w-1\/4{width:25%}.xl\:w-2\/5{width:40%}.xl\:w-3\/5{width:60%}.xl\:w-2\/12{width:16.666667%}.xl\:w-6\/12{width:50%}.xl\:w-7\/12{width:58.333333%}}
lite/admin/js/email-subscribers-admin.js CHANGED
@@ -617,10 +617,10 @@
617
  if ( response.hasOwnProperty('conditions_html') ) {
618
  let conditions = $.parseHTML(response.conditions_html);
619
  $(conditions).find('.campaign-name').each(function(){
620
- let campaing_id = $(this).data('campaign-id');
621
- if (edited_campaign_data.hasOwnProperty(campaing_id)) {
622
- let campaing_name = edited_campaign_data[campaing_id];
623
- $(this).text(campaing_name);
624
  }
625
  });
626
  $(condition_container_elem).find('.ig-es-conditions-render-wrapper').append($(conditions));
617
  if ( response.hasOwnProperty('conditions_html') ) {
618
  let conditions = $.parseHTML(response.conditions_html);
619
  $(conditions).find('.campaign-name').each(function(){
620
+ let campaign_id = $(this).data('campaign-id');
621
+ if (edited_campaign_data.hasOwnProperty(campaign_id)) {
622
+ let campaign_name = edited_campaign_data[campaign_id];
623
+ $(this).text(campaign_name);
624
  }
625
  });
626
  $(condition_container_elem).find('.ig-es-conditions-render-wrapper').append($(conditions));
lite/admin/partials/dashboard.php CHANGED
@@ -43,7 +43,6 @@ $reports_url = admin_url( 'admin.php?page=es_reports' );
43
  $templates_url = admin_url( 'edit.php?post_type=es_template' );
44
  $settings_url = admin_url( 'admin.php?page=es_settings' );
45
  $facebook_url = 'https://www.facebook.com/groups/2298909487017349/';
46
- $setup_email_sending_doc = 'https://www.icegram.com/documentation/how-to-configure-email-sending-in-email-subscribers';
47
 
48
  $feature_blocks = array(
49
  'form' => array(
@@ -84,7 +83,7 @@ $feature_blocks = array(
84
  'cta_text' => __('Start', 'email-subscribers'),
85
  'feature_url' => $new_sequence_url,
86
  'graphics_img' => 'lite/admin/images/dashboard-autoresponder-sequence.png',
87
- 'documentation_url' => 'https://www.icegram.com/documentation/email-sequence/',
88
  ),
89
  );
90
 
43
  $templates_url = admin_url( 'edit.php?post_type=es_template' );
44
  $settings_url = admin_url( 'admin.php?page=es_settings' );
45
  $facebook_url = 'https://www.facebook.com/groups/2298909487017349/';
 
46
 
47
  $feature_blocks = array(
48
  'form' => array(
83
  'cta_text' => __('Start', 'email-subscribers'),
84
  'feature_url' => $new_sequence_url,
85
  'graphics_img' => 'lite/admin/images/dashboard-autoresponder-sequence.png',
86
+ 'documentation_url' => 'https://www.icegram.com/documentation/email-sequence/?utm_source=in_app&utm_medium=sequence&utm_campaign=es_doc_upsell',
87
  ),
88
  );
89
 
lite/admin/partials/onboarding.php CHANGED
@@ -422,7 +422,7 @@
422
  >
423
  <?php echo esc_html__('Done! Now speed up your success!', 'email-subscribers'); ?>
424
  </h3>
425
- <input type="hidden" id="sign-up-list" name="list" value="hN8OkYzujUlKgDgfCTEcIA"/>
426
  <input type="hidden" id="sign-up-form-source" name="form-source" value=""/>
427
  <div class="space-y-3 text-gray-800">
428
 
422
  >
423
  <?php echo esc_html__('Done! Now speed up your success!', 'email-subscribers'); ?>
424
  </h3>
425
+ <input type="hidden" id="sign-up-list" name="list" value="bc4f8995201a"/>
426
  <input type="hidden" id="sign-up-form-source" name="form-source" value=""/>
427
  <div class="space-y-3 text-gray-800">
428
 
lite/includes/class-email-subscribers.php CHANGED
@@ -793,6 +793,7 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
793
  // Data Types
794
  'lite/includes/workflows/data-types/abstracts/class-es-data-type-form-data.php',
795
  'lite/includes/workflows/data-types/class-es-data-type-user.php',
 
796
  'lite/includes/workflows/class-es-workflow-data-types.php',
797
 
798
  'lite/includes/workflows/variables/class-es-workflow-data-types.php',
793
  // Data Types
794
  'lite/includes/workflows/data-types/abstracts/class-es-data-type-form-data.php',
795
  'lite/includes/workflows/data-types/class-es-data-type-user.php',
796
+ 'lite/includes/workflows/data-types/class-es-data-type-subscriber.php',
797
  'lite/includes/workflows/class-es-workflow-data-types.php',
798
 
799
  'lite/includes/workflows/variables/class-es-workflow-data-types.php',
lite/includes/classes/class-es-actions.php CHANGED
@@ -196,8 +196,6 @@ if ( ! class_exists( 'ES_Actions' ) ) {
196
  // Track only if campaign sent.
197
  if ( $this->is_campaign_sent( $contact_id, $message_id, $campaign_id ) ) {
198
 
199
- $this->update_viewed_status( $contact_id, $campaign_id, $message_id );
200
-
201
  $action_data = array(
202
  'contact_id' => $contact_id,
203
  'message_id' => $message_id,
196
  // Track only if campaign sent.
197
  if ( $this->is_campaign_sent( $contact_id, $message_id, $campaign_id ) ) {
198
 
 
 
199
  $action_data = array(
200
  'contact_id' => $contact_id,
201
  'message_id' => $message_id,
lite/includes/classes/class-es-admin-settings.php CHANGED
@@ -483,7 +483,7 @@ class ES_Admin_Settings {
483
  $cron_url_setting_desc = sprintf( __( "You need to visit this URL to send email notifications. Know <a href='%s' target='_blank'>how to run this in background</a>", 'email-subscribers' ), 'https://www.icegram.com/documentation/es-how-to-schedule-cron-emails-in-cpanel/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page' );
484
  }
485
  /* translators: %s: Link to Icegram Email Sending documentation */
486
- $cron_url_setting_desc .= sprintf( __( '<div class="mt-2.5 ml-1"><a class="hover:underline text-sm font-medium" href="%s" target="_blank">How to configure Email Sending →</a></div>', 'email-subscribers' ), esc_url( 'https://www.icegram.com/documentation/how-to-configure-email-sending-in-email-subscribers') );
487
 
488
  $pepipost_api_key_defined = ES()->is_const_defined( 'pepipost', 'api_key' );
489
 
483
  $cron_url_setting_desc = sprintf( __( "You need to visit this URL to send email notifications. Know <a href='%s' target='_blank'>how to run this in background</a>", 'email-subscribers' ), 'https://www.icegram.com/documentation/es-how-to-schedule-cron-emails-in-cpanel/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page' );
484
  }
485
  /* translators: %s: Link to Icegram Email Sending documentation */
486
+ $cron_url_setting_desc .= sprintf( __( '<div class="mt-2.5 ml-1"><a class="hover:underline text-sm font-medium" href="%s" target="_blank">How to configure Email Sending →</a></div>', 'email-subscribers' ), esc_url( 'https://www.icegram.com/documentation/how-to-configure-email-sending-in-email-subscribers?utm_source=in_app&utm_medium=setup_email_sending&utm_campaign=es_doc') );
487
 
488
  $pepipost_api_key_defined = ES()->is_const_defined( 'pepipost', 'api_key' );
489
 
lite/includes/classes/class-es-cache.php CHANGED
@@ -5,7 +5,7 @@ if ( ! defined( 'ABSPATH' ) ) {
5
  exit;
6
  }
7
 
8
- /**
9
  * Cache implementation of the plugin
10
  *
11
  * @credit - Inspired by the WooCommerce Cache implementation.
@@ -19,7 +19,7 @@ if ( ! class_exists( 'ES_Cache' ) ) {
19
  class ES_Cache {
20
 
21
  /**
22
- * Cache enabled/disabled
23
  *
24
  * @var bool
25
  *
@@ -41,7 +41,7 @@ if ( ! class_exists( 'ES_Cache' ) ) {
41
  *
42
  * @param $key
43
  * @param $value
44
- * @param bool $expiration
45
  *
46
  * @return bool
47
  */
@@ -88,7 +88,7 @@ if ( ! class_exists( 'ES_Cache' ) ) {
88
  * Only sets if key is not falsy
89
  *
90
  * @param string $key
91
- * @param mixed $value
92
  * @param string $group
93
  *
94
  * @since 4.4.0
@@ -102,21 +102,21 @@ if ( ! class_exists( 'ES_Cache' ) ) {
102
  }
103
 
104
  /**
105
- * Only gets if key is not falsy
106
  *
107
- * @param string $key
108
- * @param string $group
109
- *
110
- * @return bool|mixed
111
  *
112
- * @since 4.4.0
113
  */
114
- public static function get( $key, $group ) {
115
  if ( ! $key ) {
116
  return false;
117
  }
118
 
119
- return wp_cache_get( (string) $key, "ig_es_$group" );
120
  }
121
 
122
  /**
@@ -129,11 +129,13 @@ if ( ! class_exists( 'ES_Cache' ) ) {
129
  *
130
  * @since 4.4.0
131
  */
132
- public static function exists( $key, $group ) {
133
  if ( ! $key ) {
134
  return false;
135
  }
 
136
  $found = false;
 
137
  wp_cache_get( (string) $key, "ig_es_$group", false, $found );
138
 
139
  return $found;
@@ -155,5 +157,32 @@ if ( ! class_exists( 'ES_Cache' ) ) {
155
  wp_cache_delete( (string) $key, "ig_es_$group" );
156
  }
157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
158
  }
159
  }
5
  exit;
6
  }
7
 
8
+ /**
9
  * Cache implementation of the plugin
10
  *
11
  * @credit - Inspired by the WooCommerce Cache implementation.
19
  class ES_Cache {
20
 
21
  /**
22
+ * Cache enabled/disabled
23
  *
24
  * @var bool
25
  *
41
  *
42
  * @param $key
43
  * @param $value
44
+ * @param bool $expiration
45
  *
46
  * @return bool
47
  */
88
  * Only sets if key is not falsy
89
  *
90
  * @param string $key
91
+ * @param mixed $value
92
  * @param string $group
93
  *
94
  * @since 4.4.0
102
  }
103
 
104
  /**
105
+ * Get the data
106
  *
107
+ * @param $key
108
+ * @param $group
109
+ * @param false $force
110
+ * @param null $found
111
  *
112
+ * @return false|mixed
113
  */
114
+ public static function get( $key, $group, $force = false, &$found = null ) {
115
  if ( ! $key ) {
116
  return false;
117
  }
118
 
119
+ return wp_cache_get( (string) $key, "ig_es_$group", $force, $found );
120
  }
121
 
122
  /**
129
  *
130
  * @since 4.4.0
131
  */
132
+ public static function is_exists( $key, $group ) {
133
  if ( ! $key ) {
134
  return false;
135
  }
136
+
137
  $found = false;
138
+
139
  wp_cache_get( (string) $key, "ig_es_$group", false, $found );
140
 
141
  return $found;
157
  wp_cache_delete( (string) $key, "ig_es_$group" );
158
  }
159
 
160
+ /**
161
+ * Generate cache key
162
+ *
163
+ * @param string $string
164
+ *
165
+ * @return boolean $exists_in_cache
166
+ *
167
+ * @since 4.7.2
168
+ */
169
+ public static function generate_key( $string = '' ) {
170
+ $cache_key = '';
171
+ if ( ! empty( $string ) ) {
172
+ $cache_key = md5( $string ); // Convert to md5 hash string
173
+ }
174
+
175
+ return $cache_key;
176
+ }
177
+
178
+ /**
179
+ * Flush cache
180
+ *
181
+ * @since 4.7.2
182
+ */
183
+ public static function flush() {
184
+ wp_cache_flush();
185
+ }
186
+
187
  }
188
  }
lite/includes/classes/class-es-campaign-report.php CHANGED
@@ -117,8 +117,8 @@ class ES_Campaign_Report extends ES_List_Table {
117
  */
118
  public function prepare_items() {
119
 
120
- $columns = $this->get_columns();
121
- $hidden = array();
122
  $sortable = $this->get_sortable_columns();
123
 
124
  $this->_column_headers = array($columns, $hidden, $sortable);
@@ -287,7 +287,7 @@ class ES_Campaign_Report extends ES_List_Table {
287
  $queue_data = ES_DB_Sending_Queue::get_queue_data( $campaign_id, $message_id );
288
  }
289
 
290
- $notification = $wpbd->get_row( $wpbd->prepare( "SELECT * FROM {$wpbd->prefix}ig_campaigns WHERE `id`= %d", $campaign_id ), ARRAY_A );
291
  $total_email_sent = ES()->actions_db->get_count_based_on_id_type( $notification['id'], $message_id, IG_MESSAGE_SENT );
292
  $email_viewed_count = ES()->actions_db->get_count_based_on_id_type( $notification['id'], $message_id, IG_MESSAGE_OPEN );
293
  $email_click_count = ES()->actions_db->get_count_based_on_id_type( $notification['id'], $message_id, IG_LINK_CLICK );
117
  */
118
  public function prepare_items() {
119
 
120
+ $columns = $this->get_columns();
121
+ $hidden = array();
122
  $sortable = $this->get_sortable_columns();
123
 
124
  $this->_column_headers = array($columns, $hidden, $sortable);
287
  $queue_data = ES_DB_Sending_Queue::get_queue_data( $campaign_id, $message_id );
288
  }
289
 
290
+ $notification = ES()->campaigns_db->get( $campaign_id );
291
  $total_email_sent = ES()->actions_db->get_count_based_on_id_type( $notification['id'], $message_id, IG_MESSAGE_SENT );
292
  $email_viewed_count = ES()->actions_db->get_count_based_on_id_type( $notification['id'], $message_id, IG_MESSAGE_OPEN );
293
  $email_click_count = ES()->actions_db->get_count_based_on_id_type( $notification['id'], $message_id, IG_LINK_CLICK );
lite/includes/classes/class-es-contacts-table.php CHANGED
@@ -593,7 +593,7 @@ class ES_Contacts_Table extends ES_List_Table {
593
  * @return mixed
594
  */
595
  public function get_subscribers( $per_page = 5, $page_number = 1, $do_count_only = false ) {
596
- global $wpdb, $wpbd;
597
 
598
  $order_by = sanitize_sql_orderby( ig_es_get_request_data( 'orderby' ) );
599
  $order = ig_es_get_request_data( 'order' );
@@ -625,15 +625,15 @@ class ES_Contacts_Table extends ES_List_Table {
625
  $where_clause_added = false;
626
 
627
  if ( ! empty( $filter_by_list_id ) ) {
628
- $list_filter_sql = $wpdb->prepare( ' WHERE list_id = %d', $filter_by_list_id );
629
  $where_clause_added = true;
630
  }
631
 
632
  if ( ! empty( $filter_by_status ) ) {
633
  if ( $where_clause_added ) {
634
- $list_filter_sql .= $wpdb->prepare( ' AND status = %s', $filter_by_status );
635
  } else {
636
- $list_filter_sql .= $wpdb->prepare( ' WHERE status = %s', $filter_by_status );
637
  }
638
  }
639
 
@@ -644,9 +644,9 @@ class ES_Contacts_Table extends ES_List_Table {
644
  // Prepare search query
645
  if ( ! empty( $search ) ) {
646
  $query[] = ' ( first_name LIKE %s OR last_name LIKE %s OR email LIKE %s ) ';
647
- $args[] = '%' . $wpdb->esc_like( $search ) . '%';
648
- $args[] = '%' . $wpdb->esc_like( $search ) . '%';
649
- $args[] = '%' . $wpdb->esc_like( $search ) . '%';
650
  }
651
 
652
  if ( $add_where_clause || count( $query ) > 0 ) {
@@ -683,9 +683,25 @@ class ES_Contacts_Table extends ES_List_Table {
683
  $sql .= $order_by_clause;
684
  $sql .= " LIMIT {$offset}, {$per_page}";
685
 
686
- $result = $wpbd->get_results( $sql, 'ARRAY_A' );
 
 
 
 
 
 
 
 
687
  } else {
688
- $result = $wpbd->get_var( $sql );
 
 
 
 
 
 
 
 
689
  }
690
 
691
  return $result;
593
  * @return mixed
594
  */
595
  public function get_subscribers( $per_page = 5, $page_number = 1, $do_count_only = false ) {
596
+ global $wpbd;
597
 
598
  $order_by = sanitize_sql_orderby( ig_es_get_request_data( 'orderby' ) );
599
  $order = ig_es_get_request_data( 'order' );
625
  $where_clause_added = false;
626
 
627
  if ( ! empty( $filter_by_list_id ) ) {
628
+ $list_filter_sql = $wpbd->prepare( ' WHERE list_id = %d', $filter_by_list_id );
629
  $where_clause_added = true;
630
  }
631
 
632
  if ( ! empty( $filter_by_status ) ) {
633
  if ( $where_clause_added ) {
634
+ $list_filter_sql .= $wpbd->prepare( ' AND status = %s', $filter_by_status );
635
  } else {
636
+ $list_filter_sql .= $wpbd->prepare( ' WHERE status = %s', $filter_by_status );
637
  }
638
  }
639
 
644
  // Prepare search query
645
  if ( ! empty( $search ) ) {
646
  $query[] = ' ( first_name LIKE %s OR last_name LIKE %s OR email LIKE %s ) ';
647
+ $args[] = '%' . $wpbd->esc_like( $search ) . '%';
648
+ $args[] = '%' . $wpbd->esc_like( $search ) . '%';
649
+ $args[] = '%' . $wpbd->esc_like( $search ) . '%';
650
  }
651
 
652
  if ( $add_where_clause || count( $query ) > 0 ) {
683
  $sql .= $order_by_clause;
684
  $sql .= " LIMIT {$offset}, {$per_page}";
685
 
686
+ $cache_key = ES_Cache::generate_key( $sql );
687
+ $exists_in_cache = ES_Cache::is_exists( $cache_key, 'query' );
688
+
689
+ if ( ! $exists_in_cache ) {
690
+ $result = $wpbd->get_results( $sql, 'ARRAY_A' );
691
+ ES_Cache::set( $cache_key, $result, 'query' );
692
+ } else {
693
+ $result = ES_Cache::get( $cache_key, 'query' );
694
+ }
695
  } else {
696
+
697
+ $cache_key = ES_Cache::generate_key( $sql );
698
+ $exists_in_cache = ES_Cache::is_exists( $cache_key, 'query' );
699
+ if ( ! $exists_in_cache ) {
700
+ $result = $wpbd->get_var( $sql );
701
+ ES_Cache::set( $cache_key, $result, 'query' );
702
+ } else {
703
+ $result = ES_Cache::get( $cache_key, 'query' );
704
+ }
705
  }
706
 
707
  return $result;
lite/includes/classes/class-es-forms-table.php CHANGED
@@ -87,19 +87,19 @@ class ES_Forms_Table extends ES_List_Table {
87
  echo wp_kses_post( $this->edit_form( absint( $form ) ) );
88
  } else {
89
  ?>
90
- <div class="flex">
91
- <div>
92
- <h2 class="wp-heading-inline text-3xl font-bold text-gray-700 sm:leading-9 sm:truncate pr-4">
93
- <?php esc_html_e( 'Forms', 'email-subscribers' ); ?>
94
- </h2>
95
- </div>
96
- <div class="mt-1">
97
- <a href="admin.php?page=es_forms&action=new" class="ig-es-title-button ml-2 leading-5 align-middle">
98
- <?php esc_html_e('Add New', 'email-subscribers'); ?>
99
- </a>
100
- </div>
101
- </div>
102
- <div><hr class="wp-header-end"></div>
103
  <?php
104
  if ( 'form_created' === $action ) {
105
  $message = __( 'Form added successfully!', 'email-subscribers' );
@@ -133,7 +133,7 @@ class ES_Forms_Table extends ES_List_Table {
133
  <br class="clear">
134
  </div>
135
  </div>
136
- <?php
137
  }
138
  }
139
 
@@ -303,39 +303,45 @@ class ES_Forms_Table extends ES_List_Table {
303
 
304
  <div class="max-w-full -mt-3 font-sans">
305
  <header class="wp-heading-inline">
306
- <div class="md:flex md:items-center md:justify-between justify-center">
307
- <div class="flex-1 min-w-0">
308
- <nav class="text-gray-400 my-0" aria-label="Breadcrumb">
309
- <ol class="list-none p-0 inline-flex">
310
- <li class="flex items-center text-sm tracking-wide">
311
- <a class="hover:underline" href="admin.php?page=es_forms"><?php esc_html_e('Forms ', 'email-subscribers'); ?></a>
312
- <svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
313
- </li>
314
- </ol>
315
- </nav>
316
- <h2 class="-mt-1 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate">
317
- <?php
318
- if ( $is_new ) {
319
- esc_html_e( ' New Form', 'email-subscribers' );
320
- } else {
321
- esc_html_e( ' Edit Form', 'email-subscribers' );
322
- }
323
-
324
- ?>
325
- </h2>
326
  </div>
327
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
328
  </header>
329
  <div class=""><hr class="wp-header-end"></div>
330
  <div id="poststuff">
331
  <div id="post-body" class="metabox-holder column-1">
332
  <div id="post-body-content" class="pt-0.5">
333
- <div class="text-right mt-1">
334
- <a class="hover:underline text-base font-medium" href="https://www.icegram.com/documentation/how-to-create-a-form-in-email-subscribers/" target="_blank">
335
- <?php esc_html_e( 'How to create form?', 'email-subscribers' ); ?> &rarr;
336
- </a>
337
- </div>
338
- <div class="bg-white shadow-md rounded-lg mt-3 pt-1">
339
  <form class="pt-8 ml-5 mr-4 text-left flex-row mt-2 item-center " method="post" action="admin.php?page=es_forms&action=<?php echo esc_attr( $action ); ?>&form=<?php echo esc_attr( $id ); ?>&_wpnonce=<?php echo esc_attr( $nonce ); ?>">
340
 
341
 
@@ -410,7 +416,7 @@ class ES_Forms_Table extends ES_List_Table {
410
  echo 'checked="checked"';
411
  }
412
  ?>
413
- />
414
  </td>
415
  <td class="pr-6 pb-8">
416
  <input type="checkbox" class="form-checkbox es_required" name="form_data[name_required]" value="yes"
@@ -422,157 +428,157 @@ class ES_Forms_Table extends ES_List_Table {
422
  />
423
  </td>
424
  <td class="pr-6 pb-8"><input class="es_name_label form-input block border-gray-400 w-5/6 pr-12 h-8 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" name="form_data[name_label]" value="<?php echo esc_attr( $form_data['name_label'] ); ?>"
425
- <?php
426
- if ( 'yes' === $form_data['name_required'] ) {
427
- echo 'disabled=disabled';
428
- }
429
- ?>
430
- ></td>
431
- <td class="pr-6 pb-8"><input class="es_name_label form-input block border-gray-400 w-5/6 pr-12 h-8 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" name="form_data[name_place_holder]" value="<?php echo esc_attr( $form_data['name_place_holder'] ); ?>"
432
- <?php
433
- if ( 'yes' === $form_data['name_required'] ) {
434
- echo 'disabled=disabled';
435
- }
436
- ?>
437
- ></td>
438
- </tr>
439
- <tr class="form-field">
440
- <td class="pr-6 pb-6"><b class="text-gray-500 text-sm font-normal pb-2"><?php esc_html_e( 'Button', 'email-subscribers' ); ?></b></td>
441
- <td class="pr-6 pb-6"><input type="checkbox" class="form-checkbox" name="form_data[button_visible]" value="yes" disabled="disabled" checked="checked"></td>
442
- <td class="pr-6 pb-6"><input type="checkbox" class="form-checkbox" name="form_data[button_required]" value="yes" disabled="disabled" checked="checked"></td>
443
- <td class="pr-6 pb-6"><input class="form-input block border-gray-400 w-5/6 pr-12 h-8 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" name="form_data[button_label]" value="<?php echo esc_attr( $form_data['button_label'] ); ?>"></td>
444
- </tr>
445
-
446
- </table>
447
- </div>
448
- </div>
449
- </div>
450
- <div class="flex flex-row border-b border-gray-100">
451
- <div class="flex w-1/5">
452
- <div class="ml-4 pt-4 mb-2">
453
- <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Lists', 'email-subscribers' ); ?></span></label>
454
- <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php esc_html_e( 'Contacts will be added into selected list(s)', 'email-subscribers' ); ?></p>
455
- </div>
456
- </div>
457
- <div class="flex">
458
- <div class="ml-16 mb-6 mr-4 mt-4">
459
- <?php
460
- $allowedtags = ig_es_allowed_html_tags_in_esc();
461
- if ( count( $lists ) > 0 ) {
462
- $lists_checkboxes = ES_Shortcode::prepare_lists_checkboxes( $lists, array_keys( $lists ), 3, (array) $form_data['lists'] );
463
- echo wp_kses( $lists_checkboxes , $allowedtags );
464
-
465
- } else {
466
- $create_list_link = admin_url( 'admin.php?page=es_lists&action=new' );
467
- ?>
468
- <span><b class="text-sm font-normal text-gray-600 pb-2">
469
- <?php
470
- /* translators: %s: Create list page url */
471
- echo sprintf( esc_html__('List not found. Please %s', 'email-subscribers' ), '<a href="' . esc_url( $create_list_link ) . '"> ' . esc_html__( 'create your first list', 'email-subscribers') . '</a>' );
472
- ?>
473
- </b></span>
474
- <?php } ?>
475
  </div>
476
- </div>
477
- </div>
478
-
479
- <div class="flex flex-row border-b border-gray-100">
480
- <div class="flex w-1/5">
481
- <div class="ml-4 pt-4 mb-2">
482
- <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Allow contact to choose list(s)', 'email-subscribers' ); ?></span></label>
483
- <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-4"><?php esc_html_e( 'Allow contacts to choose list(s) in which they want to subscribe.', 'email-subscribers' ); ?></p>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
484
  </div>
485
- </div>
486
- <div class="flex ">
487
- <div class="ml-16 mb-4 mr-4 mt-12">
488
- <label for="allow_contact" class=" inline-flex items-center cursor-pointer">
489
- <span class="relative">
490
- <input id="allow_contact" type="checkbox" class=" absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[list_visible]" value="yes"
491
- <?php
492
- if ( 'yes' === $form_data['list_visible'] ) {
493
- echo 'checked="checked"';
494
- }
495
-
496
- ?>
497
- />
498
-
499
- <span class="es-mail-toggle-line"></span>
500
- <span class="es-mail-toggle-dot"></span>
501
- </span>
502
-
503
- </label>
504
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
505
  </div>
506
- </div>
507
- </div>
508
 
509
-
510
- <?php do_action('ig_es_add_additional_options', $form_data); ?>
511
 
512
-
513
- <div class="flex flex-row border-b border-gray-100">
514
- <div class="flex w-1/5">
515
- <div class="ml-4 pt-4 mb-2">
516
- <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Show GDPR consent checkbox', 'email-subscribers' ); ?></span></label>
517
- <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php esc_html_e( 'Show consent checkbox to get the consent of a contact before adding them to list(s)', 'email-subscribers' ); ?></p>
518
- </div>
519
- </div>
520
- <div class="flex ">
521
- <div class="ml-16 mb-2 mr-4 mt-6">
522
- <table class="ig_es_form_table">
523
- <tr>
524
- <td>
525
- <label for="gdpr_consent" class=" inline-flex items-center cursor-pointer">
526
- <span class="relative">
527
- <input id="gdpr_consent" type="checkbox" class="absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[gdpr_consent]" value="yes"
528
- <?php
529
- if ( 'yes' === $form_data['gdpr_consent'] ) {
530
- echo 'checked="checked"';
531
- }
532
- ?>
533
- />
534
-
535
- <span class="es-mail-toggle-line"></span>
536
- <span class="es-mail-toggle-dot"></span>
537
- </span>
538
- </label>
539
- </td>
540
- </tr>
541
- <tr>
542
- <td>
543
- <textarea class="form-textarea text-sm" rows="2" cols="50" name="form_data[gdpr_consent_text]"><?php echo wp_kses_post( $form_data['gdpr_consent_text'] ); ?></textarea>
544
- <p class="italic text-xs text-gray-400 mt-2 leading-snug pb-4"><?php esc_html_e( 'Consent text will show up at subscription form next to consent checkbox.', 'email-subscribers' ); ?></p>
545
- </td>
546
- </tr>
547
- </table>
 
 
 
 
548
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
549
  </div>
550
  </div>
551
- <input type="hidden" name="form_data[af_id]" value="<?php echo esc_attr( $form_data['af_id'] ); ?>"/>
552
- <input type="hidden" name="submitted" value="submitted"/>
553
- <?php
554
- $submit_button_text = $is_new ? __( 'Save Form', 'email-subscribers' ) : __( 'Save Changes', 'email-subscribers' );
555
- if ( count( $lists ) > 0 ) {
556
- ?>
557
- <p class="submit"><input type="submit" name="submit" id="ig_es_campaign_post_notification_submit_button" class="cursor-pointer align-middle ig-es-primary-button px-4 py-2 ml-6 mr-2" value="<?php echo esc_attr( $submit_button_text ); ?>"/>
558
- <a href="admin.php?page=es_forms" class="cursor-pointer align-middle rounded-md border border-indigo-600 hover:shadow-md focus:outline-none focus:shadow-outline-indigo text-sm leading-5 font-medium transition ease-in-out duration-150 px-4 my-2 py-2 mx-2 "><?php esc_html_e( 'Cancel', 'email-subscribers' ); ?></a></p>
559
- <?php
560
- } else {
561
- $lists_page_url = admin_url( 'admin.php?page=es_lists' );
562
- /* translators: %s: List Page url */
563
- $message = __( sprintf( 'List(s) not found. Please create a first list from <a href="%s">here</a>', $lists_page_url ), 'email-subscribers' );
564
- $status = 'error';
565
- ES_Common::show_message( $message, $status );
566
- }
567
- ?>
568
- </form>
569
  </div>
570
- </div>
571
- </div>
572
- </div>
573
 
574
 
575
- <?php
576
 
577
  }
578
 
@@ -835,7 +841,7 @@ class ES_Forms_Table extends ES_List_Table {
835
  case 'shortcode':
836
  $shortcode = '[email-subscribers-form id="' . $item['id'] . '"]';
837
 
838
- return '<code id="es-shortcode">' . $shortcode . '</code>';
839
  break;
840
  case 'total_active_subscribers':
841
  return ES()->contacts_db->get_total_contacts_by_form_id( $item['id'] );
@@ -984,11 +990,11 @@ class ES_Forms_Table extends ES_List_Table {
984
  public function search_box( $text, $input_id) {
985
  ?>
986
 
987
- <p class="search-box">
988
- <label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
989
- <input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
990
- <?php submit_button( __( 'Search Forms', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
991
- </p>
992
  <?php
993
  }
994
 
87
  echo wp_kses_post( $this->edit_form( absint( $form ) ) );
88
  } else {
89
  ?>
90
+ <div class="flex">
91
+ <div>
92
+ <h2 class="wp-heading-inline text-3xl font-bold text-gray-700 sm:leading-9 sm:truncate pr-4">
93
+ <?php esc_html_e( 'Forms', 'email-subscribers' ); ?>
94
+ </h2>
95
+ </div>
96
+ <div class="mt-1">
97
+ <a href="admin.php?page=es_forms&action=new" class="ig-es-title-button ml-2 leading-5 align-middle">
98
+ <?php esc_html_e('Add New', 'email-subscribers'); ?>
99
+ </a>
100
+ </div>
101
+ </div>
102
+ <div><hr class="wp-header-end"></div>
103
  <?php
104
  if ( 'form_created' === $action ) {
105
  $message = __( 'Form added successfully!', 'email-subscribers' );
133
  <br class="clear">
134
  </div>
135
  </div>
136
+ <?php
137
  }
138
  }
139
 
303
 
304
  <div class="max-w-full -mt-3 font-sans">
305
  <header class="wp-heading-inline">
306
+ <nav class="text-gray-400 my-0" aria-label="Breadcrumb">
307
+ <div class="flex">
308
+ <div class="w-1/2">
309
+ <ol class="list-none p-0 inline-flex">
310
+ <li class="flex items-center text-sm tracking-wide">
311
+ <a class="hover:underline" href="admin.php?page=es_forms"><?php esc_html_e('Forms ', 'email-subscribers'); ?></a>
312
+ <svg class="fill-current w-2.5 h-2.5 mx-2 mt-mx" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 320 512"><path d="M285.476 272.971L91.132 467.314c-9.373 9.373-24.569 9.373-33.941 0l-22.667-22.667c-9.357-9.357-9.375-24.522-.04-33.901L188.505 256 34.484 101.255c-9.335-9.379-9.317-24.544.04-33.901l22.667-22.667c9.373-9.373 24.569-9.373 33.941 0L285.475 239.03c9.373 9.372 9.373 24.568.001 33.941z"></path></svg>
313
+ </li>
314
+ </ol>
 
 
 
 
 
 
 
 
 
 
 
315
  </div>
316
  </div>
317
+ </nav>
318
+ <div class="flex">
319
+ <div class="w-1/2">
320
+ <h2 class="-mt-1 text-2xl font-medium text-gray-700 sm:leading-7 sm:truncate">
321
+ <?php
322
+ if ( $is_new ) {
323
+ esc_html_e( ' New Form', 'email-subscribers' );
324
+ } else {
325
+ esc_html_e( ' Edit Form', 'email-subscribers' );
326
+ }
327
+
328
+ ?>
329
+ </h2>
330
+ </div>
331
+ <div class="w-1/2 -mt-2.5 inline text-right">
332
+ <a class="px-1.5 py-2 mt-2 es-documentation" href="https://www.icegram.com/documentation/how-to-create-a-form-in-email-subscribers/?utm_source=in_app&utm_medium=es_forms&utm_campaign=es_doc" target="_blank">
333
+ <svg class="w-6 h-6 -mt-1 inline text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
334
+ <title><?php esc_html_e('Documentation ', 'email-subscribers'); ?></title>
335
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path>
336
+ </svg>
337
+ </a>
338
+ </div>
339
  </header>
340
  <div class=""><hr class="wp-header-end"></div>
341
  <div id="poststuff">
342
  <div id="post-body" class="metabox-holder column-1">
343
  <div id="post-body-content" class="pt-0.5">
344
+ <div class="bg-white shadow-md rounded-lg mt-5 pt-1">
 
 
 
 
 
345
  <form class="pt-8 ml-5 mr-4 text-left flex-row mt-2 item-center " method="post" action="admin.php?page=es_forms&action=<?php echo esc_attr( $action ); ?>&form=<?php echo esc_attr( $id ); ?>&_wpnonce=<?php echo esc_attr( $nonce ); ?>">
346
 
347
 
416
  echo 'checked="checked"';
417
  }
418
  ?>
419
+ />
420
  </td>
421
  <td class="pr-6 pb-8">
422
  <input type="checkbox" class="form-checkbox es_required" name="form_data[name_required]" value="yes"
428
  />
429
  </td>
430
  <td class="pr-6 pb-8"><input class="es_name_label form-input block border-gray-400 w-5/6 pr-12 h-8 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" name="form_data[name_label]" value="<?php echo esc_attr( $form_data['name_label'] ); ?>"
431
+ <?php
432
+ if ( 'yes' === $form_data['name_required'] ) {
433
+ echo 'disabled=disabled';
434
+ }
435
+ ?>
436
+ ></td>
437
+ <td class="pr-6 pb-8"><input class="es_name_label form-input block border-gray-400 w-5/6 pr-12 h-8 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" name="form_data[name_place_holder]" value="<?php echo esc_attr( $form_data['name_place_holder'] ); ?>"
438
+ <?php
439
+ if ( 'yes' === $form_data['name_required'] ) {
440
+ echo 'disabled=disabled';
441
+ }
442
+ ?>
443
+ ></td>
444
+ </tr>
445
+ <tr class="form-field">
446
+ <td class="pr-6 pb-6"><b class="text-gray-500 text-sm font-normal pb-2"><?php esc_html_e( 'Button', 'email-subscribers' ); ?></b></td>
447
+ <td class="pr-6 pb-6"><input type="checkbox" class="form-checkbox" name="form_data[button_visible]" value="yes" disabled="disabled" checked="checked"></td>
448
+ <td class="pr-6 pb-6"><input type="checkbox" class="form-checkbox" name="form_data[button_required]" value="yes" disabled="disabled" checked="checked"></td>
449
+ <td class="pr-6 pb-6"><input class="form-input block border-gray-400 w-5/6 pr-12 h-8 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" name="form_data[button_label]" value="<?php echo esc_attr( $form_data['button_label'] ); ?>"></td>
450
+ </tr>
451
+
452
+ </table>
453
+ </div>
454
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
455
  </div>
456
+ <div class="flex flex-row border-b border-gray-100">
457
+ <div class="flex w-1/5">
458
+ <div class="ml-4 pt-4 mb-2">
459
+ <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Lists', 'email-subscribers' ); ?></span></label>
460
+ <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php esc_html_e( 'Contacts will be added into selected list(s)', 'email-subscribers' ); ?></p>
461
+ </div>
462
+ </div>
463
+ <div class="flex">
464
+ <div class="ml-16 mb-6 mr-4 mt-4">
465
+ <?php
466
+ $allowedtags = ig_es_allowed_html_tags_in_esc();
467
+ if ( count( $lists ) > 0 ) {
468
+ $lists_checkboxes = ES_Shortcode::prepare_lists_checkboxes( $lists, array_keys( $lists ), 3, (array) $form_data['lists'] );
469
+ echo wp_kses( $lists_checkboxes , $allowedtags );
470
+
471
+ } else {
472
+ $create_list_link = admin_url( 'admin.php?page=es_lists&action=new' );
473
+ ?>
474
+ <span><b class="text-sm font-normal text-gray-600 pb-2">
475
+ <?php
476
+ /* translators: %s: Create list page url */
477
+ echo sprintf( esc_html__('List not found. Please %s', 'email-subscribers' ), '<a href="' . esc_url( $create_list_link ) . '"> ' . esc_html__( 'create your first list', 'email-subscribers') . '</a>' );
478
+ ?>
479
+ </b></span>
480
+ <?php } ?>
481
+ </div>
482
+ </div>
483
  </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
484
 
485
+ <div class="flex flex-row border-b border-gray-100">
486
+ <div class="flex w-1/5">
487
+ <div class="ml-4 pt-4 mb-2">
488
+ <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Allow contact to choose list(s)', 'email-subscribers' ); ?></span></label>
489
+ <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-4"><?php esc_html_e( 'Allow contacts to choose list(s) in which they want to subscribe.', 'email-subscribers' ); ?></p>
490
+ </div>
491
+ </div>
492
+ <div class="flex ">
493
+ <div class="ml-16 mb-4 mr-4 mt-12">
494
+ <label for="allow_contact" class=" inline-flex items-center cursor-pointer">
495
+ <span class="relative">
496
+ <input id="allow_contact" type="checkbox" class=" absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[list_visible]" value="yes"
497
+ <?php
498
+ if ( 'yes' === $form_data['list_visible'] ) {
499
+ echo 'checked="checked"';
500
+ }
501
+
502
+ ?>
503
+ />
504
+
505
+ <span class="es-mail-toggle-line"></span>
506
+ <span class="es-mail-toggle-dot"></span>
507
+ </span>
508
+
509
+ </label>
510
+
511
+ </div>
512
+ </div>
513
  </div>
 
 
514
 
 
 
515
 
516
+ <?php do_action('ig_es_add_additional_options', $form_data); ?>
517
+
518
+
519
+ <div class="flex flex-row border-b border-gray-100">
520
+ <div class="flex w-1/5">
521
+ <div class="ml-4 pt-4 mb-2">
522
+ <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php esc_html_e( 'Show GDPR consent checkbox', 'email-subscribers' ); ?></span></label>
523
+ <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php esc_html_e( 'Show consent checkbox to get the consent of a contact before adding them to list(s)', 'email-subscribers' ); ?></p>
524
+ </div>
525
+ </div>
526
+ <div class="flex ">
527
+ <div class="ml-16 mb-2 mr-4 mt-6">
528
+ <table class="ig_es_form_table">
529
+ <tr>
530
+ <td>
531
+ <label for="gdpr_consent" class=" inline-flex items-center cursor-pointer">
532
+ <span class="relative">
533
+ <input id="gdpr_consent" type="checkbox" class="absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[gdpr_consent]" value="yes"
534
+ <?php
535
+ if ( 'yes' === $form_data['gdpr_consent'] ) {
536
+ echo 'checked="checked"';
537
+ }
538
+ ?>
539
+ />
540
+
541
+ <span class="es-mail-toggle-line"></span>
542
+ <span class="es-mail-toggle-dot"></span>
543
+ </span>
544
+ </label>
545
+ </td>
546
+ </tr>
547
+ <tr>
548
+ <td>
549
+ <textarea class="form-textarea text-sm" rows="2" cols="50" name="form_data[gdpr_consent_text]"><?php echo wp_kses_post( $form_data['gdpr_consent_text'] ); ?></textarea>
550
+ <p class="italic text-xs text-gray-400 mt-2 leading-snug pb-4"><?php esc_html_e( 'Consent text will show up at subscription form next to consent checkbox.', 'email-subscribers' ); ?></p>
551
+ </td>
552
+ </tr>
553
+ </table>
554
+ </div>
555
+ </div>
556
  </div>
557
+ <input type="hidden" name="form_data[af_id]" value="<?php echo esc_attr( $form_data['af_id'] ); ?>"/>
558
+ <input type="hidden" name="submitted" value="submitted"/>
559
+ <?php
560
+ $submit_button_text = $is_new ? __( 'Save Form', 'email-subscribers' ) : __( 'Save Changes', 'email-subscribers' );
561
+ if ( count( $lists ) > 0 ) {
562
+ ?>
563
+ <p class="submit"><input type="submit" name="submit" id="ig_es_campaign_post_notification_submit_button" class="cursor-pointer align-middle ig-es-primary-button px-4 py-2 ml-6 mr-2" value="<?php echo esc_attr( $submit_button_text ); ?>"/>
564
+ <a href="admin.php?page=es_forms" class="cursor-pointer align-middle rounded-md border border-indigo-600 hover:shadow-md focus:outline-none focus:shadow-outline-indigo text-sm leading-5 font-medium transition ease-in-out duration-150 px-4 my-2 py-2 mx-2 "><?php esc_html_e( 'Cancel', 'email-subscribers' ); ?></a></p>
565
+ <?php
566
+ } else {
567
+ $lists_page_url = admin_url( 'admin.php?page=es_lists' );
568
+ /* translators: %s: List Page url */
569
+ $message = __( sprintf( 'List(s) not found. Please create a first list from <a href="%s">here</a>', $lists_page_url ), 'email-subscribers' );
570
+ $status = 'error';
571
+ ES_Common::show_message( $message, $status );
572
+ }
573
+ ?>
574
+ </form>
575
  </div>
576
  </div>
577
+ </div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
578
  </div>
 
 
 
579
 
580
 
581
+ <?php
582
 
583
  }
584
 
841
  case 'shortcode':
842
  $shortcode = '[email-subscribers-form id="' . $item['id'] . '"]';
843
 
844
+ return '<code class="es-code">' . $shortcode . '</code>';
845
  break;
846
  case 'total_active_subscribers':
847
  return ES()->contacts_db->get_total_contacts_by_form_id( $item['id'] );
990
  public function search_box( $text, $input_id) {
991
  ?>
992
 
993
+ <p class="search-box">
994
+ <label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
995
+ <input type="search" id="<?php echo esc_attr( $input_id ); ?>" name="s" value="<?php _admin_search_query(); ?>"/>
996
+ <?php submit_button( __( 'Search Forms', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
997
+ </p>
998
  <?php
999
  }
1000
 
lite/includes/classes/class-es-handle-post-notification.php CHANGED
@@ -86,8 +86,8 @@ class ES_Handle_Post_Notification {
86
  $template_id = $notification['base_template_id'];
87
  $template = get_post( $template_id ); // to confirm if template exists in ES->Templates
88
  if ( is_object( $template ) ) {
89
- $list_id = $notification['list_ids'];
90
- $list_id = explode( ',', $list_id );
91
 
92
  $post = get_post( $post_id );
93
 
86
  $template_id = $notification['base_template_id'];
87
  $template = get_post( $template_id ); // to confirm if template exists in ES->Templates
88
  if ( is_object( $template ) ) {
89
+ $list_id = $notification['list_ids'];
90
+ $list_id = explode( ',', $list_id );
91
 
92
  $post = get_post( $post_id );
93
 
lite/includes/classes/class-es-handle-subscription.php CHANGED
@@ -535,7 +535,7 @@ if ( ! class_exists( 'ES_Handle_Subscription' ) ) {
535
  'esfpx_email' => $email,
536
  'esfpx_es_hp_email' => $hp_email,
537
  'esfpx_lists' => array(
538
- $list_id,
539
  ),
540
  'form_type' => 'external',
541
  );
535
  'esfpx_email' => $email,
536
  'esfpx_es_hp_email' => $hp_email,
537
  'esfpx_lists' => array(
538
+ $list_hash,
539
  ),
540
  'form_type' => 'external',
541
  );
lite/includes/classes/class-es-import-subscribers.php CHANGED
@@ -129,7 +129,7 @@ class ES_Import_Subscribers {
129
  <a class="font-medium hover:underline" target="_blank" href="<?php echo esc_attr( plugin_dir_url( __FILE__ ) ) . '../../admin/partials/sample.csv'; ?>"><?php esc_html_e( 'from here', 'email-subscribers' ); ?></a>
130
  </p>
131
  <p class="mt-4 es_helper_text">
132
- <a class="hover:underline text-sm font-medium" href="https://www.icegram.com/documentation/es-how-to-import-or-export-email-addresses/" target="_blank">
133
  <?php esc_html_e( 'How to import contacts using CSV? ', 'email-subscribers' ); ?>&rarr;
134
  </a>
135
  </p>
@@ -650,6 +650,7 @@ class ES_Import_Subscribers {
650
  'last_name' => __( 'Last Name', 'email-subscribers' ),
651
  'first_last' => __( '(First Name) (Last Name)', 'email-subscribers' ),
652
  'last_first' => __( '(Last Name) (First Name)', 'email-subscribers' ),
 
653
  );
654
  if ( ! empty( $response['data']['importing_from'] ) && 'wordpress_users' !== $response['data']['importing_from'] ) {
655
  $fields['list_name'] = __( 'List Name', 'email-subscribers' );
@@ -811,7 +812,9 @@ class ES_Import_Subscribers {
811
  if ( $raw_list_data ) {
812
 
813
  $contacts_data = array();
814
- $current_date_time = ig_get_current_date_time();
 
 
815
  $contact_emails = array();
816
  $processed_emails = array();
817
  $list_contact_data = array();
@@ -859,6 +862,12 @@ class ES_Import_Subscribers {
859
  $insert['last_name'] = $name[0];
860
  }
861
  break;
 
 
 
 
 
 
862
  case '-1':
863
  // ignored column
864
  break;
@@ -887,12 +896,12 @@ class ES_Import_Subscribers {
887
  }
888
 
889
  $email = sanitize_email( strtolower( $insert['email'] ) );
890
-
891
  if ( ! in_array( $email, $processed_emails, true ) ) {
892
  $first_name = isset( $insert['first_name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field( trim( $insert['first_name'] ) ) ) : '';
893
  $last_name = isset( $insert['last_name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field( trim( $insert['last_name'] ) ) ) : '';
894
  $list_names = isset( $insert['list_name'] ) ? sanitize_text_field( trim( $insert['list_name'] ) ) : '';
895
-
 
896
  if ( empty( $insert['list_name'] ) ) {
897
  $list_names_arr = ES()->lists_db->get_lists_by_id( $list_id );
898
  $list_names = implode( ',', array_column( $list_names_arr, 'name' ));
@@ -938,7 +947,7 @@ class ES_Import_Subscribers {
938
  $contacts_data[$email]['source'] = 'import';
939
  $contacts_data[$email]['status'] = 'verified';
940
  $contacts_data[$email]['hash'] = $guid;
941
- $contacts_data[$email]['created_at'] = $current_date_time;
942
 
943
  $processed_emails[] = $email;
944
  $bulkdata['imported']++;
@@ -986,10 +995,11 @@ class ES_Import_Subscribers {
986
  }
987
 
988
  foreach ($list_data as $status => $contact_emails) {
989
- $contact_ids = ES()->contacts_db->get_contact_ids_by_emails( $contact_emails );
 
990
  if ( count( $contact_ids ) > 0 ) {
991
  ES()->lists_contacts_db->remove_contacts_from_lists( $contact_ids, $list_id );
992
- ES()->lists_contacts_db->do_import_contacts_into_list( $list_id, $contact_ids, $status, 1, $current_date_time );
993
  }
994
  }
995
  }
129
  <a class="font-medium hover:underline" target="_blank" href="<?php echo esc_attr( plugin_dir_url( __FILE__ ) ) . '../../admin/partials/sample.csv'; ?>"><?php esc_html_e( 'from here', 'email-subscribers' ); ?></a>
130
  </p>
131
  <p class="mt-4 es_helper_text">
132
+ <a class="hover:underline text-sm font-medium" href="https://www.icegram.com/documentation/es-how-to-import-or-export-email-addresses/?utm_source=in_app&utm_medium=import_contacts&utm_campaign=es_doc" target="_blank">
133
  <?php esc_html_e( 'How to import contacts using CSV? ', 'email-subscribers' ); ?>&rarr;
134
  </a>
135
  </p>
650
  'last_name' => __( 'Last Name', 'email-subscribers' ),
651
  'first_last' => __( '(First Name) (Last Name)', 'email-subscribers' ),
652
  'last_first' => __( '(Last Name) (First Name)', 'email-subscribers' ),
653
+ 'created_at' => __( 'Subscribed at', 'email-subscribers' ),
654
  );
655
  if ( ! empty( $response['data']['importing_from'] ) && 'wordpress_users' !== $response['data']['importing_from'] ) {
656
  $fields['list_name'] = __( 'List Name', 'email-subscribers' );
812
  if ( $raw_list_data ) {
813
 
814
  $contacts_data = array();
815
+ $gmt_offset_option = get_option( 'gmt_offset' );
816
+ $gmt_offset = ig_es_get_gmt_offset( true );
817
+ $current_date_time = gmdate( 'Y-m-d H:i:s', time() - $gmt_offset );
818
  $contact_emails = array();
819
  $processed_emails = array();
820
  $list_contact_data = array();
862
  $insert['last_name'] = $name[0];
863
  }
864
  break;
865
+ case 'created_at':
866
+ if ( ! is_numeric( $d ) && ! empty( $d ) ) {
867
+ $d = sanitize_text_field( $d );
868
+ $insert['created_at'] = gmdate( 'Y-m-d H:i:s', strtotime( $d ) - $gmt_offset );
869
+ }
870
+ break;
871
  case '-1':
872
  // ignored column
873
  break;
896
  }
897
 
898
  $email = sanitize_email( strtolower( $insert['email'] ) );
 
899
  if ( ! in_array( $email, $processed_emails, true ) ) {
900
  $first_name = isset( $insert['first_name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field( trim( $insert['first_name'] ) ) ) : '';
901
  $last_name = isset( $insert['last_name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field( trim( $insert['last_name'] ) ) ) : '';
902
  $list_names = isset( $insert['list_name'] ) ? sanitize_text_field( trim( $insert['list_name'] ) ) : '';
903
+ $created_at = isset( $insert['created_at'] ) ? $insert['created_at'] : $current_date_time;
904
+
905
  if ( empty( $insert['list_name'] ) ) {
906
  $list_names_arr = ES()->lists_db->get_lists_by_id( $list_id );
907
  $list_names = implode( ',', array_column( $list_names_arr, 'name' ));
947
  $contacts_data[$email]['source'] = 'import';
948
  $contacts_data[$email]['status'] = 'verified';
949
  $contacts_data[$email]['hash'] = $guid;
950
+ $contacts_data[$email]['created_at'] = $created_at;
951
 
952
  $processed_emails[] = $email;
953
  $bulkdata['imported']++;
995
  }
996
 
997
  foreach ($list_data as $status => $contact_emails) {
998
+ $contact_id_date = ES()->contacts_db->get_contact_ids_created_at_date_by_emails( $contact_emails );
999
+ $contact_ids = array_keys( $contact_id_date );
1000
  if ( count( $contact_ids ) > 0 ) {
1001
  ES()->lists_contacts_db->remove_contacts_from_lists( $contact_ids, $list_id );
1002
+ ES()->lists_contacts_db->do_import_contacts_into_list( $list_id, $contact_id_date, $status, 1, $created_at );
1003
  }
1004
  }
1005
  }
lite/includes/classes/class-es-lists-table.php CHANGED
@@ -317,7 +317,9 @@ class ES_Lists_Table extends ES_List_Table {
317
  </div>
318
  </div>
319
  </div>
 
320
  <?php
 
321
  $submit_button_text = $is_new ? __( 'Save List', 'email-subscribers' ) : __( 'Save Changes', 'email-subscribers' );
322
  ?>
323
  <input type="hidden" name="submitted" value="submitted"/>
@@ -501,6 +503,12 @@ class ES_Lists_Table extends ES_List_Table {
501
  return "<a href='admin.php?page=download_report&report=users&status=select_list&list_id={$item['id']}&export-nonce={$export_nonce}'><svg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24' class='w-8 h-8 text-indigo-600 hover:text-indigo-500 active:text-indigo-600'><path d='M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'></path></svg></a>";
502
  break;
503
 
 
 
 
 
 
 
504
  default:
505
  return '';
506
  }
@@ -554,9 +562,13 @@ class ES_Lists_Table extends ES_List_Table {
554
  */
555
  public function get_columns() {
556
 
 
 
 
557
  $columns = array(
558
  'cb' => '<input type="checkbox" />',
559
  'name' => __( 'Name', 'email-subscribers' ),
 
560
  'subscribed' => __( 'Subscribed', 'email-subscribers' ),
561
  'unsubscribed' => __( 'Unsubscribed', 'email-subscribers' ),
562
  'unconfirmed' => __( 'Unconfirmed', 'email-subscribers' ),
317
  </div>
318
  </div>
319
  </div>
320
+
321
  <?php
322
+
323
  $submit_button_text = $is_new ? __( 'Save List', 'email-subscribers' ) : __( 'Save Changes', 'email-subscribers' );
324
  ?>
325
  <input type="hidden" name="submitted" value="submitted"/>
503
  return "<a href='admin.php?page=download_report&report=users&status=select_list&list_id={$item['id']}&export-nonce={$export_nonce}'><svg fill='none' stroke='currentColor' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' viewBox='0 0 24 24' class='w-8 h-8 text-indigo-600 hover:text-indigo-500 active:text-indigo-600'><path d='M12 10v6m0 0l-3-3m3 3l3-3m2 8H7a2 2 0 01-2-2V5a2 2 0 012-2h5.586a1 1 0 01.707.293l5.414 5.414a1 1 0 01.293.707V19a2 2 0 01-2 2z'></path></svg></a>";
504
  break;
505
 
506
+ case 'hash':
507
+ $list_hash = $item['hash'];
508
+
509
+ return '<code class="es-code">' . $list_hash . '</code>';
510
+ break;
511
+
512
  default:
513
  return '';
514
  }
562
  */
563
  public function get_columns() {
564
 
565
+ $allowedtags = ig_es_allowed_html_tags_in_esc();
566
+ $tooltip_html = ES_Common::get_tooltip_html( __( 'Unique hash key that can be used to subscribe users to this list from external sites.', 'email-subscribers' ) );
567
+
568
  $columns = array(
569
  'cb' => '<input type="checkbox" />',
570
  'name' => __( 'Name', 'email-subscribers' ),
571
+ 'hash' => __( 'Hash', 'email-subscribers' ) . ' ' . $tooltip_html,
572
  'subscribed' => __( 'Subscribed', 'email-subscribers' ),
573
  'unsubscribed' => __( 'Unsubscribed', 'email-subscribers' ),
574
  'unconfirmed' => __( 'Unconfirmed', 'email-subscribers' ),
lite/includes/classes/class-es-mailer.php CHANGED
@@ -635,7 +635,9 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
635
 
636
  $total_emails_to_send = count( $emails );
637
 
638
- if ( $this->mailer->support_batch_sending ) {
 
 
639
 
640
  $mailer_data_set = $this->mailer->set_mailer_data();
641
 
@@ -695,16 +697,23 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
695
  $content = $this->add_links_variables( $content, $campaign_id, $message_id, $variable_string );
696
 
697
  if ( $this->can_track_open() ) {
698
- $tracking_image = '<img src="%recipient.tracking_pixel_url%" width="1" height="1" alt=""/>';
 
699
  $content .= $tracking_image;
700
  }
701
 
702
- $this->mailer->set_from( $sender_email, $sender_name );
703
- $this->mailer->set_reply_to( $reply_to_email );
704
- $this->mailer->set_subject( $subject );
705
- $this->mailer->set_content( array(
706
- 'html' => $content
707
- ) );
 
 
 
 
 
 
708
  }
709
  }
710
 
@@ -730,7 +739,7 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
730
  'guid' => ig_es_get_data( $merge_tags, 'hash', '' ),
731
  );
732
 
733
- if ( $this->mailer->support_batch_sending ) {
734
 
735
  if ( ! $this->mailer->is_batch_limit_reached() ) {
736
  do_action( 'ig_es_before_message_send', $contact_id, $campaign_id, $message_id );
@@ -795,10 +804,41 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
795
  }
796
 
797
  if ( $this->limits_exceeded() ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
798
  break;
799
  }
800
  }
801
 
 
 
 
 
802
  return $response;
803
 
804
  }
@@ -869,6 +909,13 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
869
  'Content-Type: text/html; charset="' . $message->charset . '"'
870
  );
871
 
 
 
 
 
 
 
 
872
  $message->headers = $headers;
873
 
874
  // $email = ig_es_get_data( $merge_tags, 'email', '' );
@@ -1301,12 +1348,12 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
1301
  }
1302
 
1303
  if ( ! empty( $hash )) {
1304
- $new_link = '%' . $variable_string . '_' . $link_index . '%';
1305
 
1306
  $old_link = ' href="' . $link . '"';
1307
  $new_link = ' href="' . $new_link . '"';
1308
  $pos = strpos( $content, $old_link );
1309
- if ( false != $pos ) {
1310
  $content = preg_replace( '/' . preg_quote( $old_link, '/' ) . '/', $new_link, $content, 1 );
1311
  $this->mailer->links[$link][] = $index;
1312
  }
@@ -1317,6 +1364,71 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
1317
  return $content;
1318
  }
1319
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1320
  /**
1321
  * Get Sender Name
1322
  *
@@ -1613,5 +1725,48 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
1613
  return $message;
1614
 
1615
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1616
  }
1617
  }
635
 
636
  $total_emails_to_send = count( $emails );
637
 
638
+ // In case mailser supporting batch APIs, we are setting API credentials, sender data before running the email loop
639
+ // For normal mailers, we are doing this inside the loop
640
+ if ( $total_emails_to_send > 1 && $this->mailer->support_batch_sending ) {
641
 
642
  $mailer_data_set = $this->mailer->set_mailer_data();
643
 
697
  $content = $this->add_links_variables( $content, $campaign_id, $message_id, $variable_string );
698
 
699
  if ( $this->can_track_open() ) {
700
+ $tracking_pixel_variable_name = $this->mailer->get_variable_prefix() . $this->mailer->get_variable_string( 'tracking_pixel_url' ) . $this->mailer->get_variable_suffix();
701
+ $tracking_image = '<img src="' . $tracking_pixel_variable_name . '" width="1" height="1" alt=""/>';
702
  $content .= $tracking_image;
703
  }
704
 
705
+ if ( $this->unsubscribe_headers_enabled() ) {
706
+ $this->mailer->set_list_unsubscribe_header();
707
+ }
708
+
709
+ $email_data = array(
710
+ 'sender_email' => $sender_email,
711
+ 'sender_name' => $sender_name,
712
+ 'reply_to_email' => $reply_to_email,
713
+ 'subject' => $subject,
714
+ 'content' => $content
715
+ );
716
+ $this->mailer->set_email_data( $email_data );
717
  }
718
  }
719
 
739
  'guid' => ig_es_get_data( $merge_tags, 'hash', '' ),
740
  );
741
 
742
+ if ( $total_emails_to_send > 1 && $this->mailer->support_batch_sending ) {
743
 
744
  if ( ! $this->mailer->is_batch_limit_reached() ) {
745
  do_action( 'ig_es_before_message_send', $contact_id, $campaign_id, $message_id );
804
  }
805
 
806
  if ( $this->limits_exceeded() ) {
807
+
808
+ if ( $this->mailer->support_batch_sending && ! empty( $this->mailer->batch_data ) ) {
809
+ if ( 'multiple' === $this->mailer->batch_sending_mode ) {
810
+ if ( ! empty( $sender_data['attachments'] )) {
811
+ $this->mailer->set_attachments( $sender_data['attachments'] );
812
+ }
813
+ }
814
+
815
+ $send_response = $this->mailer->send_batch();
816
+
817
+ if ( ! is_wp_error( $send_response ) ) {
818
+ foreach ( $this->mailer->batch_data as $email_data ) {
819
+ $contact_id = $email_data['contact_id'];
820
+ do_action( 'ig_es_message_sent', $contact_id, $campaign_id, $message_id );
821
+ }
822
+ }
823
+
824
+ $this->email_limit -= $this->mailer->current_batch_size;
825
+ $this->mailer->clear_batch();
826
+
827
+ // Error Sending Email?
828
+ if ( is_wp_error( $send_response ) ) {
829
+ $response['status'] = 'ERROR';
830
+ $response['message'] = $send_response->get_error_messages();
831
+ // TODO: Log somewhere
832
+ }
833
+ }
834
  break;
835
  }
836
  }
837
 
838
+ if ( $total_emails_to_send > 1 && $this->mailer->support_batch_sending ) {
839
+ $this->mailer->clear_email_data();
840
+ }
841
+
842
  return $response;
843
 
844
  }
909
  'Content-Type: text/html; charset="' . $message->charset . '"'
910
  );
911
 
912
+ $list_unsub_header = $this->get_list_unsubscribe_header( $email );
913
+
914
+ if ( ! empty( $list_unsub_header ) ) {
915
+ $headers[] = 'List-Unsubscribe: ' . $list_unsub_header;
916
+ $headers[] = 'List-Unsubscribe-Post: List-Unsubscribe=One-Click';
917
+ }
918
+
919
  $message->headers = $headers;
920
 
921
  // $email = ig_es_get_data( $merge_tags, 'email', '' );
1348
  }
1349
 
1350
  if ( ! empty( $hash )) {
1351
+ $new_link = $this->mailer->get_variable_prefix() . $variable_string . '_' . $link_index . $this->mailer->get_variable_suffix();
1352
 
1353
  $old_link = ' href="' . $link . '"';
1354
  $new_link = ' href="' . $new_link . '"';
1355
  $pos = strpos( $content, $old_link );
1356
+ if ( false !== $pos ) {
1357
  $content = preg_replace( '/' . preg_quote( $old_link, '/' ) . '/', $new_link, $content, 1 );
1358
  $this->mailer->links[$link][] = $index;
1359
  }
1364
  return $content;
1365
  }
1366
 
1367
+ /**
1368
+ * Get mailer specific link variables
1369
+ *
1370
+ * @param $contact_id
1371
+ * @param $campaign_id
1372
+ * @param $message_id
1373
+ *
1374
+ * @return array $link_variables
1375
+ *
1376
+ * @since 4.7.0
1377
+ */
1378
+ public function get_link_variables( $links, $contact_id, $campaign_id, $message_id ) {
1379
+
1380
+ $link_variables = array();
1381
+ if ( ! empty( $links ) ) {
1382
+
1383
+ $link_counter = 0; // Counter for total links in email
1384
+ foreach ( $links as $link => $link_indexes ) {
1385
+ foreach ( $link_indexes as $index ) {
1386
+ $result = ES()->links_db->get_link_by_campaign_id( $link, $campaign_id, $message_id, $index );
1387
+
1388
+ if ( is_array( $result ) && count( $result ) > 0 ) {
1389
+ $hash = $result[0]['hash'];
1390
+
1391
+ $data = array(
1392
+ 'action' => 'click',
1393
+ 'link_hash' => $hash,
1394
+ 'contact_id' => $contact_id,
1395
+ );
1396
+
1397
+ $new_link = ES()->mailer->prepare_link( $data );
1398
+ $link_variables['link_' . $link_counter ] = $new_link;
1399
+ }
1400
+ $link_counter++;
1401
+ }
1402
+
1403
+ }
1404
+ }
1405
+
1406
+ return $link_variables;
1407
+ }
1408
+
1409
+ /**
1410
+ * Get tracking url
1411
+ *
1412
+ * @param $link_data
1413
+ *
1414
+ * @return string $tracking_pixel_url
1415
+ *
1416
+ * @since 4.7.0
1417
+ */
1418
+ public function get_tracking_pixel_url( $link_data = array() ) {
1419
+
1420
+ $tracking_pixel_url = '';
1421
+
1422
+ if ( ! empty( $link_data ) && $this->can_track_open() ) {
1423
+
1424
+ $link_data['action'] = 'open';
1425
+
1426
+ $tracking_pixel_url = $this->prepare_link( $link_data );
1427
+ }
1428
+
1429
+ return $tracking_pixel_url;
1430
+ }
1431
+
1432
  /**
1433
  * Get Sender Name
1434
  *
1725
  return $message;
1726
 
1727
  }
1728
+
1729
+ /**
1730
+ * Get list unsubscribe header string
1731
+ *
1732
+ * @return string $list_unsub_header
1733
+ *
1734
+ * @since 4.7.2
1735
+ */
1736
+ public function get_list_unsubscribe_header( $email ) {
1737
+
1738
+ $list_unsub_header = '';
1739
+
1740
+ // Check if it is an campaign email and headers are enabled on the site.
1741
+ if ( $this->unsubscribe_headers_enabled() ) {
1742
+ $unsubscribe_link = $this->get_unsubscribe_link( $this->link_data );
1743
+
1744
+ $list_unsub_header = sprintf(
1745
+ /* translators: 1. Unsubscribe link 2. Blog admin email 3. Subscriber email 4. Blog name */
1746
+ __( '<%1$s>,<mailto:%2$s?subject=Unsubscribe %3$s from %4$s>', 'email-subscribers' ),
1747
+ $unsubscribe_link,
1748
+ get_bloginfo( 'admin_email' ),
1749
+ $email,
1750
+ get_bloginfo( 'name' )
1751
+ );
1752
+ }
1753
+
1754
+ return $list_unsub_header;
1755
+ }
1756
+
1757
+ /**
1758
+ * Check if List-Unsubcribe headers are enabled
1759
+ *
1760
+ * @return boolean $enabled
1761
+ *
1762
+ * @since 4.7.2
1763
+ */
1764
+ public function unsubscribe_headers_enabled() {
1765
+ $enabled = false;
1766
+ if ( ! empty( $this->link_data['campaign_id'] ) && apply_filters( 'ig_es_enable_list_unsubscribe_header', true ) ) {
1767
+ $enabled = true;
1768
+ }
1769
+ return $enabled;
1770
+ }
1771
  }
1772
  }
lite/includes/classes/class-es-newsletters.php CHANGED
@@ -271,7 +271,7 @@ class ES_Newsletters {
271
  </ul>
272
  </div>
273
  </div>
274
- <div class="flex md:mt-0 md:ml-2 xl:ml-4">
275
 
276
  <div id="broadcast_button" class="inline-block text-left ">
277
  <button type="button"
@@ -285,7 +285,7 @@ class ES_Newsletters {
285
  </button>
286
  </div>
287
 
288
- <div id="broadcast_button1" class="flex hidden mt-4 md:mt-0 md:ml-2 xl:ml-4">
289
  <span>
290
  <div class="relative inline-block text-left">
291
  <span>
@@ -330,6 +330,14 @@ class ES_Newsletters {
330
  </span>
331
  </div>
332
  </span>
 
 
 
 
 
 
 
 
333
  </div>
334
  </div>
335
  </header>
@@ -337,12 +345,7 @@ class ES_Newsletters {
337
  <div class="mx-auto max-w-7xl">
338
  <hr class="wp-header-end">
339
  </div>
340
- <div class="text-right mt-3">
341
- <a class="hover:underline text-base font-medium" href="https://www.icegram.com/documentation/es-how-to-create-and-send-newsletter-emails/" target="_blank">
342
- <?php esc_html_e( 'How to create Broadcast?', 'email-subscribers' ); ?> &rarr;
343
- </a>
344
- </div>
345
- <div class="mx-auto mt-3 es_broadcast_first max-w-7xl">
346
  <div>
347
  <div class=" bg-white rounded-lg shadow-md md:flex">
348
  <div class="broadcast_main_content py-4 pl-2">
271
  </ul>
272
  </div>
273
  </div>
274
+ <div class="flex md:mt-0 xl:ml-4">
275
 
276
  <div id="broadcast_button" class="inline-block text-left ">
277
  <button type="button"
285
  </button>
286
  </div>
287
 
288
+ <div id="broadcast_button1" class="flex hidden mt-4 md:mt-0">
289
  <span>
290
  <div class="relative inline-block text-left">
291
  <span>
330
  </span>
331
  </div>
332
  </span>
333
+ <div class="ml-1 xl:ml-2 mt-2">
334
+ <a class="px-1.5 py-2 es-documentation" href="https://www.icegram.com/documentation/es-how-to-create-and-send-newsletter-emails/?utm_source=in_app&utm_medium=broadcast&utm_campaign=es_doc" target="_blank">
335
+ <svg class="w-6 h-6 -mt-1 inline text-gray-500" fill="none" stroke="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
336
+ <title><?php esc_html_e('Documentation ', 'email-subscribers'); ?></title>
337
+ <path stroke-linecap="round" stroke-linejoin="round" stroke-width="2" d="M12 6.253v13m0-13C10.832 5.477 9.246 5 7.5 5S4.168 5.477 3 6.253v13C4.168 18.477 5.754 18 7.5 18s3.332.477 4.5 1.253m0-13C13.168 5.477 14.754 5 16.5 5c1.747 0 3.332.477 4.5 1.253v13C19.832 18.477 18.247 18 16.5 18c-1.746 0-3.332.477-4.5 1.253"></path>
338
+ </svg>
339
+ </a>
340
+ </div>
341
  </div>
342
  </div>
343
  </header>
345
  <div class="mx-auto max-w-7xl">
346
  <hr class="wp-header-end">
347
  </div>
348
+ <div class="mx-auto mt-6 es_broadcast_first max-w-7xl">
 
 
 
 
 
349
  <div>
350
  <div class=" bg-white rounded-lg shadow-md md:flex">
351
  <div class="broadcast_main_content py-4 pl-2">
lite/includes/classes/class-es-queue.php CHANGED
@@ -633,7 +633,7 @@ if ( ! class_exists( 'ES_Queue' ) ) {
633
 
634
  // Check if email sending limit or time limit or memory limit has been reached.
635
  if ( $email_sending_limit <= 0 || IG_ES_Background_Process_Helper::time_exceeded( $batch_start_time, 0.8 ) || IG_ES_Background_Process_Helper::memory_exceeded() ) {
636
- break 2;
637
  }
638
  }
639
  }
633
 
634
  // Check if email sending limit or time limit or memory limit has been reached.
635
  if ( $email_sending_limit <= 0 || IG_ES_Background_Process_Helper::time_exceeded( $batch_start_time, 0.8 ) || IG_ES_Background_Process_Helper::memory_exceeded() ) {
636
+ break 2; // Break inner and outer loop
637
  }
638
  }
639
  }
lite/includes/classes/class-es-reports-table.php CHANGED
@@ -35,7 +35,7 @@ class ES_Reports_Table extends ES_List_Table {
35
 
36
  $campaign_types = array( 'sequence', 'sequence_message' );
37
  //Only if it is sequence then control will transfer to Sequence Reports class.
38
- if ( ! empty ( $campaign_type ) && in_array( $campaign_type, $campaign_types ) ) {
39
  if ( ES()->is_pro() ) {
40
  $reports = ES_Pro_Sequence_Reports::get_instance();
41
  $reports->es_sequence_reports_callback();
35
 
36
  $campaign_types = array( 'sequence', 'sequence_message' );
37
  //Only if it is sequence then control will transfer to Sequence Reports class.
38
+ if ( ! empty ( $campaign_type ) && in_array( $campaign_type, $campaign_types, true ) ) {
39
  if ( ES()->is_pro() ) {
40
  $reports = ES_Pro_Sequence_Reports::get_instance();
41
  $reports->es_sequence_reports_callback();
lite/includes/classes/class-ig-es-subscriber-query.php CHANGED
@@ -226,14 +226,14 @@ class IG_ES_Subscribers_Query {
226
  if ( '_lists__in' === $field ) {
227
 
228
  if ( $value ) {
229
- $sub_cond[] = "subscribers.id IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id IN (" . implode( ',', array_filter( $value, 'is_numeric' ) ) . ') )';
230
  }
231
  } elseif ( '_lists__not_in' === $field ) {
232
 
233
  if ( $value ) {
234
- $sub_cond[] = "subscribers.id NOT IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id IN (" . implode( ',', array_filter( $value, 'is_numeric' ) ) . ') )';
235
  } else {
236
- $sub_cond[] = "subscribers.id NOT IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id <> 0 )";
237
  }
238
  } elseif ( 0 === strpos( $field, '_sent' ) ) {
239
 
226
  if ( '_lists__in' === $field ) {
227
 
228
  if ( $value ) {
229
+ $sub_cond[] = "lists_subscribers.contact_id IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id IN (" . implode( ',', array_filter( $value, 'is_numeric' ) ) . ') )';
230
  }
231
  } elseif ( '_lists__not_in' === $field ) {
232
 
233
  if ( $value ) {
234
+ $sub_cond[] = "lists_subscribers.contact_id NOT IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id IN (" . implode( ',', array_filter( $value, 'is_numeric' ) ) . ') )';
235
  } else {
236
+ $sub_cond[] = "lists_subscribers.contact_id NOT IN ( SELECT contact_id FROM {$wpbd->prefix}ig_lists_contacts WHERE list_id <> 0 )";
237
  }
238
  } elseif ( 0 === strpos( $field, '_sent' ) ) {
239
 
lite/includes/db/class-es-db-actions.php CHANGED
@@ -379,7 +379,7 @@ class ES_DB_Actions extends ES_DB {
379
  * @since 4.5.2
380
  */
381
  public function get_count_based_on_id_type( $campaign_id, $message_id, $type, $distinct = true ) {
382
- global $wpdb;
383
 
384
  $args = array();
385
 
@@ -389,19 +389,26 @@ class ES_DB_Actions extends ES_DB {
389
 
390
  $count = 0;
391
  if ( $distinct ) {
392
- $count = $wpdb->get_var(
393
- $wpdb->prepare(
394
- "SELECT COUNT(DISTINCT(`contact_id`)) as count FROM {$wpdb->prefix}ig_actions WHERE `campaign_id`= %d AND `message_id`= %d AND `type` = %d",
395
- $args
396
- )
397
  );
398
  } else {
399
- $count = $wpdb->get_var(
400
- $wpdb->prepare(
401
- "SELECT COUNT(`contact_id`) as count FROM {$wpdb->prefix}ig_actions WHERE `campaign_id`= %d AND `message_id`= %d AND `type` = %d",
402
- $args
403
- )
 
 
 
 
 
 
404
  );
 
 
 
405
  }
406
 
407
  return $count;
379
  * @since 4.5.2
380
  */
381
  public function get_count_based_on_id_type( $campaign_id, $message_id, $type, $distinct = true ) {
382
+ global $wpbd;
383
 
384
  $args = array();
385
 
389
 
390
  $count = 0;
391
  if ( $distinct ) {
392
+ $query = $wpbd->prepare(
393
+ "SELECT COUNT(DISTINCT(`contact_id`)) as count FROM {$wpbd->prefix}ig_actions WHERE `campaign_id`= %d AND `message_id`= %d AND `type` = %d",
394
+ $args
 
 
395
  );
396
  } else {
397
+ $query = $wpbd->prepare(
398
+ "SELECT COUNT(`contact_id`) as count FROM {$wpbd->prefix}ig_actions WHERE `campaign_id`= %d AND `message_id`= %d AND `type` = %d",
399
+ $args
400
+ );
401
+ }
402
+
403
+ $cache_key = ES_Cache::generate_key( $query );
404
+ $exists_in_cache = ES_Cache::is_exists( $cache_key, 'query' );
405
+ if ( ! $exists_in_cache ) {
406
+ $count = $wpbd->get_var(
407
+ $query
408
  );
409
+ ES_Cache::set( $cache_key, $count, 'query' );
410
+ } else {
411
+ $count = ES_Cache::get( $cache_key, 'query' );
412
  }
413
 
414
  return $count;
lite/includes/db/class-es-db-contacts.php CHANGED
@@ -446,6 +446,9 @@ class ES_DB_Contacts extends ES_DB {
446
  public function is_contact_exist_in_list( $email, $list_id ) {
447
  global $wpbd;
448
 
 
 
 
449
  $contact_id = $this->get_column_by( 'id', 'email', $email );
450
 
451
  $data = array();
@@ -536,21 +539,30 @@ class ES_DB_Contacts extends ES_DB {
536
  * @since 4.0.0
537
  * @since 4.3.4 Used prepare_for_in_query instead of array_to_str
538
  */
539
- public function get_contact_ids_by_emails( $emails = array() ) {
540
  global $wpbd;
541
 
542
  if ( count( $emails ) > 0 ) {
543
  $ids_count = count( $emails );
544
  $ids_placeholders = array_fill( 0, $ids_count, '%s' );
545
- $ids = $wpbd->get_col( $wpbd->prepare(
546
- "SELECT id FROM {$wpbd->prefix}ig_contacts WHERE email IN( " . implode( ',', $ids_placeholders ) . ' )',
547
  $emails
548
- ) );
 
 
549
  } else {
550
- $ids = $wpbd->get_col( "SELECT id FROM {$wpbd->prefix}ig_contacts" );
 
 
 
 
 
 
 
551
  }
552
 
553
- return $ids;
554
  }
555
 
556
  /**
446
  public function is_contact_exist_in_list( $email, $list_id ) {
447
  global $wpbd;
448
 
449
+ // Flush cache to ensure we have latest results.
450
+ ES_Cache::flush();
451
+
452
  $contact_id = $this->get_column_by( 'id', 'email', $email );
453
 
454
  $data = array();
539
  * @since 4.0.0
540
  * @since 4.3.4 Used prepare_for_in_query instead of array_to_str
541
  */
542
+ public function get_contact_ids_created_at_date_by_emails( $emails = array() ) {
543
  global $wpbd;
544
 
545
  if ( count( $emails ) > 0 ) {
546
  $ids_count = count( $emails );
547
  $ids_placeholders = array_fill( 0, $ids_count, '%s' );
548
+ $results = $wpbd->get_results( $wpbd->prepare(
549
+ "SELECT id, created_at FROM {$wpbd->prefix}ig_contacts WHERE email IN( " . implode( ',', $ids_placeholders ) . ' )',
550
  $emails
551
+ ),
552
+ ARRAY_A
553
+ );
554
  } else {
555
+ $results = $wpbd->get_results( "SELECT id , created_at FROM {$wpbd->prefix}ig_contacts" );
556
+ }
557
+
558
+ $map = array();
559
+ if ( count( $results ) > 0 ) {
560
+ foreach ( $results as $result ) {
561
+ $map[ $result['id'] ] = $result['created_at'];
562
+ }
563
  }
564
 
565
+ return $map;
566
  }
567
 
568
  /**
lite/includes/db/class-es-db-links.php CHANGED
@@ -142,6 +142,8 @@ if ( ! class_exists( 'ES_DB_Links' ) ) {
142
  public function get_link_by_campaign_id( $link, $campaign_id = 0, $message_id = 0, $index = 0 ) {
143
  global $wpdb;
144
 
 
 
145
  $where = $wpdb->prepare( ' link = %s AND campaign_id = %d AND message_id = %d AND i = %d', $link, $campaign_id, $message_id, $index );
146
 
147
  return $this->get_by_conditions( $where );
142
  public function get_link_by_campaign_id( $link, $campaign_id = 0, $message_id = 0, $index = 0 ) {
143
  global $wpdb;
144
 
145
+ ES_Cache::flush();
146
+
147
  $where = $wpdb->prepare( ' link = %s AND campaign_id = %d AND message_id = %d AND i = %d', $link, $campaign_id, $message_id, $index );
148
 
149
  return $this->get_by_conditions( $where );
lite/includes/db/class-es-db-lists-contacts.php CHANGED
@@ -478,15 +478,14 @@ class ES_DB_Lists_Contacts extends ES_DB {
478
  }
479
 
480
  $key = 0;
481
- foreach ( $contacts as $contact_id ) {
482
-
483
  foreach ( $list_ids as $list_id ) {
484
 
485
  $values[ $key ]['contact_id'] = $contact_id;
486
  $values[ $key ]['list_id'] = $list_id;
487
  $values[ $key ]['status'] = $status;
488
  $values[ $key ]['optin_type'] = $optin_type;
489
- $values[ $key ]['subscribed_at'] = $subscribed_at;
490
  $values[ $key ]['subscribed_ip'] = $subscribed_ip;
491
  $values[ $key ]['unsubscribed_at'] = $unsubscribed_at;
492
  $values[ $key ]['unsubscribed_ip'] = $unsubscribed_ip;
478
  }
479
 
480
  $key = 0;
481
+ foreach ( $contacts as $contact_id => $created_at ) {
 
482
  foreach ( $list_ids as $list_id ) {
483
 
484
  $values[ $key ]['contact_id'] = $contact_id;
485
  $values[ $key ]['list_id'] = $list_id;
486
  $values[ $key ]['status'] = $status;
487
  $values[ $key ]['optin_type'] = $optin_type;
488
+ $values[ $key ]['subscribed_at'] = $created_at;
489
  $values[ $key ]['subscribed_ip'] = $subscribed_ip;
490
  $values[ $key ]['unsubscribed_at'] = $unsubscribed_at;
491
  $values[ $key ]['unsubscribed_ip'] = $unsubscribed_ip;
lite/includes/db/class-es-db-lists.php CHANGED
@@ -302,15 +302,15 @@ class ES_DB_Lists extends ES_DB {
302
  if ( empty( $list ) || ! is_scalar( $list ) ) {
303
  return 0;
304
  }
305
-
306
  $lower_list = strtolower( $list );
307
-
308
  $is_list_exists = $this->is_list_exists( $lower_list );
309
-
310
  if ( $is_list_exists ) {
311
  return 0;
312
  }
313
-
314
  $data = array(
315
  'slug' => ! empty( $slug ) ? $slug : sanitize_title( $list ),
316
  'name' => $list,
302
  if ( empty( $list ) || ! is_scalar( $list ) ) {
303
  return 0;
304
  }
305
+
306
  $lower_list = strtolower( $list );
307
+
308
  $is_list_exists = $this->is_list_exists( $lower_list );
309
+
310
  if ( $is_list_exists ) {
311
  return 0;
312
  }
313
+
314
  $data = array(
315
  'slug' => ! empty( $slug ) ? $slug : sanitize_title( $list ),
316
  'name' => $list,
lite/includes/db/class-es-db-mailing-queue.php CHANGED
@@ -177,17 +177,26 @@ class ES_DB_Mailing_Queue {
177
  }
178
 
179
  public static function get_notification_by_hash( $notification_hash ) {
180
- global $wpdb;
181
 
182
  $notification = array();
183
- $results = $wpdb->get_results(
184
- $wpdb->prepare(
185
- "SELECT * FROM {$wpdb->prefix}ig_mailing_queue WHERE hash = %s",
186
- $notification_hash
187
- ),
188
- ARRAY_A
189
  );
190
 
 
 
 
 
 
 
 
 
 
 
 
 
191
  if ( count( $results ) > 0 ) {
192
  $notification = array_shift( $results );
193
  }
@@ -196,13 +205,22 @@ class ES_DB_Mailing_Queue {
196
  }
197
 
198
  public static function get_notification_by_campaign_id( $campaign_id ) {
199
- global $wpdb;
200
 
201
  $notification = array();
202
- $results = $wpdb->get_results(
203
- $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}ig_mailing_queue WHERE campaign_id = %d", $campaign_id ),
204
- ARRAY_A
205
- );
 
 
 
 
 
 
 
 
 
206
 
207
  if ( count( $results ) > 0 ) {
208
  $notification = array_shift( $results );
177
  }
178
 
179
  public static function get_notification_by_hash( $notification_hash ) {
180
+ global $wpbd;
181
 
182
  $notification = array();
183
+ $query = $wpbd->prepare(
184
+ "SELECT * FROM {$wpbd->prefix}ig_mailing_queue WHERE hash = %s",
185
+ $notification_hash
 
 
 
186
  );
187
 
188
+ $cache_key = ES_Cache::generate_key( $query );
189
+ $exists_in_cache = ES_Cache::is_exists( $cache_key, 'query' );
190
+ if ( ! $exists_in_cache ) {
191
+ $results = $wpbd->get_results(
192
+ $query,
193
+ ARRAY_A
194
+ );
195
+ ES_Cache::set( $cache_key, $results, 'query' );
196
+ } else {
197
+ $results = ES_Cache::get( $cache_key, 'query' );
198
+ }
199
+
200
  if ( count( $results ) > 0 ) {
201
  $notification = array_shift( $results );
202
  }
205
  }
206
 
207
  public static function get_notification_by_campaign_id( $campaign_id ) {
208
+ global $wpbd;
209
 
210
  $notification = array();
211
+ $query = $wpbd->prepare( "SELECT * FROM {$wpbd->prefix}ig_mailing_queue WHERE campaign_id = %d", $campaign_id );
212
+
213
+ $cache_key = ES_Cache::generate_key( $query );
214
+ $exists_in_cache = ES_Cache::is_exists( $cache_key, 'query' );
215
+ if ( ! $exists_in_cache ) {
216
+ $results = $wpbd->get_results(
217
+ $query,
218
+ ARRAY_A
219
+ );
220
+ ES_Cache::set( $cache_key, $results, 'query' );
221
+ } else {
222
+ $results = ES_Cache::get( $cache_key, 'query' );
223
+ }
224
 
225
  if ( count( $results ) > 0 ) {
226
  $notification = array_shift( $results );
lite/includes/db/class-es-db-sending-queue.php CHANGED
@@ -292,7 +292,7 @@ class ES_DB_Sending_Queue {
292
  $queue_opened_at = isset( $column_defaults['opened_at'] ) ? $column_defaults['opened_at'] : null;
293
 
294
  $campaign = ES()->campaigns_db->get( $campaign_id );
295
- $args = array(
296
  'select' => array( 'subscribers.id' ),
297
  'lists' => $list_ids,
298
  'return_sql' => true, // This flag will return the required sql query
@@ -608,7 +608,7 @@ class ES_DB_Sending_Queue {
608
 
609
  $result = 0;
610
 
611
- if ( '' != $hash ) {
612
  $result = $wpdb->get_var(
613
  $wpdb->prepare(
614
  "SELECT COUNT(*) AS count FROM {$wpdb->prefix}ig_sending_queue WHERE opened = 1 AND mailing_queue_hash = %s",
@@ -616,18 +616,6 @@ class ES_DB_Sending_Queue {
616
  )
617
  );
618
 
619
- if ( 0 == $result ) {
620
- $table_name = $wpdb->get_var( $wpdb->prepare( 'SHOW TABLES LIKE %s', $wpdb->prefix . 'es_deliverreport' ) );
621
- if ( $table_name === $wpdb->prefix . 'es_deliverreport' ) {
622
- $result = $wpdb->get_var(
623
- $wpdb->prepare(
624
- "SELECT COUNT(*) AS count FROM {$wpdb->prefix}es_deliverreport WHERE es_deliver_status = 'Viewed' AND es_deliver_sentguid = %s",
625
- array( $hash )
626
- )
627
- );
628
- }
629
- }
630
-
631
  }
632
 
633
  return $result;
292
  $queue_opened_at = isset( $column_defaults['opened_at'] ) ? $column_defaults['opened_at'] : null;
293
 
294
  $campaign = ES()->campaigns_db->get( $campaign_id );
295
+ $args = array(
296
  'select' => array( 'subscribers.id' ),
297
  'lists' => $list_ids,
298
  'return_sql' => true, // This flag will return the required sql query
608
 
609
  $result = 0;
610
 
611
+ if ( '' !== $hash ) {
612
  $result = $wpdb->get_var(
613
  $wpdb->prepare(
614
  "SELECT COUNT(*) AS count FROM {$wpdb->prefix}ig_sending_queue WHERE opened = 1 AND mailing_queue_hash = %s",
616
  )
617
  );
618
 
 
 
 
 
 
 
 
 
 
 
 
 
619
  }
620
 
621
  return $result;
lite/includes/db/class-es-db.php CHANGED
@@ -10,10 +10,10 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  * @since 4.0
11
  */
12
  abstract class ES_DB {
13
-
14
  /**
15
  * Table name
16
- *
17
  * @since 4.0.0
18
  * @var $table_name
19
  *
@@ -22,7 +22,7 @@ abstract class ES_DB {
22
 
23
  /**
24
  * Table DB version
25
- *
26
  * @since 4.0.0
27
  * @var $version
28
  *
@@ -31,7 +31,7 @@ abstract class ES_DB {
31
 
32
  /**
33
  * Table primary key column name
34
- *
35
  * @since 4.0.0
36
  * @var $primary_key
37
  *
@@ -59,7 +59,7 @@ abstract class ES_DB {
59
 
60
  /**
61
  * Get columns default values
62
- *
63
  * @return array
64
  *
65
  * @since 4.0.0
@@ -72,15 +72,33 @@ abstract class ES_DB {
72
  * Retrieve a row by the primary key
73
  *
74
  * @param $row_id
 
75
  *
76
- * @return array|object|void|null
77
  *
78
  * @since 4.0.0
79
  */
80
  public function get( $row_id, $output = ARRAY_A ) {
 
81
  global $wpbd;
82
 
83
- return $wpbd->get_row( $wpbd->prepare( "SELECT * FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id ), $output );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
84
  }
85
 
86
  /**
@@ -88,8 +106,9 @@ abstract class ES_DB {
88
  *
89
  * @param $column
90
  * @param $row_id
 
91
  *
92
- * @return array|object|void|null
93
  *
94
  * @since 4.0.0
95
  */
@@ -97,7 +116,22 @@ abstract class ES_DB {
97
  global $wpbd;
98
  $column = esc_sql( $column );
99
 
100
- return $wpbd->get_row( $wpbd->prepare( "SELECT * FROM $this->table_name WHERE $column = %s LIMIT 1;", $row_id ), $output );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
  }
102
 
103
  /**
@@ -116,7 +150,20 @@ abstract class ES_DB {
116
  $query .= " WHERE $where";
117
  }
118
 
119
- return $wpbd->get_results( $query, $output );
 
 
 
 
 
 
 
 
 
 
 
 
 
120
  }
121
 
122
  /**
@@ -146,10 +193,28 @@ abstract class ES_DB {
146
  $column = esc_sql( $column );
147
 
148
  if ( $row_id ) {
149
- return $wpbd->get_var( $wpbd->prepare( "SELECT $column FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id ) );
150
  } else {
151
- return $wpbd->get_col( "SELECT $column FROM $this->table_name" );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
152
  }
 
 
153
  }
154
 
155
  /**
@@ -172,10 +237,28 @@ abstract class ES_DB {
172
  $column = esc_sql( $column );
173
 
174
  if ( $only_one ) {
175
- return $wpbd->get_var( $wpbd->prepare( "SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;", $column_value ) );
176
  } else {
177
- return $wpbd->get_col( $wpbd->prepare( "SELECT $column FROM $this->table_name WHERE $column_where = %s;", $column_value ) );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
178
  }
 
 
179
  }
180
 
181
  /**
@@ -193,11 +276,24 @@ abstract class ES_DB {
193
 
194
  $column = esc_sql( $column );
195
 
 
196
  if ( ! empty( $where ) ) {
197
- return $wpbd->get_col( "SELECT $column FROM $this->table_name WHERE $where" );
198
- } else {
199
- return $wpbd->get_col( "SELECT $column FROM $this->table_name" );
 
 
 
 
 
 
 
 
 
 
200
  }
 
 
201
  }
202
 
203
  /**
@@ -221,11 +317,25 @@ abstract class ES_DB {
221
 
222
  $columns = implode( ', ', $columns );
223
 
 
224
  if ( ! empty( $where ) ) {
225
- return $wpbd->get_results( "SELECT $columns FROM $this->table_name WHERE $where", $output );
226
- } else {
227
- return $wpbd->get_results( "SELECT $columns FROM $this->table_name", $output );
228
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
229
  }
230
 
231
  /**
@@ -434,8 +544,20 @@ abstract class ES_DB {
434
  if ( ! empty( $where ) ) {
435
  $query .= " WHERE $where";
436
  }
437
-
438
- return $wpbd->get_var( $query );
 
 
 
 
 
 
 
 
 
 
 
 
439
  }
440
 
441
  /**
@@ -504,9 +626,9 @@ abstract class ES_DB {
504
  $fields_str = '`' . implode( '`, `', $fields ) . '`';
505
  }
506
 
507
- $query = "INSERT INTO $this->table_name ({$fields_str}) VALUES ";
508
  $query .= implode( ', ', $place_holders );
509
- $sql = $wpbd->prepare( $query, $final_values );
510
 
511
  if ( ! $wpbd->query( $sql ) ) {
512
  $error_flag = true;
@@ -523,7 +645,7 @@ abstract class ES_DB {
523
 
524
  /**
525
  * Bulk insert data into given table
526
- *
527
  * @param $table_name
528
  * @param $fields
529
  * @param $place_holders
@@ -537,9 +659,9 @@ abstract class ES_DB {
537
 
538
  $fields_str = '`' . implode( '`, `', $fields ) . '`';
539
 
540
- $query = "INSERT INTO $table_name ({$fields_str}) VALUES ";
541
  $query .= implode( ', ', $place_holders );
542
- $sql = $wpbd->prepare( $query, $values );
543
 
544
  if ( $wpbd->query( $sql ) ) {
545
  return true;
@@ -638,4 +760,58 @@ abstract class ES_DB {
638
  return '';
639
  }
640
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
641
  }
10
  * @since 4.0
11
  */
12
  abstract class ES_DB {
13
+
14
  /**
15
  * Table name
16
+ *
17
  * @since 4.0.0
18
  * @var $table_name
19
  *
22
 
23
  /**
24
  * Table DB version
25
+ *
26
  * @since 4.0.0
27
  * @var $version
28
  *
31
 
32
  /**
33
  * Table primary key column name
34
+ *
35
  * @since 4.0.0
36
  * @var $primary_key
37
  *
59
 
60
  /**
61
  * Get columns default values
62
+ *
63
  * @return array
64
  *
65
  * @since 4.0.0
72
  * Retrieve a row by the primary key
73
  *
74
  * @param $row_id
75
+ * @param string $output
76
  *
77
+ * @return bool|mixed
78
  *
79
  * @since 4.0.0
80
  */
81
  public function get( $row_id, $output = ARRAY_A ) {
82
+
83
  global $wpbd;
84
 
85
+ $query = $wpbd->prepare( "SELECT * FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id );
86
+
87
+ // Considering $output also while considering key generation
88
+ $cache_key = $this->generate_cache_key( $query . $output );
89
+
90
+ $found = false;
91
+
92
+ $result = $this->get_cache( $cache_key, $found );
93
+
94
+ if ( ! $found ) {
95
+
96
+ $result = $wpbd->get_row( $query, $output );
97
+
98
+ $this->set_cache( $cache_key, $result );
99
+ }
100
+
101
+ return $result;
102
  }
103
 
104
  /**
106
  *
107
  * @param $column
108
  * @param $row_id
109
+ * @param string $output
110
  *
111
+ * @return false|mixed
112
  *
113
  * @since 4.0.0
114
  */
116
  global $wpbd;
117
  $column = esc_sql( $column );
118
 
119
+ $query = $wpbd->prepare( "SELECT * FROM $this->table_name WHERE $column = %s LIMIT 1;", $row_id );
120
+
121
+ // Consider $output also while generating cache key
122
+ $cache_key = $this->generate_cache_key( $query . $output );
123
+
124
+ $found = false;
125
+
126
+ $result = $this->get_cache( $cache_key, $found );
127
+
128
+ if ( ! $found ) {
129
+ $result = $wpbd->get_row( $query, $output );
130
+
131
+ $this->set_cache( $cache_key, $result );
132
+ }
133
+
134
+ return $result;
135
  }
136
 
137
  /**
150
  $query .= " WHERE $where";
151
  }
152
 
153
+ // Consider $output also while generating cache key
154
+ $cache_key = $this->generate_cache_key( $query . $output );
155
+
156
+ $found = false;
157
+
158
+ $result = $this->get_cache( $cache_key, $found );
159
+
160
+ if ( ! $found ) {
161
+ $result = $wpbd->get_results( $query, $output );
162
+
163
+ $this->set_cache( $cache_key, $result );
164
+ }
165
+
166
+ return $result;
167
  }
168
 
169
  /**
193
  $column = esc_sql( $column );
194
 
195
  if ( $row_id ) {
196
+ $query = $wpbd->prepare( "SELECT $column FROM $this->table_name WHERE $this->primary_key = %s LIMIT 1;", $row_id );
197
  } else {
198
+ $query = "SELECT $column FROM $this->table_name";
199
+ }
200
+
201
+ $cache_key = $this->generate_cache_key( $query );
202
+
203
+ $found = false;
204
+
205
+ $result = $this->get_cache( $cache_key, $found );
206
+
207
+ if ( ! $found ) {
208
+ if ( $row_id ) {
209
+ $result = $wpbd->get_var( $query );
210
+ } else {
211
+ $result = $wpbd->get_col( $query );
212
+ }
213
+
214
+ $this->set_cache( $cache_key, $result );
215
  }
216
+
217
+ return $result;
218
  }
219
 
220
  /**
237
  $column = esc_sql( $column );
238
 
239
  if ( $only_one ) {
240
+ $query = $wpbd->prepare( "SELECT $column FROM $this->table_name WHERE $column_where = %s LIMIT 1;", $column_value );
241
  } else {
242
+ $query = $wpbd->prepare( "SELECT $column FROM $this->table_name WHERE $column_where = %s;", $column_value );
243
+ }
244
+
245
+ $cache_key = $this->generate_cache_key( $query );
246
+
247
+ $found = false;
248
+
249
+ $result = $this->get_cache( $cache_key, $found );
250
+
251
+ if ( ! $found ) {
252
+ if ( $only_one ) {
253
+ $result = $wpbd->get_var( $query );
254
+ } else {
255
+ $result = $wpbd->get_col( $query );
256
+ }
257
+
258
+ $this->set_cache( $cache_key, $result );
259
  }
260
+
261
+ return $result;
262
  }
263
 
264
  /**
276
 
277
  $column = esc_sql( $column );
278
 
279
+ $query = "SELECT $column FROM $this->table_name";
280
  if ( ! empty( $where ) ) {
281
+ $query .= " WHERE $where";
282
+ }
283
+
284
+ $cache_key = $this->generate_cache_key( $query );
285
+
286
+ $found = false;
287
+
288
+ $result = $this->get_cache( $cache_key, $found );
289
+
290
+ if ( ! $found ) {
291
+ $result = $wpbd->get_col( $query );
292
+
293
+ $this->set_cache( $cache_key, $result );
294
  }
295
+
296
+ return $result;
297
  }
298
 
299
  /**
317
 
318
  $columns = implode( ', ', $columns );
319
 
320
+ $query = "SELECT $columns FROM $this->table_name";
321
  if ( ! empty( $where ) ) {
322
+ $query .= " WHERE $where";
 
 
323
  }
324
+
325
+ // Consider $output also while generating cache key
326
+ $cache_key = $this->generate_cache_key( $query . $output );
327
+
328
+ $found = false;
329
+
330
+ $result = $this->get_cache( $cache_key, $found );
331
+
332
+ if ( ! $found ) {
333
+ $result = $wpbd->get_results( $query, $output );
334
+
335
+ $this->set_cache( $cache_key, $result );
336
+ }
337
+
338
+ return $result;
339
  }
340
 
341
  /**
544
  if ( ! empty( $where ) ) {
545
  $query .= " WHERE $where";
546
  }
547
+
548
+ $cache_key = $this->generate_cache_key( $query );
549
+
550
+ $found = false;
551
+
552
+ $result = $this->get_cache( $cache_key, $found );
553
+
554
+ if ( ! $found ) {
555
+ $result = $wpbd->get_var( $query );
556
+
557
+ $this->set_cache( $cache_key, $result );
558
+ }
559
+
560
+ return $result;
561
  }
562
 
563
  /**
626
  $fields_str = '`' . implode( '`, `', $fields ) . '`';
627
  }
628
 
629
+ $query = "INSERT INTO $this->table_name ({$fields_str}) VALUES ";
630
  $query .= implode( ', ', $place_holders );
631
+ $sql = $wpbd->prepare( $query, $final_values );
632
 
633
  if ( ! $wpbd->query( $sql ) ) {
634
  $error_flag = true;
645
 
646
  /**
647
  * Bulk insert data into given table
648
+ *
649
  * @param $table_name
650
  * @param $fields
651
  * @param $place_holders
659
 
660
  $fields_str = '`' . implode( '`, `', $fields ) . '`';
661
 
662
+ $query = "INSERT INTO $table_name ({$fields_str}) VALUES ";
663
  $query .= implode( ', ', $place_holders );
664
+ $sql = $wpbd->prepare( $query, $values );
665
 
666
  if ( $wpbd->query( $sql ) ) {
667
  return true;
760
  return '';
761
  }
762
 
763
+ /**
764
+ * Generate Cache key
765
+ *
766
+ * @param string $str
767
+ *
768
+ * @return bool|string
769
+ *
770
+ * @since 4.7.2
771
+ */
772
+ public function generate_cache_key( $str = '' ) {
773
+ return ES_Cache::generate_key( $str );
774
+ }
775
+
776
+ /**
777
+ * Get data from cache
778
+ *
779
+ * @param $key
780
+ * @param null $found
781
+ *
782
+ * @return false|mixed
783
+ *
784
+ * @since 4.7.2
785
+ */
786
+ public function get_cache( $key, &$found = null ) {
787
+ return ES_Cache::get( $key, 'query', false, $found );
788
+ }
789
+
790
+ /**
791
+ * Set data into cache
792
+ *
793
+ * @param string $key
794
+ * @param string $value
795
+ *
796
+ * @since 4.7.2
797
+ */
798
+ public function set_cache( $key = '', $value = '' ) {
799
+ if ( ! empty( $key ) ) {
800
+ ES_Cache::set( $key, $value, 'query' );
801
+ }
802
+ }
803
+
804
+ /**
805
+ * Check if cache exists?
806
+ *
807
+ * @param string $key
808
+ *
809
+ * @return bool
810
+ *
811
+ * @since 4.7.2
812
+ */
813
+ public function cache_exists( $key = '' ) {
814
+ return ES_Cache::is_exists( $key, 'query' );
815
+ }
816
+
817
  }
lite/includes/es-core-functions.php CHANGED
@@ -345,7 +345,7 @@ if ( ! function_exists( 'ig_es_get_gmt_offset' ) ) {
345
  */
346
  function ig_es_get_gmt_offset( $in_seconds = false, $timestamp = null ) {
347
 
348
- $offset = get_option( 'gmt_offset' );
349
 
350
  // check if timestamp has DST
351
  if ( ! is_null( $timestamp ) ) {
345
  */
346
  function ig_es_get_gmt_offset( $in_seconds = false, $timestamp = null ) {
347
 
348
+ $offset = get_option( 'gmt_offset', 0 );
349
 
350
  // check if timestamp has DST
351
  if ( ! is_null( $timestamp ) ) {
lite/includes/mailers/class-es-base-mailer.php CHANGED
@@ -253,6 +253,17 @@ if ( ! class_exists( 'ES_Base_Mailer' ) ) {
253
  public function get_headers() {
254
  return apply_filters( 'ig_es_mailer_get_headers', $this->headers, $this );
255
  }
 
 
 
 
 
 
 
 
 
 
 
256
 
257
  /**
258
  * Reset mailer data
@@ -274,7 +285,40 @@ if ( ! class_exists( 'ES_Base_Mailer' ) ) {
274
  * @since 4.7.0
275
  */
276
  public function is_batch_limit_reached() {
277
- return true;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
278
  }
279
  }
280
  }
253
  public function get_headers() {
254
  return apply_filters( 'ig_es_mailer_get_headers', $this->headers, $this );
255
  }
256
+
257
+ /**
258
+ * Get placeholder variable name string
259
+ *
260
+ * @return string $variable_string
261
+ *
262
+ * @since 4.7.2
263
+ */
264
+ public function get_variable_string( $variable_name = '' ) {
265
+ return $variable_name;
266
+ }
267
 
268
  /**
269
  * Reset mailer data
285
  * @since 4.7.0
286
  */
287
  public function is_batch_limit_reached() {
288
+ return $this->current_batch_size >= $this->batch_limit;
289
+ }
290
+
291
+ /**
292
+ * Convert ES tags to mailer tags
293
+ *
294
+ * @param string $string
295
+ *
296
+ * @return string $string
297
+ *
298
+ * @since 4.7.0
299
+ */
300
+ public function convert_es_tags_to_mailer_tags( $string = '' ) {
301
+ return $string;
302
+ }
303
+
304
+ /**
305
+ * Send batch email
306
+ *
307
+ * @since 4.7.2
308
+ */
309
+ public function send_batch() {
310
+
311
+ $response = $this->send_email();
312
+ return $response;
313
+ }
314
+
315
+ /**
316
+ * Clear mailer data
317
+ *
318
+ * @since 4.7.2
319
+ */
320
+ public function clear_email_data() {
321
+ // Clear mailer specific data
322
  }
323
  }
324
  }
lite/includes/mailers/class-es-pepipost-mailer.php CHANGED
@@ -68,12 +68,23 @@ if ( ! class_exists( 'ES_Pepipost_Mailer' ) ) {
68
  // We need to decode entities only in case of Pepipost. For other mailers it is working as expected.
69
  $message->body = ES_Common::decode_entities( $message->body );
70
 
71
- $params['personalizations'][]['recipient'] = $message->to;
72
- $params['from']['fromEmail'] = $message->from;
73
- $params['from']['fromName'] = $message->from_name;
74
- $params['subject'] = $message->subject;
75
- $params['content'] = $message->body;
76
- $params['replyToId'] = $message->reply_to_email;
 
 
 
 
 
 
 
 
 
 
 
77
 
78
  $tracking_settings = array(
79
  'opentrack' => ES()->mailer->can_track_open() ? 1 : 0,
@@ -82,6 +93,14 @@ if ( ! class_exists( 'ES_Pepipost_Mailer' ) ) {
82
 
83
  $params['settings'] = $tracking_settings;
84
 
 
 
 
 
 
 
 
 
85
  $attachments = $message->attachments;
86
  if ( ! empty( $attachments ) ) {
87
  foreach ( $attachments as $attachment_name => $attachment_path ) {
@@ -103,16 +122,23 @@ if ( ! class_exists( 'ES_Pepipost_Mailer' ) ) {
103
  'api_key' => $this->api_key
104
  );
105
 
 
 
 
 
 
106
  $headers = ! empty( $message->headers ) ? array_merge( $headers, $message->headers ) : $headers;
107
  $method = 'POST';
108
  $qs = json_encode( $params );
109
 
 
110
  $options = array(
111
  'timeout' => 15,
112
  'method' => $method,
113
  'headers' => $headers
114
  );
115
 
 
116
  if ( 'POST' == $method ) {
117
  $options['body'] = $qs;
118
  }
68
  // We need to decode entities only in case of Pepipost. For other mailers it is working as expected.
69
  $message->body = ES_Common::decode_entities( $message->body );
70
 
71
+ $list_unsubscribe_header = ES()->mailer->get_list_unsubscribe_header( $message->to );
72
+
73
+ if ( ! empty( $list_unsubscribe_header ) ) {
74
+ $params['personalizations'][] = array(
75
+ 'recipient' => $message->to,
76
+ 'X-List-Unsubscribe' => $list_unsubscribe_header,
77
+ 'X-List-Unsubscribe-Post' => 'List-Unsubscribe=One-Click',
78
+ );
79
+ } else {
80
+ $params['personalizations'][]['recipient'] = $message->to;
81
+ }
82
+
83
+ $params['from']['fromEmail'] = $message->from;
84
+ $params['from']['fromName'] = $message->from_name;
85
+ $params['subject'] = $message->subject;
86
+ $params['content'] = $message->body;
87
+ $params['replyToId'] = $message->reply_to_email;
88
 
89
  $tracking_settings = array(
90
  'opentrack' => ES()->mailer->can_track_open() ? 1 : 0,
93
 
94
  $params['settings'] = $tracking_settings;
95
 
96
+
97
+ if ( ! empty( $list_unsubscribe_header ) ) {
98
+ $params['x-headers'] = array(
99
+ 'List-Unsubscribe' => $list_unsubscribe_header,
100
+ 'List-Unsubscribe-Post' => 'List-Unsubscribe=One-Click',
101
+ );
102
+ }
103
+
104
  $attachments = $message->attachments;
105
  if ( ! empty( $attachments ) ) {
106
  foreach ( $attachments as $attachment_name => $attachment_path ) {
122
  'api_key' => $this->api_key
123
  );
124
 
125
+ if ( ! empty( $list_unsubscribe_header ) ) {
126
+ $headers['X-List-Unsubscribe'] = $list_unsubscribe_header;
127
+ $headers['X-List-Unsubscribe-Post'] = 'List-Unsubscribe=One-Click';
128
+ }
129
+
130
  $headers = ! empty( $message->headers ) ? array_merge( $headers, $message->headers ) : $headers;
131
  $method = 'POST';
132
  $qs = json_encode( $params );
133
 
134
+
135
  $options = array(
136
  'timeout' => 15,
137
  'method' => $method,
138
  'headers' => $headers
139
  );
140
 
141
+
142
  if ( 'POST' == $method ) {
143
  $options['body'] = $qs;
144
  }
lite/includes/mailers/class-es-phpmail-mailer.php CHANGED
@@ -65,6 +65,12 @@ if ( ! class_exists( 'ES_Phpmail_Mailer' ) ) {
65
  $phpmailer->WordWrap = 50;
66
  $phpmailer->isHTML( true );
67
 
 
 
 
 
 
 
68
  $phpmailer->Subject = $message->subject;
69
  $phpmailer->Body = $message->body;
70
  $phpmailer->AltBody = $message->body_text; //Text Email Body for non html email client
65
  $phpmailer->WordWrap = 50;
66
  $phpmailer->isHTML( true );
67
 
68
+ $list_unsubscribe_header = ES()->mailer->get_list_unsubscribe_header( $message->to );
69
+ if ( ! empty( $list_unsubscribe_header ) ) {
70
+ $phpmailer->addCustomHeader( 'List-Unsubscribe', $list_unsubscribe_header );
71
+ $phpmailer->addCustomHeader( 'List-Unsubscribe-Post', 'List-Unsubscribe=One-Click' );
72
+ }
73
+
74
  $phpmailer->Subject = $message->subject;
75
  $phpmailer->Body = $message->body;
76
  $phpmailer->AltBody = $message->body_text; //Text Email Body for non html email client
lite/includes/workflows/class-es-workflow-data-types.php CHANGED
@@ -38,7 +38,8 @@ class ES_Workflow_Data_Types extends ES_Workflow_Registry {
38
  return apply_filters(
39
  'ig_es_data_types_includes',
40
  array(
41
- 'user' => 'ES_Data_Type_User',
 
42
  )
43
  );
44
  }
38
  return apply_filters(
39
  'ig_es_data_types_includes',
40
  array(
41
+ 'user' => 'ES_Data_Type_User',
42
+ 'subscriber' => 'ES_Data_Type_Subscriber',
43
  )
44
  );
45
  }
lite/includes/workflows/data-types/class-es-data-type-subscriber.php ADDED
@@ -0,0 +1,96 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Workflow data type subscriber
4
+ *
5
+ * @since 4.7.2
6
+ * @version 1.0
7
+ * @package Email Subscribers
8
+ */
9
+
10
+ if ( ! defined( 'ABSPATH' ) ) {
11
+ exit;
12
+ }
13
+
14
+ /**
15
+ * Class to handle subscriber data item
16
+ *
17
+ * @class ES_Data_Type_Subscriber
18
+ *
19
+ * @since 4.7.2
20
+ */
21
+ class ES_Data_Type_Subscriber extends ES_Workflow_Data_Type {
22
+
23
+ /**
24
+ * Validate given data item
25
+ *
26
+ * @since 4.7.2
27
+ *
28
+ * @param WP_User $item Data item object.
29
+ *
30
+ * @return bool
31
+ */
32
+ public function validate( $item ) {
33
+
34
+ if ( empty( $item['email'] ) || ! is_email( $item['email'] ) ) {
35
+ return false;
36
+ }
37
+
38
+ return true;
39
+ }
40
+
41
+
42
+ /**
43
+ * Returns id of given data item object. Only validated $items should be passed to this method
44
+ *
45
+ * @since 4.7.2
46
+ *
47
+ * @param WP_User $item Data item object.
48
+ *
49
+ * @return mixed
50
+ */
51
+ public function compress( $item ) {
52
+ return $item['email'];
53
+ }
54
+
55
+
56
+ /**
57
+ * Return data item object from given id.
58
+ *
59
+ * @since 4.7.2
60
+ *
61
+ * @param string $compressed_item Data item object ID.
62
+ * @param array $compressed_data_layer Data layer.
63
+ *
64
+ * @return mixed
65
+ */
66
+ public function decompress( $compressed_item, $compressed_data_layer ) {
67
+
68
+ $data = array();
69
+
70
+ if ( is_email( $compressed_item ) ) {
71
+ $data['email'] = $compressed_item;
72
+ }
73
+
74
+ return $data;
75
+ }
76
+
77
+ /**
78
+ * Abstract required data from data item object
79
+ *
80
+ * @since 4.7.2
81
+ *
82
+ * @param array $item Data item object.
83
+ * @return array
84
+ */
85
+ public function get_data( $item ) {
86
+
87
+ $data = array();
88
+
89
+ if ( ! empty( $item['email'] ) ) {
90
+ $data = $item;
91
+ $data['source'] = 'wp';
92
+ }
93
+
94
+ return $data;
95
+ }
96
+ }
lite/includes/workflows/queue/class-es-workflow-queue.php CHANGED
@@ -24,8 +24,8 @@ class ES_Workflow_Queue extends ES_DB_Workflows_Queue {
24
 
25
  // error messages
26
  const F_WORKFLOW_INACTIVE = 100;
27
- const F_MISSING_DATA = 101;
28
- const F_FATAL_ERROR = 102;
29
 
30
  /**
31
  * Workflow queue id
@@ -215,36 +215,47 @@ class ES_Workflow_Queue extends ES_DB_Workflows_Queue {
215
 
216
  $this->uncompressed_data_layer = $data_layer->get_raw_data();
217
 
 
218
  foreach ( $this->uncompressed_data_layer as $data_type_id => $data_item ) {
219
- $this->store_data_item( $data_type_id, $data_item );
 
 
 
 
 
 
 
 
220
  }
221
  }
222
 
223
 
224
  /**
225
- * Store workflow data item in the queue
226
  *
227
  * @param $data_type_id
228
  * @param $data_item
 
 
229
  */
230
- private function store_data_item( $data_type_id, $data_item ) {
231
 
232
  $data_type = ES_Workflow_Data_Types::get( $data_type_id );
233
 
234
  if ( ! $data_type || ! $data_type->validate( $data_item ) ) {
235
- return;
236
  }
237
 
238
  $storage_key = $data_type_id;
239
  $storage_value = $data_type->compress( $data_item );
240
-
241
  if ( $storage_key ) {
242
- $queue_id = $this->get_id();
243
- $meta_data = array(
244
  $storage_key => $storage_value
245
  );
246
- $this->update_meta( $queue_id, $meta_data );
247
  }
 
 
248
  }
249
 
250
 
24
 
25
  // error messages
26
  const F_WORKFLOW_INACTIVE = 100;
27
+ const F_MISSING_DATA = 101;
28
+ const F_FATAL_ERROR = 102;
29
 
30
  /**
31
  * Workflow queue id
215
 
216
  $this->uncompressed_data_layer = $data_layer->get_raw_data();
217
 
218
+ $items_data = array();
219
  foreach ( $this->uncompressed_data_layer as $data_type_id => $data_item ) {
220
+ $item_data = $this->get_item_data( $data_type_id, $data_item );
221
+ if ( ! empty( $item_data ) ) {
222
+ $items_data = array_merge( $items_data, $item_data );
223
+ }
224
+ }
225
+
226
+ if ( ! empty( $items_data ) ) {
227
+ $queue_id = $this->get_id();
228
+ $this->update_meta( $queue_id, $items_data );
229
  }
230
  }
231
 
232
 
233
  /**
234
+ * Get workflow data item's data
235
  *
236
  * @param $data_type_id
237
  * @param $data_item
238
+ *
239
+ * @return $item_data
240
  */
241
+ private function get_item_data( $data_type_id, $data_item ) {
242
 
243
  $data_type = ES_Workflow_Data_Types::get( $data_type_id );
244
 
245
  if ( ! $data_type || ! $data_type->validate( $data_item ) ) {
246
+ return array();
247
  }
248
 
249
  $storage_key = $data_type_id;
250
  $storage_value = $data_type->compress( $data_item );
251
+ $item_data = array();
252
  if ( $storage_key ) {
253
+ $item_data = array(
 
254
  $storage_key => $storage_value
255
  );
 
256
  }
257
+
258
+ return $item_data;
259
  }
260
 
261
 
lite/includes/workflows/triggers/class-es-trigger-user-deleted.php CHANGED
@@ -21,7 +21,7 @@ class ES_Trigger_User_Deleted extends ES_Workflow_Trigger {
21
  *
22
  * @var array
23
  */
24
- public $supplied_data_items = array( 'user' );
25
 
26
  /**
27
  * Load trigger admin props.
@@ -53,12 +53,22 @@ class ES_Trigger_User_Deleted extends ES_Workflow_Trigger {
53
  return;
54
  }
55
 
56
- // Prepare data.
57
- $data = array(
58
- 'user' => $user,
59
- );
60
 
61
- $this->maybe_run( $data );
 
 
 
 
 
 
 
 
 
 
 
 
 
62
  }
63
 
64
 
@@ -71,9 +81,9 @@ class ES_Trigger_User_Deleted extends ES_Workflow_Trigger {
71
  */
72
  public function validate_workflow( $workflow ) {
73
 
74
- $user = $workflow->data_layer()->get_item( 'user' );
75
 
76
- if ( ! $user ) {
77
  return false;
78
  }
79
 
21
  *
22
  * @var array
23
  */
24
+ public $supplied_data_items = array( 'subscriber' );
25
 
26
  /**
27
  * Load trigger admin props.
53
  return;
54
  }
55
 
56
+ $email = $user->user_email;
 
 
 
57
 
58
+ if ( ! empty( $email ) ) {
59
+
60
+ $subscriber = array(
61
+ 'email' => $email,
62
+ );
63
+
64
+ // Prepare data.
65
+ $data = array(
66
+ 'subscriber' => $subscriber,
67
+ );
68
+
69
+ $this->maybe_run( $data );
70
+ }
71
+
72
  }
73
 
74
 
81
  */
82
  public function validate_workflow( $workflow ) {
83
 
84
+ $subscriber = $workflow->data_layer()->get_item( 'subscriber' );
85
 
86
+ if ( ! $subscriber ) {
87
  return false;
88
  }
89
 
lite/languages/email-subscribers.pot CHANGED
@@ -2,14 +2,14 @@
2
  # This file is distributed under the same license as the Email Subscribers & Newsletters plugin.
3
  msgid ""
4
  msgstr ""
5
- "Project-Id-Version: Email Subscribers & Newsletters 4.7.1\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/email-subscribers\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
- "POT-Creation-Date: 2021-04-30T11:49:37+05:30\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: email-subscribers\n"
@@ -29,7 +29,7 @@ msgstr ""
29
 
30
  #. Author of the plugin
31
  #: lite/admin/partials/help.php:28
32
- #: lite/includes/class-email-subscribers.php:1489
33
  msgid "Icegram"
34
  msgstr ""
35
 
@@ -88,7 +88,7 @@ msgid "Please add a broadcast subject before saving."
88
  msgstr ""
89
 
90
  #: lite/admin/class-email-subscribers-admin.php:170
91
- #: pro/pro-class-email-subscribers.php:485
92
  msgid "Please add email body."
93
  msgstr ""
94
 
@@ -199,27 +199,27 @@ msgstr ""
199
  msgid "Fetching contacts from MailChimp...Please do not close this window"
200
  msgstr ""
201
 
202
- #: lite/admin/class-email-subscribers-admin.php:284
203
- #: lite/admin/partials/dashboard.php:101
204
  msgid "Dashboard"
205
  msgstr ""
206
 
207
- #: lite/admin/class-email-subscribers-admin.php:289
208
- #: lite/admin/partials/dashboard.php:108
209
  #: lite/includes/classes/class-es-contacts-table.php:219
210
  #: lite/includes/pro-features.php:153
211
  #: starter/starter-class-email-subscribers.php:624
212
  msgid "Audience"
213
  msgstr ""
214
 
215
- #: lite/admin/class-email-subscribers-admin.php:293
216
- #: lite/includes/classes/class-es-forms-table.php:453
217
  #: lite/includes/classes/class-es-lists-table.php:34
218
  #: lite/includes/classes/class-es-lists-table.php:88
219
  msgid "Lists"
220
  msgstr ""
221
 
222
- #: lite/admin/class-email-subscribers-admin.php:299
223
  #: lite/includes/classes/class-es-form-widget.php:70
224
  #: lite/includes/classes/class-es-forms-table.php:39
225
  #: lite/includes/classes/class-es-forms-table.php:40
@@ -229,7 +229,7 @@ msgstr ""
229
  msgid "Forms"
230
  msgstr ""
231
 
232
- #: lite/admin/class-email-subscribers-admin.php:305
233
  #: lite/includes/classes/class-es-campaigns-table.php:109
234
  #: lite/includes/classes/class-es-newsletters.php:245
235
  #: lite/includes/classes/class-es-newsletters.php:251
@@ -239,29 +239,29 @@ msgstr ""
239
  msgid "Campaigns"
240
  msgstr ""
241
 
242
- #: lite/admin/class-email-subscribers-admin.php:309
243
  msgid "Post Notifications"
244
  msgstr ""
245
 
246
- #: lite/admin/class-email-subscribers-admin.php:311
247
  #: lite/includes/classes/class-es-campaigns-table.php:356
248
  #: lite/includes/classes/class-es-newsletters.php:260
249
  #: lite/includes/classes/class-es-reports-table.php:149
250
  #: lite/includes/classes/class-es-templates-table.php:282
251
  #: lite/includes/pro-features.php:1072
252
- #: lite/public/class-email-subscribers-public.php:471
253
  #: pro/classes/class-es-pro-reports-data.php:142
254
  #: pro/classes/class-es-pro-reports-data.php:193
255
  msgid "Broadcast"
256
  msgstr ""
257
 
258
- #: lite/admin/class-email-subscribers-admin.php:312
259
- #: lite/includes/classes/class-es-newsletters.php:424
260
  #: lite/includes/classes/class-es-reports-table.php:472
261
  msgid "Template Preview"
262
  msgstr ""
263
 
264
- #: lite/admin/class-email-subscribers-admin.php:319
265
  #: lite/includes/pro-features.php:158
266
  #: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:222
267
  #: lite/includes/workflows/class-es-workflows-table.php:53
@@ -270,8 +270,8 @@ msgstr ""
270
  msgid "Workflows"
271
  msgstr ""
272
 
273
- #: lite/admin/class-email-subscribers-admin.php:328
274
- #: lite/admin/partials/dashboard.php:239
275
  #: lite/includes/classes/class-es-campaign-report.php:17
276
  #: lite/includes/classes/class-es-reports-table.php:17
277
  #: lite/includes/classes/class-es-reports-table.php:56
@@ -284,22 +284,22 @@ msgstr ""
284
  msgid "Reports"
285
  msgstr ""
286
 
287
- #: lite/admin/class-email-subscribers-admin.php:332
288
- #: lite/admin/partials/dashboard.php:247
289
  #: lite/includes/classes/class-es-admin-settings.php:119
290
  msgid "Settings"
291
  msgstr ""
292
 
293
- #: lite/admin/class-email-subscribers-admin.php:337
294
  msgid "Go To Icegram"
295
  msgstr ""
296
 
297
  #. translators: 1. WordPress URL 2. Email Subscribers version 3. Icegram site URL
298
- #: lite/admin/class-email-subscribers-admin.php:882
299
  msgid "<span id=\"footer-thankyou\">Thank you for creating with <a href=\"%1$s\" target=\"_blank\">WordPress</a> | Email Subscribers <b>%2$s</b>. Developed by team <a href=\"%3$s\" target=\"_blank\">Icegram</a></span>"
300
  msgstr ""
301
 
302
- #: lite/admin/class-email-subscribers-admin.php:910
303
  msgid "Something went wrong"
304
  msgstr ""
305
 
@@ -393,14 +393,14 @@ msgstr ""
393
  #: lite/admin/class-ig-es-campaign-rules.php:593
394
  #: lite/includes/classes/class-es-admin-settings.php:199
395
  #: lite/includes/classes/class-es-campaign-report.php:179
396
- #: lite/includes/classes/class-es-contacts-table.php:764
397
- #: lite/includes/classes/class-es-contacts-table.php:1026
398
  #: lite/includes/classes/class-es-export-subscribers.php:339
399
- #: lite/includes/classes/class-es-forms-table.php:387
400
  #: lite/includes/classes/class-es-import-subscribers.php:557
401
  #: lite/includes/classes/class-es-import-subscribers.php:648
402
- #: lite/includes/classes/class-es-import-subscribers.php:1030
403
- #: lite/includes/classes/class-es-import-subscribers.php:1165
404
  #: lite/includes/pro-features.php:901
405
  #: lite/includes/pro-features.php:1432
406
  #: lite/includes/workflows/actions/abstracts/class-ig-es-action-send-email-abstract.php:29
@@ -546,153 +546,153 @@ msgstr ""
546
  msgid "Unable to create %1$s and %2$s list."
547
  msgstr ""
548
 
549
- #: lite/admin/class-ig-es-onboarding.php:603
550
  #: lite/includes/workflows/db/class-es-db-workflows.php:370
551
  #: lite/includes/workflows/triggers/class-es-trigger-user-registered.php:30
552
  msgid "User Registered"
553
  msgstr ""
554
 
555
- #: lite/admin/class-ig-es-onboarding.php:718
556
  #: lite/includes/classes/class-es-forms-table.php:293
557
  msgid "Please accept terms & condition"
558
  msgstr ""
559
 
560
  #. translators: Active sidebar name.
561
- #: lite/admin/class-ig-es-onboarding.php:776
562
  msgid "Adding the form to \"%s\" sidebar, so you can show it on the site"
563
  msgstr ""
564
 
565
  #. translators: Active sidebar name.
566
- #: lite/admin/class-ig-es-onboarding.php:779
567
  msgid "Unable to add form widget to \"%s\" sidebar. Widget may already exists."
568
  msgstr ""
569
 
570
  #. translators: Active sidebar name.
571
- #: lite/admin/class-ig-es-onboarding.php:784
572
  msgid "Unable to add form widget to \"%s\" sidebar. No subscription form found."
573
  msgstr ""
574
 
575
- #: lite/admin/class-ig-es-onboarding.php:836
576
- #: lite/admin/class-ig-es-onboarding.php:837
577
  msgid "Welcome To Email Subscribers"
578
  msgstr ""
579
 
580
- #: lite/admin/class-ig-es-onboarding.php:1009
581
  msgid "Seems like your server is not setup correctly to send emails. Please confirm if you're getting any other emails from within WordPress"
582
  msgstr ""
583
 
584
- #: lite/admin/class-ig-es-onboarding.php:1135
585
  msgid "New Post Published - {{POSTTITLE}}"
586
  msgstr ""
587
 
588
- #: lite/admin/partials/dashboard.php:50
589
  msgid "Add a Subscription Form"
590
  msgstr ""
591
 
592
- #: lite/admin/partials/dashboard.php:51
593
  msgid "Grow subscribers. Add a newsletter signup form to your site."
594
  msgstr ""
595
 
596
- #: lite/admin/partials/dashboard.php:52
597
- #: lite/admin/partials/dashboard.php:117
598
  msgid "Create"
599
  msgstr ""
600
 
601
- #: lite/admin/partials/dashboard.php:58
602
  #: lite/includes/classes/class-es-contacts-table.php:138
603
  #: lite/includes/classes/class-es-import-subscribers.php:390
604
  msgid "Import Contacts"
605
  msgstr ""
606
 
607
- #: lite/admin/partials/dashboard.php:59
608
  msgid "Coming from another email marketing system? Upload a CSV file to import subscribers."
609
  msgstr ""
610
 
611
- #: lite/admin/partials/dashboard.php:60
612
  #: lite/includes/classes/class-es-import-subscribers.php:353
613
  msgid "Import"
614
  msgstr ""
615
 
616
- #: lite/admin/partials/dashboard.php:66
617
  msgid "Configure Email Sending"
618
  msgstr ""
619
 
620
- #: lite/admin/partials/dashboard.php:67
621
  msgid " Essential for high email delivery and reaching the inbox. SMTP, email service providers... set it all up."
622
  msgstr ""
623
 
624
- #: lite/admin/partials/dashboard.php:68
625
  msgid "Setup"
626
  msgstr ""
627
 
628
- #: lite/admin/partials/dashboard.php:74
629
  msgid "Send a Newsletter"
630
  msgstr ""
631
 
632
- #: lite/admin/partials/dashboard.php:75
633
  msgid "Broadcast a newsletter campaign to all or selected subscribers."
634
  msgstr ""
635
 
636
- #: lite/admin/partials/dashboard.php:76
637
  msgid "Begin"
638
  msgstr ""
639
 
640
- #: lite/admin/partials/dashboard.php:82
641
  msgid "Create an Auto-responder Sequence"
642
  msgstr ""
643
 
644
- #: lite/admin/partials/dashboard.php:83
645
  msgid "Welcome emails, drip campaigns... Send automatic emails at regular intervals to engage readers."
646
  msgstr ""
647
 
648
- #: lite/admin/partials/dashboard.php:84
649
  msgid "Start"
650
  msgstr ""
651
 
652
- #: lite/admin/partials/dashboard.php:128
653
  msgid "New Broadcast"
654
  msgstr ""
655
 
656
- #: lite/admin/partials/dashboard.php:130
657
  msgid "New Post Notification"
658
  msgstr ""
659
 
660
- #: lite/admin/partials/dashboard.php:133
661
- #: lite/admin/partials/dashboard.php:135
662
  #: pro/pro-class-sequences.php:48
663
  msgid "New Sequence"
664
  msgstr ""
665
 
666
- #: lite/admin/partials/dashboard.php:136
667
  msgid "Premium"
668
  msgstr ""
669
 
670
- #: lite/admin/partials/dashboard.php:141
671
  msgid "New Template"
672
  msgstr ""
673
 
674
- #: lite/admin/partials/dashboard.php:145
675
  msgid "New Form"
676
  msgstr ""
677
 
678
- #: lite/admin/partials/dashboard.php:146
679
  msgid "New List"
680
  msgstr ""
681
 
682
- #: lite/admin/partials/dashboard.php:147
683
  msgid "New Contact"
684
  msgstr ""
685
 
686
- #: lite/admin/partials/dashboard.php:162
687
  msgid " active contacts"
688
  msgstr ""
689
 
690
- #: lite/admin/partials/dashboard.php:170
691
  #: lite/includes/classes/class-es-contacts-table.php:325
692
  msgid "Last 60 days"
693
  msgstr ""
694
 
695
- #: lite/admin/partials/dashboard.php:178
696
  #: lite/includes/pro-features.php:1184
697
  #: lite/includes/pro-features.php:1222
698
  #: pro/classes/class-es-pro-reports-data.php:416
@@ -702,25 +702,25 @@ msgstr ""
702
  msgid "Opens"
703
  msgstr ""
704
 
705
- #: lite/admin/partials/dashboard.php:186
706
  msgid " Avg Open Rate"
707
  msgstr ""
708
 
709
- #: lite/admin/partials/dashboard.php:194
710
  msgid "Messages Sent"
711
  msgstr ""
712
 
713
- #: lite/admin/partials/dashboard.php:202
714
  #: lite/includes/pro-features.php:1120
715
  #: pro/classes/class-es-pro-reports-data.php:379
716
  msgid "Avg Click Rate"
717
  msgstr ""
718
 
719
- #: lite/admin/partials/dashboard.php:237
720
  msgid "Jump to: "
721
  msgstr ""
722
 
723
- #: lite/admin/partials/dashboard.php:243
724
  #: lite/includes/class-email-subscribers-activator.php:43
725
  #: lite/includes/class-email-subscribers-activator.php:44
726
  #: lite/includes/class-email-subscribers-activator.php:49
@@ -795,8 +795,8 @@ msgstr ""
795
  #: lite/includes/classes/class-es-campaign-report.php:180
796
  #: lite/includes/classes/class-es-campaigns-table.php:619
797
  #: lite/includes/classes/class-es-export-subscribers.php:341
798
- #: lite/includes/classes/class-es-import-subscribers.php:656
799
- #: lite/includes/classes/class-es-import-subscribers.php:1168
800
  #: lite/includes/classes/class-es-reports-table.php:230
801
  #: lite/includes/workflows/class-es-workflows-table.php:311
802
  #: pro/classes/class-es-pro-sequence-report.php:297
@@ -1075,7 +1075,7 @@ msgid "No Templates found in Trash"
1075
  msgstr ""
1076
 
1077
  #: lite/includes/class-email-subscribers-activator.php:55
1078
- #: lite/includes/class-email-subscribers.php:1486
1079
  #: lite/includes/classes/class-es-form-widget.php:11
1080
  #: lite/includes/classes/class-es-old-widget.php:13
1081
  #: lite/includes/classes/class-es-old-widget.php:15
@@ -1111,39 +1111,39 @@ msgid "OK, I Got it!"
1111
  msgstr ""
1112
 
1113
  #. translators: 1: Error message 2: File name 3: Line number
1114
- #: lite/includes/class-email-subscribers.php:1272
1115
  msgid "%1$s in %2$s on line %3$s"
1116
  msgstr ""
1117
 
1118
- #: lite/includes/class-email-subscribers.php:1499
1119
  msgid "Icegram WC"
1120
  msgstr ""
1121
 
1122
  #. translators: %1$s - constant that was used
1123
- #: lite/includes/class-email-subscribers.php:1908
1124
  msgid "Value was set using constant %1$s"
1125
  msgstr ""
1126
 
1127
  #: lite/includes/class-es-common.php:187
1128
  #: lite/includes/classes/class-es-contacts-table.php:332
1129
- #: lite/includes/classes/class-es-import-subscribers.php:819
1130
- #: lite/includes/classes/class-es-import-subscribers.php:1175
1131
- #: lite/includes/classes/class-es-lists-table.php:560
1132
  msgid "Subscribed"
1133
  msgstr ""
1134
 
1135
  #: lite/includes/class-es-common.php:188
1136
  #: lite/includes/classes/class-es-contacts-table.php:348
1137
- #: lite/includes/classes/class-es-import-subscribers.php:821
1138
- #: lite/includes/classes/class-es-import-subscribers.php:1177
1139
- #: lite/includes/classes/class-es-lists-table.php:562
1140
  msgid "Unconfirmed"
1141
  msgstr ""
1142
 
1143
  #: lite/includes/class-es-common.php:189
1144
  #: lite/includes/classes/class-es-contacts-table.php:340
1145
- #: lite/includes/classes/class-es-import-subscribers.php:1176
1146
- #: lite/includes/classes/class-es-lists-table.php:561
1147
  msgid "Unsubscribed"
1148
  msgstr ""
1149
 
@@ -1271,7 +1271,7 @@ msgstr ""
1271
 
1272
  #: lite/includes/class-es-common.php:1677
1273
  #: lite/includes/classes/class-es-campaigns-table.php:679
1274
- #: lite/includes/classes/class-es-contacts-table.php:1093
1275
  msgid "All Statuses"
1276
  msgstr ""
1277
 
@@ -1326,10 +1326,10 @@ msgstr ""
1326
  #: lite/includes/classes/class-es-admin-settings.php:190
1327
  #: lite/includes/classes/class-es-admin-settings.php:193
1328
  #: lite/includes/classes/class-es-campaigns-table.php:614
1329
- #: lite/includes/classes/class-es-contacts-table.php:1025
1330
- #: lite/includes/classes/class-es-forms-table.php:404
1331
- #: lite/includes/classes/class-es-forms-table.php:894
1332
- #: lite/includes/classes/class-es-lists-table.php:559
1333
  #: lite/public/partials/class-es-shortcode.php:152
1334
  msgid "Name"
1335
  msgstr ""
@@ -1448,7 +1448,7 @@ msgstr ""
1448
  #: lite/includes/classes/class-es-admin-settings.php:386
1449
  #: lite/includes/classes/class-es-admin-settings.php:419
1450
  #: lite/includes/classes/class-es-admin-settings.php:456
1451
- #: lite/includes/classes/class-es-newsletters.php:350
1452
  #: lite/includes/classes/class-es-reports-table.php:228
1453
  #: pro/classes/class-es-pro-sequence-report.php:295
1454
  msgid "Subject"
@@ -1459,7 +1459,7 @@ msgstr ""
1459
  #: lite/includes/classes/class-es-admin-settings.php:427
1460
  #: lite/includes/classes/class-es-admin-settings.php:467
1461
  #: lite/includes/classes/class-es-newsletters.php:266
1462
- #: pro/pro-class-sequences.php:402
1463
  msgid "Content"
1464
  msgstr ""
1465
 
@@ -1757,14 +1757,14 @@ msgstr ""
1757
  #. translators: 1: Page 2: Edit action 3: List id 4: List nonce
1758
  #: lite/includes/classes/class-es-campaigns-table.php:432
1759
  #: lite/includes/classes/class-es-campaigns-table.php:456
1760
- #: lite/includes/classes/class-es-lists-table.php:540
1761
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
1762
  msgstr ""
1763
 
1764
  #. translators: 1: Slug 2: Delete Action 3: ID 4. WP Nonce
1765
  #. translators: 1: Page 2: Delete action 3: List id 4: List nonce
1766
  #: lite/includes/classes/class-es-campaigns-table.php:481
1767
- #: lite/includes/classes/class-es-lists-table.php:542
1768
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
1769
  msgstr ""
1770
 
@@ -1775,8 +1775,8 @@ msgid "Type"
1775
  msgstr ""
1776
 
1777
  #: lite/includes/classes/class-es-campaigns-table.php:616
1778
- #: lite/includes/classes/class-es-contacts-table.php:815
1779
- #: lite/includes/classes/class-es-contacts-table.php:1027
1780
  msgid "List(s)"
1781
  msgstr ""
1782
 
@@ -1785,9 +1785,9 @@ msgid "Categories"
1785
  msgstr ""
1786
 
1787
  #: lite/includes/classes/class-es-campaigns-table.php:618
1788
- #: lite/includes/classes/class-es-contacts-table.php:1028
1789
- #: lite/includes/classes/class-es-forms-table.php:897
1790
- #: lite/includes/classes/class-es-lists-table.php:564
1791
  #: lite/includes/workflows/class-es-workflows-table.php:310
1792
  msgid "Created"
1793
  msgstr ""
@@ -1887,7 +1887,7 @@ msgstr ""
1887
 
1888
  #: lite/includes/classes/class-es-contacts-table.php:526
1889
  #: lite/includes/classes/class-es-export-subscribers.php:36
1890
- #: lite/includes/classes/class-es-lists-table.php:694
1891
  msgid "Please select list"
1892
  msgstr ""
1893
 
@@ -1904,76 +1904,76 @@ msgstr ""
1904
  msgid "Audience "
1905
  msgstr ""
1906
 
1907
- #: lite/includes/classes/class-es-contacts-table.php:711
1908
  msgid "No list found"
1909
  msgstr ""
1910
 
1911
- #: lite/includes/classes/class-es-contacts-table.php:722
1912
  msgid "First name"
1913
  msgstr ""
1914
 
1915
- #: lite/includes/classes/class-es-contacts-table.php:734
1916
  msgid "Enter first name"
1917
  msgstr ""
1918
 
1919
- #: lite/includes/classes/class-es-contacts-table.php:744
1920
  msgid "Last name"
1921
  msgstr ""
1922
 
1923
- #: lite/includes/classes/class-es-contacts-table.php:755
1924
  msgid "Enter last name"
1925
  msgstr ""
1926
 
1927
- #: lite/includes/classes/class-es-contacts-table.php:776
1928
  #: lite/includes/pro-features.php:907
1929
  #: pro/pro-class-email-subscribers.php:822
1930
  msgid "Enter email"
1931
  msgstr ""
1932
 
1933
- #: lite/includes/classes/class-es-contacts-table.php:786
1934
  msgid "Send welcome email?"
1935
  msgstr ""
1936
 
1937
- #: lite/includes/classes/class-es-contacts-table.php:832
1938
  msgid "Save Contact"
1939
  msgstr ""
1940
 
1941
- #: lite/includes/classes/class-es-contacts-table.php:832
1942
- #: lite/includes/classes/class-es-forms-table.php:554
1943
- #: lite/includes/classes/class-es-lists-table.php:321
1944
  #: lite/includes/classes/class-es-post-notifications.php:429
1945
  msgid "Save Changes"
1946
  msgstr ""
1947
 
1948
- #: lite/includes/classes/class-es-contacts-table.php:839
1949
- #: lite/includes/classes/class-es-forms-table.php:558
1950
- #: lite/includes/classes/class-es-lists-table.php:325
1951
  #: lite/includes/classes/class-es-post-notifications.php:432
1952
  msgid "Cancel"
1953
  msgstr ""
1954
 
1955
- #: lite/includes/classes/class-es-contacts-table.php:855
1956
  msgid "No contacts avaliable."
1957
  msgstr ""
1958
 
1959
  #. translators: 1: Page 2: Edit action 3: Contact id 4: Wp nonce
1960
- #: lite/includes/classes/class-es-contacts-table.php:1005
1961
  msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
1962
  msgstr ""
1963
 
1964
  #. translators: 1: Page 2: Delete action 3: Contact id 4: Wp nonce
1965
- #: lite/includes/classes/class-es-contacts-table.php:1007
1966
  msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
1967
  msgstr ""
1968
 
1969
  #. translators: 1: Page 2: Resend action 3: Contact id 4: Wp nonce
1970
- #: lite/includes/classes/class-es-contacts-table.php:1010
1971
  msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Resend Confirmation<a>"
1972
  msgstr ""
1973
 
1974
- #: lite/includes/classes/class-es-contacts-table.php:1061
1975
- #: lite/includes/classes/class-es-forms-table.php:925
1976
- #: lite/includes/classes/class-es-lists-table.php:593
1977
  #: lite/includes/classes/class-es-reports-table.php:211
1978
  #: lite/includes/classes/class-es-reports-table.php:296
1979
  #: lite/includes/workflows/admin/views/action.php:29
@@ -1983,60 +1983,60 @@ msgstr ""
1983
  msgid "Delete"
1984
  msgstr ""
1985
 
1986
- #: lite/includes/classes/class-es-contacts-table.php:1062
1987
  #: pro/workflows/actions/class-es-action-move-to-list.php:29
1988
  msgid "Move to list"
1989
  msgstr ""
1990
 
1991
- #: lite/includes/classes/class-es-contacts-table.php:1063
1992
  #: lite/includes/workflows/actions/class-es-action-add-to-list.php:29
1993
  msgid "Add to list"
1994
  msgstr ""
1995
 
1996
- #: lite/includes/classes/class-es-contacts-table.php:1064
1997
  msgid "Change status"
1998
  msgstr ""
1999
 
2000
- #: lite/includes/classes/class-es-contacts-table.php:1085
2001
  msgid "Search Contacts"
2002
  msgstr ""
2003
 
2004
- #: lite/includes/classes/class-es-contacts-table.php:1102
2005
  msgid "All Lists"
2006
  msgstr ""
2007
 
2008
- #: lite/includes/classes/class-es-contacts-table.php:1215
2009
- #: lite/includes/classes/class-es-contacts-table.php:1278
2010
  msgid "Contact(s) deleted successfully!"
2011
  msgstr ""
2012
 
2013
- #: lite/includes/classes/class-es-contacts-table.php:1240
2014
  msgid "Confirmation email sent successfully!"
2015
  msgstr ""
2016
 
2017
- #: lite/includes/classes/class-es-contacts-table.php:1266
2018
  msgid "Please select subscribers to update."
2019
  msgstr ""
2020
 
2021
- #: lite/includes/classes/class-es-contacts-table.php:1289
2022
  msgid "Please select status."
2023
  msgstr ""
2024
 
2025
- #: lite/includes/classes/class-es-contacts-table.php:1299
2026
  msgid "Contact(s) status changed successfully!"
2027
  msgstr ""
2028
 
2029
- #: lite/includes/classes/class-es-contacts-table.php:1310
2030
- #: lite/includes/classes/class-es-contacts-table.php:1331
2031
  #: lite/includes/classes/class-es-post-notifications.php:51
2032
  msgid "Please select list."
2033
  msgstr ""
2034
 
2035
- #: lite/includes/classes/class-es-contacts-table.php:1319
2036
  msgid "Contact(s) moved to list successfully!"
2037
  msgstr ""
2038
 
2039
- #: lite/includes/classes/class-es-contacts-table.php:1340
2040
  msgid "Contact(s) added to list successfully!"
2041
  msgstr ""
2042
 
@@ -2119,12 +2119,12 @@ msgid "No."
2119
  msgstr ""
2120
 
2121
  #: lite/includes/classes/class-es-export-subscribers.php:83
2122
- #: lite/includes/classes/class-es-lists-table.php:565
2123
  msgid "Export"
2124
  msgstr ""
2125
 
2126
  #: lite/includes/classes/class-es-export-subscribers.php:97
2127
- #: lite/includes/classes/class-es-lists-table.php:563
2128
  msgid "All contacts"
2129
  msgstr ""
2130
 
@@ -2147,16 +2147,16 @@ msgstr ""
2147
  #: lite/includes/classes/class-es-export-subscribers.php:337
2148
  #: lite/includes/classes/class-es-import-subscribers.php:558
2149
  #: lite/includes/classes/class-es-import-subscribers.php:649
2150
- #: lite/includes/classes/class-es-import-subscribers.php:1022
2151
- #: lite/includes/classes/class-es-import-subscribers.php:1166
2152
  msgid "First Name"
2153
  msgstr ""
2154
 
2155
  #: lite/includes/classes/class-es-export-subscribers.php:338
2156
  #: lite/includes/classes/class-es-import-subscribers.php:559
2157
  #: lite/includes/classes/class-es-import-subscribers.php:650
2158
- #: lite/includes/classes/class-es-import-subscribers.php:1027
2159
- #: lite/includes/classes/class-es-import-subscribers.php:1167
2160
  msgid "Last Name"
2161
  msgstr ""
2162
 
@@ -2221,149 +2221,151 @@ msgstr ""
2221
  msgid "Forms "
2222
  msgstr ""
2223
 
2224
- #: lite/includes/classes/class-es-forms-table.php:319
2225
  msgid " New Form"
2226
  msgstr ""
2227
 
2228
- #: lite/includes/classes/class-es-forms-table.php:321
2229
  msgid " Edit Form"
2230
  msgstr ""
2231
 
2232
- #: lite/includes/classes/class-es-forms-table.php:335
2233
- msgid "How to create form?"
 
 
2234
  msgstr ""
2235
 
2236
- #: lite/includes/classes/class-es-forms-table.php:345
2237
  msgid "Form name"
2238
  msgstr ""
2239
 
2240
- #: lite/includes/classes/class-es-forms-table.php:351
2241
  msgid "Enter form name"
2242
  msgstr ""
2243
 
2244
- #: lite/includes/classes/class-es-forms-table.php:359
2245
  msgid "Description"
2246
  msgstr ""
2247
 
2248
- #: lite/includes/classes/class-es-forms-table.php:365
2249
  msgid "Enter description"
2250
  msgstr ""
2251
 
2252
- #: lite/includes/classes/class-es-forms-table.php:373
2253
  msgid "Form fields"
2254
  msgstr ""
2255
 
2256
- #: lite/includes/classes/class-es-forms-table.php:380
2257
  msgid "Field"
2258
  msgstr ""
2259
 
2260
- #: lite/includes/classes/class-es-forms-table.php:381
2261
  msgid "Show?"
2262
  msgstr ""
2263
 
2264
- #: lite/includes/classes/class-es-forms-table.php:382
2265
  msgid "Required?"
2266
  msgstr ""
2267
 
2268
- #: lite/includes/classes/class-es-forms-table.php:383
2269
  msgid "Label"
2270
  msgstr ""
2271
 
2272
- #: lite/includes/classes/class-es-forms-table.php:384
2273
  msgid "Placeholder"
2274
  msgstr ""
2275
 
2276
- #: lite/includes/classes/class-es-forms-table.php:440
2277
  msgid "Button"
2278
  msgstr ""
2279
 
2280
- #: lite/includes/classes/class-es-forms-table.php:454
2281
  msgid "Contacts will be added into selected list(s)"
2282
  msgstr ""
2283
 
2284
  #. translators: %s: Create list page url
2285
- #: lite/includes/classes/class-es-forms-table.php:471
2286
  msgid "List not found. Please %s"
2287
  msgstr ""
2288
 
2289
  #. translators: %s: Create list page url
2290
- #: lite/includes/classes/class-es-forms-table.php:471
2291
  msgid "create your first list"
2292
  msgstr ""
2293
 
2294
- #: lite/includes/classes/class-es-forms-table.php:482
2295
  msgid "Allow contact to choose list(s)"
2296
  msgstr ""
2297
 
2298
- #: lite/includes/classes/class-es-forms-table.php:483
2299
  msgid "Allow contacts to choose list(s) in which they want to subscribe."
2300
  msgstr ""
2301
 
2302
- #: lite/includes/classes/class-es-forms-table.php:516
2303
  msgid "Show GDPR consent checkbox"
2304
  msgstr ""
2305
 
2306
- #: lite/includes/classes/class-es-forms-table.php:517
2307
  msgid "Show consent checkbox to get the consent of a contact before adding them to list(s)"
2308
  msgstr ""
2309
 
2310
- #: lite/includes/classes/class-es-forms-table.php:544
2311
  msgid "Consent text will show up at subscription form next to consent checkbox."
2312
  msgstr ""
2313
 
2314
- #: lite/includes/classes/class-es-forms-table.php:554
2315
  msgid "Save Form"
2316
  msgstr ""
2317
 
2318
  #. translators: 1: Page 2: Edit Action 3: Form id 4. WP Nonce
2319
- #: lite/includes/classes/class-es-forms-table.php:877
2320
  msgid "<a href=\"?page=%1$s&action=%2$s&form=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
2321
  msgstr ""
2322
 
2323
  #. translators: 1: Page 2: Delete Action 3: Form id 4. WP Nonce
2324
- #: lite/includes/classes/class-es-forms-table.php:879
2325
  msgid "<a href=\"?page=%1$s&action=%2$s&form=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
2326
  msgstr ""
2327
 
2328
- #: lite/includes/classes/class-es-forms-table.php:895
2329
  msgid "Shortcode"
2330
  msgstr ""
2331
 
2332
- #: lite/includes/classes/class-es-forms-table.php:896
2333
  msgid "Subscribers"
2334
  msgstr ""
2335
 
2336
- #: lite/includes/classes/class-es-forms-table.php:937
2337
  msgid "You do not have permission to delete this form."
2338
  msgstr ""
2339
 
2340
- #: lite/includes/classes/class-es-forms-table.php:944
2341
  msgid "Form deleted successfully!"
2342
  msgstr ""
2343
 
2344
- #: lite/includes/classes/class-es-forms-table.php:959
2345
  msgid "Form(s) deleted successfully!"
2346
  msgstr ""
2347
 
2348
- #: lite/includes/classes/class-es-forms-table.php:962
2349
  msgid "Please select form(s) to delete."
2350
  msgstr ""
2351
 
2352
- #: lite/includes/classes/class-es-forms-table.php:973
2353
- #: lite/includes/classes/class-es-lists-table.php:705
2354
  msgid "Enable"
2355
  msgstr ""
2356
 
2357
- #: lite/includes/classes/class-es-forms-table.php:974
2358
- #: lite/includes/classes/class-es-lists-table.php:706
2359
  msgid "Disable"
2360
  msgstr ""
2361
 
2362
- #: lite/includes/classes/class-es-forms-table.php:990
2363
  msgid "Search Forms"
2364
  msgstr ""
2365
 
2366
- #: lite/includes/classes/class-es-forms-table.php:1001
2367
  msgid "No Forms avaliable."
2368
  msgstr ""
2369
 
@@ -2590,59 +2592,63 @@ msgstr ""
2590
  msgid "(Last Name) (First Name)"
2591
  msgstr ""
2592
 
2593
- #: lite/includes/classes/class-es-import-subscribers.php:655
2594
- #: lite/includes/classes/class-es-import-subscribers.php:1169
 
 
 
 
2595
  msgid "List Name"
2596
  msgstr ""
2597
 
2598
- #: lite/includes/classes/class-es-import-subscribers.php:664
2599
  msgid "Select columns for mapping"
2600
  msgstr ""
2601
 
2602
- #: lite/includes/classes/class-es-import-subscribers.php:667
2603
  msgid "Define which column represents which field"
2604
  msgstr ""
2605
 
2606
- #: lite/includes/classes/class-es-import-subscribers.php:684
2607
  msgid "Ignore column"
2608
  msgstr ""
2609
 
2610
  #. translators: %s: Hidden contacts count
2611
- #: lite/includes/classes/class-es-import-subscribers.php:723
2612
  msgid "%s contacts are hidden"
2613
  msgstr ""
2614
 
2615
- #: lite/includes/classes/class-es-import-subscribers.php:790
2616
  msgid "Email address is invalid."
2617
  msgstr ""
2618
 
2619
- #: lite/includes/classes/class-es-import-subscribers.php:791
2620
  msgid "Email address is empty."
2621
  msgstr ""
2622
 
2623
- #: lite/includes/classes/class-es-import-subscribers.php:792
2624
  msgid "Duplicate email in the CSV file. Only the first record imported."
2625
  msgstr ""
2626
 
2627
- #: lite/includes/classes/class-es-import-subscribers.php:820
2628
  msgid "Unubscribed"
2629
  msgstr ""
2630
 
2631
- #: lite/includes/classes/class-es-import-subscribers.php:822
2632
- #: lite/includes/classes/class-es-import-subscribers.php:1178
2633
  msgid "Hard Bounced"
2634
  msgstr ""
2635
 
2636
  #. translators: 1. Total imported contacts 2. Total contacts
2637
- #: lite/includes/classes/class-es-import-subscribers.php:1012
2638
  msgid "%1$s of %2$s contacts imported"
2639
  msgstr ""
2640
 
2641
- #: lite/includes/classes/class-es-import-subscribers.php:1016
2642
  msgid "The following contacts were skipped"
2643
  msgstr ""
2644
 
2645
- #: lite/includes/classes/class-es-import-subscribers.php:1031
2646
  msgid "Reason"
2647
  msgstr ""
2648
 
@@ -2659,7 +2665,7 @@ msgid "Number of lists per page"
2659
  msgstr ""
2660
 
2661
  #: lite/includes/classes/class-es-lists-table.php:138
2662
- #: lite/includes/classes/class-es-lists-table.php:654
2663
  msgid "You do not have permission to edit list"
2664
  msgstr ""
2665
 
@@ -2676,7 +2682,7 @@ msgid "List added successfully!"
2676
  msgstr ""
2677
 
2678
  #: lite/includes/classes/class-es-lists-table.php:234
2679
- #: lite/includes/classes/class-es-lists-table.php:658
2680
  msgid "List updated successfully!"
2681
  msgstr ""
2682
 
@@ -2700,7 +2706,7 @@ msgstr ""
2700
  msgid "Enter list name"
2701
  msgstr ""
2702
 
2703
- #: lite/includes/classes/class-es-lists-table.php:321
2704
  msgid "Save List"
2705
  msgstr ""
2706
 
@@ -2708,30 +2714,38 @@ msgstr ""
2708
  #. translators: 1: Unsubscribed-Filter url 2: Count
2709
  #. translators: 1: Unconfirmed-Filter url 2: Count
2710
  #. translators: 1: All contacts flters 2: Count
2711
- #: lite/includes/classes/class-es-lists-table.php:456
2712
- #: lite/includes/classes/class-es-lists-table.php:467
2713
- #: lite/includes/classes/class-es-lists-table.php:478
2714
- #: lite/includes/classes/class-es-lists-table.php:489
2715
  msgid "<a href=\"%1$s\" target=\"_blank\">%2$d</a>"
2716
  msgstr ""
2717
 
2718
- #: lite/includes/classes/class-es-lists-table.php:614
 
 
 
 
 
 
 
 
2719
  msgid "Search lists"
2720
  msgstr ""
2721
 
2722
- #: lite/includes/classes/class-es-lists-table.php:669
2723
  msgid "You do not have permission to delete list"
2724
  msgstr ""
2725
 
2726
- #: lite/includes/classes/class-es-lists-table.php:676
2727
  msgid "List deleted successfully!"
2728
  msgstr ""
2729
 
2730
- #: lite/includes/classes/class-es-lists-table.php:691
2731
  msgid "List(s) deleted successfully!"
2732
  msgstr ""
2733
 
2734
- #: lite/includes/classes/class-es-lists-table.php:718
2735
  msgid "No lists avaliable."
2736
  msgstr ""
2737
 
@@ -2757,6 +2771,11 @@ msgstr ""
2757
  msgid "If you find this plugin useful, please consider giving us %1$s5 stars review%2$s on WordPress!"
2758
  msgstr ""
2759
 
 
 
 
 
 
2760
  #: lite/includes/classes/class-es-newsletters.php:94
2761
  msgid "Sorry, you are not allowed to add/edit broadcast."
2762
  msgstr ""
@@ -2803,69 +2822,65 @@ msgstr ""
2803
  msgid "Send"
2804
  msgstr ""
2805
 
2806
- #: lite/includes/classes/class-es-newsletters.php:342
2807
- msgid "How to create Broadcast?"
2808
- msgstr ""
2809
-
2810
- #: lite/includes/classes/class-es-newsletters.php:354
2811
  msgid "From Name"
2812
  msgstr ""
2813
 
2814
- #: lite/includes/classes/class-es-newsletters.php:358
2815
  msgid "From Email"
2816
  msgstr ""
2817
 
2818
- #: lite/includes/classes/class-es-newsletters.php:362
2819
  msgid "Reply To"
2820
  msgstr ""
2821
 
2822
- #: lite/includes/classes/class-es-newsletters.php:367
2823
  msgid "Message"
2824
  msgstr ""
2825
 
2826
- #: lite/includes/classes/class-es-newsletters.php:385
2827
  msgid "Design template"
2828
  msgstr ""
2829
 
2830
- #: lite/includes/classes/class-es-newsletters.php:401
2831
  msgid "Total recipients:"
2832
  msgstr ""
2833
 
2834
- #: lite/includes/classes/class-es-newsletters.php:411
2835
- #: lite/includes/classes/class-es-newsletters.php:439
2836
  #: lite/includes/classes/class-es-reports-table.php:212
2837
  #: pro/classes/class-es-pro-sequence-report.php:269
2838
  msgid "Preview"
2839
  msgstr ""
2840
 
2841
- #: lite/includes/classes/class-es-newsletters.php:414
2842
  msgid "Browser"
2843
  msgstr ""
2844
 
2845
- #: lite/includes/classes/class-es-newsletters.php:425
2846
  #: lite/includes/classes/class-es-reports-table.php:473
2847
  msgid "There could be a slight variation on how your customer will view the email content."
2848
  msgstr ""
2849
 
2850
- #: lite/includes/classes/class-es-newsletters.php:429
2851
  #: lite/includes/classes/class-es-reports-table.php:477
2852
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:236
2853
  msgid "Close"
2854
  msgstr ""
2855
 
2856
- #: lite/includes/classes/class-es-newsletters.php:442
2857
  msgid "Email sent successfully "
2858
  msgstr ""
2859
 
2860
- #: lite/includes/classes/class-es-newsletters.php:443
2861
  msgid "Something went wrong. Please try again later"
2862
  msgstr ""
2863
 
2864
- #: lite/includes/classes/class-es-newsletters.php:460
2865
  msgid "Email Content Preview"
2866
  msgstr ""
2867
 
2868
- #: lite/includes/classes/class-es-newsletters.php:500
2869
  msgid "Open tracking"
2870
  msgstr ""
2871
 
@@ -2933,7 +2948,7 @@ msgid " Edit Post Notification"
2933
  msgstr ""
2934
 
2935
  #: lite/includes/classes/class-es-post-notifications.php:294
2936
- #: pro/pro-class-sequences.php:81
2937
  msgid "Campaigns "
2938
  msgstr ""
2939
 
@@ -2989,7 +3004,7 @@ msgid "No Reports avaliable."
2989
  msgstr ""
2990
 
2991
  #: lite/includes/classes/class-es-reports-table.php:145
2992
- #: lite/public/class-email-subscribers-public.php:474
2993
  #: pro/classes/class-es-pro-reports-data.php:144
2994
  #: pro/classes/class-es-pro-reports-data.php:189
2995
  msgid "Post Notification"
@@ -4268,7 +4283,7 @@ msgid "WP Editor"
4268
  msgstr ""
4269
 
4270
  #. translators: %s: Table name
4271
- #: lite/includes/workflows/queue/class-es-workflow-queue.php:468
4272
  #: pro/classes/abandoned-cart/class-ig-es-cart.php:784
4273
  #: pro/classes/abandoned-cart/class-ig-es-guest.php:411
4274
  msgid "Could not insert into '%1$s' table. '%1$s' may not be present in the database."
@@ -4305,32 +4320,32 @@ msgstr ""
4305
  msgid "Sorry, you are not allowed to access this page."
4306
  msgstr ""
4307
 
4308
- #: lite/public/class-email-subscribers-public.php:249
4309
  msgid "You are already subscribed!"
4310
  msgstr ""
4311
 
4312
- #: lite/public/class-email-subscribers-public.php:251
4313
  msgid "You are already unsubscribed!"
4314
  msgstr ""
4315
 
4316
- #: lite/public/class-email-subscribers-public.php:256
4317
  msgid "Sorry, we couldn't find you. Please contact admin."
4318
  msgstr ""
4319
 
4320
- #: lite/public/class-email-subscribers-public.php:435
4321
  #: starter/starter-class-email-subscribers.php:882
4322
  msgid "is subscribed to our mailing list(s)."
4323
  msgstr ""
4324
 
4325
- #: lite/public/class-email-subscribers-public.php:443
4326
  msgid "Unsubscribe from all list(s)"
4327
  msgstr ""
4328
 
4329
- #: lite/public/class-email-subscribers-public.php:444
4330
  msgid "You will be unsubscribed from receiving all future emails sent from us."
4331
  msgstr ""
4332
 
4333
- #: lite/public/class-email-subscribers-public.php:450
4334
  #: starter/starter-class-email-subscribers.php:906
4335
  msgid "Unsubscribe"
4336
  msgstr ""
@@ -4502,117 +4517,122 @@ msgstr ""
4502
  msgid "Please share the reason"
4503
  msgstr ""
4504
 
4505
- #: pro/mailers/class-es-amazon-ses-mailer.php:65
 
4506
  msgid "Access Key ID is empty."
4507
  msgstr ""
4508
 
4509
- #: pro/mailers/class-es-amazon-ses-mailer.php:75
 
4510
  msgid "Secret Access Key is empty."
4511
  msgstr ""
4512
 
4513
- #: pro/mailers/class-es-amazon-ses-mailer.php:85
 
4514
  msgid "Closest region is not set."
4515
  msgstr ""
4516
 
4517
- #: pro/mailers/class-es-amazon-ses-mailer.php:138
4518
  msgid "US East (N. Virginia)"
4519
  msgstr ""
4520
 
4521
- #: pro/mailers/class-es-amazon-ses-mailer.php:139
4522
  msgid "US East (Ohio)"
4523
  msgstr ""
4524
 
4525
- #: pro/mailers/class-es-amazon-ses-mailer.php:140
4526
  msgid "US West (Oregon)"
4527
  msgstr ""
4528
 
4529
- #: pro/mailers/class-es-amazon-ses-mailer.php:141
4530
  msgid "US AWS GovCloud"
4531
  msgstr ""
4532
 
4533
- #: pro/mailers/class-es-amazon-ses-mailer.php:142
4534
  msgid "EU (Ireland)"
4535
  msgstr ""
4536
 
4537
- #: pro/mailers/class-es-amazon-ses-mailer.php:143
4538
  msgid "EU (London)"
4539
  msgstr ""
4540
 
4541
- #: pro/mailers/class-es-amazon-ses-mailer.php:144
4542
  msgid "EU (Frankfurt)"
4543
  msgstr ""
4544
 
4545
- #: pro/mailers/class-es-amazon-ses-mailer.php:145
4546
  msgid "Asia Pacific (Mumbai)"
4547
  msgstr ""
4548
 
4549
- #: pro/mailers/class-es-amazon-ses-mailer.php:146
4550
  msgid "Asia Pacific (Tokyo)"
4551
  msgstr ""
4552
 
4553
- #: pro/mailers/class-es-amazon-ses-mailer.php:147
4554
  msgid "Asia Pacific (Seoul)"
4555
  msgstr ""
4556
 
4557
- #: pro/mailers/class-es-amazon-ses-mailer.php:148
4558
  msgid "Asia Pacific (Singapore)"
4559
  msgstr ""
4560
 
4561
- #: pro/mailers/class-es-amazon-ses-mailer.php:149
4562
  msgid "Asia Pacific (Sydney)"
4563
  msgstr ""
4564
 
4565
- #: pro/mailers/class-es-amazon-ses-mailer.php:150
4566
  msgid "Canada (Central)"
4567
  msgstr ""
4568
 
4569
- #: pro/mailers/class-es-amazon-ses-mailer.php:151
4570
  msgid "South America (São Paulo)"
4571
  msgstr ""
4572
 
4573
- #: pro/mailers/class-es-mailgun-mailer.php:157
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4574
  msgid "Private API key is empty."
4575
  msgstr ""
4576
 
4577
- #: pro/mailers/class-es-mailgun-mailer.php:167
4578
  msgid "Domain name is empty"
4579
  msgstr ""
4580
 
4581
- #: pro/mailers/class-es-mailgun-mailer.php:177
4582
  #: pro/mailers/class-es-sparkpost-mailer.php:84
4583
  msgid "Region is empty"
4584
  msgstr ""
4585
 
4586
- #: pro/mailers/class-es-mailgun-mailer.php:635
4587
- #: pro/mailers/class-es-postmark-mailer.php:274
4588
- #: pro/mailers/class-es-sendgrid-mailer.php:133
 
4589
  #: pro/mailers/class-es-sparkpost-mailer.php:137
4590
  msgid "An unknown error has occured. Please try again later."
4591
  msgstr ""
4592
 
4593
- #: pro/mailers/class-es-postmark-mailer.php:116
4594
  msgid "API token is empty."
4595
  msgstr ""
4596
 
4597
- #: pro/mailers/class-es-sendgrid-mailer.php:82
 
4598
  #: pro/mailers/class-es-sparkpost-mailer.php:74
4599
  msgid "API key is empty."
4600
  msgstr ""
4601
 
4602
- #: pro/mailers/php-aws-ses/SimpleEmailService.php:623
4603
- msgid "Encountered an error, but no description given"
4604
- msgstr ""
4605
-
4606
- #. translators: 1. Error type 2. Error code 3. Error message 4. Request Id
4607
- #: pro/mailers/php-aws-ses/SimpleEmailService.php:629
4608
- msgid "%1$s - %2$s <br/>%3$s <br/>Request Id: %4$s"
4609
- msgstr ""
4610
-
4611
- #. translators: %s: Error message.
4612
- #: pro/mailers/php-aws-ses/SimpleEmailService.php:633
4613
- msgid "Encountered an error: %s"
4614
- msgstr ""
4615
-
4616
  #: pro/partials/es-dashboard.php:52
4617
  msgid "Sent on"
4618
  msgstr ""
@@ -4633,25 +4653,25 @@ msgstr ""
4633
  msgid "Your cart could not be restored, it may have expired."
4634
  msgstr ""
4635
 
4636
- #: pro/pro-class-email-subscribers.php:366
4637
  #: pro/pro-class-post-digest.php:25
4638
  msgid "Sequence"
4639
  msgstr ""
4640
 
4641
- #: pro/pro-class-email-subscribers.php:484
4642
  msgid "Please enter an email address."
4643
  msgstr ""
4644
 
4645
- #: pro/pro-class-email-subscribers.php:486
4646
  msgid "Add Attachment"
4647
  msgstr ""
4648
 
4649
  #. translators: %s: Attachmen max file size.
4650
- #: pro/pro-class-email-subscribers.php:488
4651
  msgid "Please attach a file having size lower than %s."
4652
  msgstr ""
4653
 
4654
- #: pro/pro-class-email-subscribers.php:489
4655
  msgid "Are you sure you want to delete this?"
4656
  msgstr ""
4657
 
@@ -4772,23 +4792,23 @@ msgstr ""
4772
  msgid "Proceed"
4773
  msgstr ""
4774
 
4775
- #: pro/pro-class-email-subscribers.php:1843
4776
  msgid "How to configure Mailgun to send emails in the Email Subscribers plugin?"
4777
  msgstr ""
4778
 
4779
- #: pro/pro-class-email-subscribers.php:1871
4780
  msgid "How to configure SendGrid to send emails in the Email Subscribers plugin?"
4781
  msgstr ""
4782
 
4783
- #: pro/pro-class-email-subscribers.php:1900
4784
  msgid "How to configure Sparkpost to send emails in the Email Subscribers plugin?"
4785
  msgstr ""
4786
 
4787
- #: pro/pro-class-email-subscribers.php:1927
4788
  msgid "How to configure Amazon SES to send emails in the Email Subscribers plugin?"
4789
  msgstr ""
4790
 
4791
- #: pro/pro-class-email-subscribers.php:1954
4792
  msgid "How to configure Postmark to send emails in the Email Subscribers plugin?"
4793
  msgstr ""
4794
 
@@ -4872,73 +4892,69 @@ msgstr ""
4872
  msgid "Edit Sequence"
4873
  msgstr ""
4874
 
4875
- #: pro/pro-class-sequences.php:91
4876
- msgid "How to create Email Sequence?"
4877
- msgstr ""
4878
-
4879
- #: pro/pro-class-sequences.php:104
4880
  msgid "Add Sequence name"
4881
  msgstr ""
4882
 
4883
- #: pro/pro-class-sequences.php:105
4884
- #: pro/pro-class-sequences.php:331
4885
  msgid "Save All"
4886
  msgstr ""
4887
 
4888
- #: pro/pro-class-sequences.php:126
4889
  msgid "+ Add Email"
4890
  msgstr ""
4891
 
4892
- #: pro/pro-class-sequences.php:166
4893
- #: pro/pro-class-sequences.php:238
4894
  msgid "Sequence should have atleast one email"
4895
  msgstr ""
4896
 
4897
- #: pro/pro-class-sequences.php:210
4898
  msgid "Sequence added successfully!"
4899
  msgstr ""
4900
 
4901
- #: pro/pro-class-sequences.php:214
4902
  msgid "Sorry, you are not allowed to add sequence."
4903
  msgstr ""
4904
 
4905
- #: pro/pro-class-sequences.php:313
4906
  msgid "Sequence updated successfully!"
4907
  msgstr ""
4908
 
4909
- #: pro/pro-class-sequences.php:317
4910
  msgid "Sorry, you are not allowed to edit sequence."
4911
  msgstr ""
4912
 
4913
- #: pro/pro-class-sequences.php:355
4914
- #: pro/pro-class-sequences.php:440
4915
  msgid " day"
4916
  msgstr ""
4917
 
4918
- #: pro/pro-class-sequences.php:355
4919
- #: pro/pro-class-sequences.php:440
4920
  msgid " days"
4921
  msgstr ""
4922
 
4923
- #: pro/pro-class-sequences.php:360
4924
- #: pro/pro-class-sequences.php:398
4925
  msgid "Welcome"
4926
  msgstr ""
4927
 
4928
- #: pro/pro-class-sequences.php:363
4929
  #: pro/pro-class-sequences.php:366
 
4930
  msgid "Delete this email"
4931
  msgstr ""
4932
 
4933
- #: pro/pro-class-sequences.php:396
4934
  msgid "Email Subject"
4935
  msgstr ""
4936
 
4937
- #: pro/pro-class-sequences.php:445
4938
  msgid "When to send"
4939
  msgstr ""
4940
 
4941
- #: pro/pro-class-sequences.php:451
4942
  msgid " after subscription"
4943
  msgstr ""
4944
 
2
  # This file is distributed under the same license as the Email Subscribers & Newsletters plugin.
3
  msgid ""
4
  msgstr ""
5
+ "Project-Id-Version: Email Subscribers & Newsletters 4.7.2\n"
6
  "Report-Msgid-Bugs-To: https://wordpress.org/support/plugin/email-subscribers\n"
7
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
8
  "Language-Team: LANGUAGE <LL@li.org>\n"
9
  "MIME-Version: 1.0\n"
10
  "Content-Type: text/plain; charset=UTF-8\n"
11
  "Content-Transfer-Encoding: 8bit\n"
12
+ "POT-Creation-Date: 2021-05-12T06:15:19+00:00\n"
13
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
14
  "X-Generator: WP-CLI 2.4.0\n"
15
  "X-Domain: email-subscribers\n"
29
 
30
  #. Author of the plugin
31
  #: lite/admin/partials/help.php:28
32
+ #: lite/includes/class-email-subscribers.php:1490
33
  msgid "Icegram"
34
  msgstr ""
35
 
88
  msgstr ""
89
 
90
  #: lite/admin/class-email-subscribers-admin.php:170
91
+ #: pro/pro-class-email-subscribers.php:487
92
  msgid "Please add email body."
93
  msgstr ""
94
 
199
  msgid "Fetching contacts from MailChimp...Please do not close this window"
200
  msgstr ""
201
 
202
+ #: lite/admin/class-email-subscribers-admin.php:286
203
+ #: lite/admin/partials/dashboard.php:100
204
  msgid "Dashboard"
205
  msgstr ""
206
 
207
+ #: lite/admin/class-email-subscribers-admin.php:291
208
+ #: lite/admin/partials/dashboard.php:107
209
  #: lite/includes/classes/class-es-contacts-table.php:219
210
  #: lite/includes/pro-features.php:153
211
  #: starter/starter-class-email-subscribers.php:624
212
  msgid "Audience"
213
  msgstr ""
214
 
215
+ #: lite/admin/class-email-subscribers-admin.php:295
216
+ #: lite/includes/classes/class-es-forms-table.php:459
217
  #: lite/includes/classes/class-es-lists-table.php:34
218
  #: lite/includes/classes/class-es-lists-table.php:88
219
  msgid "Lists"
220
  msgstr ""
221
 
222
+ #: lite/admin/class-email-subscribers-admin.php:301
223
  #: lite/includes/classes/class-es-form-widget.php:70
224
  #: lite/includes/classes/class-es-forms-table.php:39
225
  #: lite/includes/classes/class-es-forms-table.php:40
229
  msgid "Forms"
230
  msgstr ""
231
 
232
+ #: lite/admin/class-email-subscribers-admin.php:307
233
  #: lite/includes/classes/class-es-campaigns-table.php:109
234
  #: lite/includes/classes/class-es-newsletters.php:245
235
  #: lite/includes/classes/class-es-newsletters.php:251
239
  msgid "Campaigns"
240
  msgstr ""
241
 
242
+ #: lite/admin/class-email-subscribers-admin.php:311
243
  msgid "Post Notifications"
244
  msgstr ""
245
 
246
+ #: lite/admin/class-email-subscribers-admin.php:313
247
  #: lite/includes/classes/class-es-campaigns-table.php:356
248
  #: lite/includes/classes/class-es-newsletters.php:260
249
  #: lite/includes/classes/class-es-reports-table.php:149
250
  #: lite/includes/classes/class-es-templates-table.php:282
251
  #: lite/includes/pro-features.php:1072
252
+ #: lite/public/class-email-subscribers-public.php:472
253
  #: pro/classes/class-es-pro-reports-data.php:142
254
  #: pro/classes/class-es-pro-reports-data.php:193
255
  msgid "Broadcast"
256
  msgstr ""
257
 
258
+ #: lite/admin/class-email-subscribers-admin.php:314
259
+ #: lite/includes/classes/class-es-newsletters.php:427
260
  #: lite/includes/classes/class-es-reports-table.php:472
261
  msgid "Template Preview"
262
  msgstr ""
263
 
264
+ #: lite/admin/class-email-subscribers-admin.php:321
265
  #: lite/includes/pro-features.php:158
266
  #: lite/includes/workflows/admin/class-es-workflow-admin-edit.php:222
267
  #: lite/includes/workflows/class-es-workflows-table.php:53
270
  msgid "Workflows"
271
  msgstr ""
272
 
273
+ #: lite/admin/class-email-subscribers-admin.php:330
274
+ #: lite/admin/partials/dashboard.php:238
275
  #: lite/includes/classes/class-es-campaign-report.php:17
276
  #: lite/includes/classes/class-es-reports-table.php:17
277
  #: lite/includes/classes/class-es-reports-table.php:56
284
  msgid "Reports"
285
  msgstr ""
286
 
287
+ #: lite/admin/class-email-subscribers-admin.php:334
288
+ #: lite/admin/partials/dashboard.php:246
289
  #: lite/includes/classes/class-es-admin-settings.php:119
290
  msgid "Settings"
291
  msgstr ""
292
 
293
+ #: lite/admin/class-email-subscribers-admin.php:339
294
  msgid "Go To Icegram"
295
  msgstr ""
296
 
297
  #. translators: 1. WordPress URL 2. Email Subscribers version 3. Icegram site URL
298
+ #: lite/admin/class-email-subscribers-admin.php:884
299
  msgid "<span id=\"footer-thankyou\">Thank you for creating with <a href=\"%1$s\" target=\"_blank\">WordPress</a> | Email Subscribers <b>%2$s</b>. Developed by team <a href=\"%3$s\" target=\"_blank\">Icegram</a></span>"
300
  msgstr ""
301
 
302
+ #: lite/admin/class-email-subscribers-admin.php:912
303
  msgid "Something went wrong"
304
  msgstr ""
305
 
393
  #: lite/admin/class-ig-es-campaign-rules.php:593
394
  #: lite/includes/classes/class-es-admin-settings.php:199
395
  #: lite/includes/classes/class-es-campaign-report.php:179
396
+ #: lite/includes/classes/class-es-contacts-table.php:780
397
+ #: lite/includes/classes/class-es-contacts-table.php:1042
398
  #: lite/includes/classes/class-es-export-subscribers.php:339
399
+ #: lite/includes/classes/class-es-forms-table.php:393
400
  #: lite/includes/classes/class-es-import-subscribers.php:557
401
  #: lite/includes/classes/class-es-import-subscribers.php:648
402
+ #: lite/includes/classes/class-es-import-subscribers.php:1040
403
+ #: lite/includes/classes/class-es-import-subscribers.php:1175
404
  #: lite/includes/pro-features.php:901
405
  #: lite/includes/pro-features.php:1432
406
  #: lite/includes/workflows/actions/abstracts/class-ig-es-action-send-email-abstract.php:29
546
  msgid "Unable to create %1$s and %2$s list."
547
  msgstr ""
548
 
549
+ #: lite/admin/class-ig-es-onboarding.php:606
550
  #: lite/includes/workflows/db/class-es-db-workflows.php:370
551
  #: lite/includes/workflows/triggers/class-es-trigger-user-registered.php:30
552
  msgid "User Registered"
553
  msgstr ""
554
 
555
+ #: lite/admin/class-ig-es-onboarding.php:721
556
  #: lite/includes/classes/class-es-forms-table.php:293
557
  msgid "Please accept terms & condition"
558
  msgstr ""
559
 
560
  #. translators: Active sidebar name.
561
+ #: lite/admin/class-ig-es-onboarding.php:779
562
  msgid "Adding the form to \"%s\" sidebar, so you can show it on the site"
563
  msgstr ""
564
 
565
  #. translators: Active sidebar name.
566
+ #: lite/admin/class-ig-es-onboarding.php:782
567
  msgid "Unable to add form widget to \"%s\" sidebar. Widget may already exists."
568
  msgstr ""
569
 
570
  #. translators: Active sidebar name.
571
+ #: lite/admin/class-ig-es-onboarding.php:787
572
  msgid "Unable to add form widget to \"%s\" sidebar. No subscription form found."
573
  msgstr ""
574
 
575
+ #: lite/admin/class-ig-es-onboarding.php:839
576
+ #: lite/admin/class-ig-es-onboarding.php:840
577
  msgid "Welcome To Email Subscribers"
578
  msgstr ""
579
 
580
+ #: lite/admin/class-ig-es-onboarding.php:1012
581
  msgid "Seems like your server is not setup correctly to send emails. Please confirm if you're getting any other emails from within WordPress"
582
  msgstr ""
583
 
584
+ #: lite/admin/class-ig-es-onboarding.php:1138
585
  msgid "New Post Published - {{POSTTITLE}}"
586
  msgstr ""
587
 
588
+ #: lite/admin/partials/dashboard.php:49
589
  msgid "Add a Subscription Form"
590
  msgstr ""
591
 
592
+ #: lite/admin/partials/dashboard.php:50
593
  msgid "Grow subscribers. Add a newsletter signup form to your site."
594
  msgstr ""
595
 
596
+ #: lite/admin/partials/dashboard.php:51
597
+ #: lite/admin/partials/dashboard.php:116
598
  msgid "Create"
599
  msgstr ""
600
 
601
+ #: lite/admin/partials/dashboard.php:57
602
  #: lite/includes/classes/class-es-contacts-table.php:138
603
  #: lite/includes/classes/class-es-import-subscribers.php:390
604
  msgid "Import Contacts"
605
  msgstr ""
606
 
607
+ #: lite/admin/partials/dashboard.php:58
608
  msgid "Coming from another email marketing system? Upload a CSV file to import subscribers."
609
  msgstr ""
610
 
611
+ #: lite/admin/partials/dashboard.php:59
612
  #: lite/includes/classes/class-es-import-subscribers.php:353
613
  msgid "Import"
614
  msgstr ""
615
 
616
+ #: lite/admin/partials/dashboard.php:65
617
  msgid "Configure Email Sending"
618
  msgstr ""
619
 
620
+ #: lite/admin/partials/dashboard.php:66
621
  msgid " Essential for high email delivery and reaching the inbox. SMTP, email service providers... set it all up."
622
  msgstr ""
623
 
624
+ #: lite/admin/partials/dashboard.php:67
625
  msgid "Setup"
626
  msgstr ""
627
 
628
+ #: lite/admin/partials/dashboard.php:73
629
  msgid "Send a Newsletter"
630
  msgstr ""
631
 
632
+ #: lite/admin/partials/dashboard.php:74
633
  msgid "Broadcast a newsletter campaign to all or selected subscribers."
634
  msgstr ""
635
 
636
+ #: lite/admin/partials/dashboard.php:75
637
  msgid "Begin"
638
  msgstr ""
639
 
640
+ #: lite/admin/partials/dashboard.php:81
641
  msgid "Create an Auto-responder Sequence"
642
  msgstr ""
643
 
644
+ #: lite/admin/partials/dashboard.php:82
645
  msgid "Welcome emails, drip campaigns... Send automatic emails at regular intervals to engage readers."
646
  msgstr ""
647
 
648
+ #: lite/admin/partials/dashboard.php:83
649
  msgid "Start"
650
  msgstr ""
651
 
652
+ #: lite/admin/partials/dashboard.php:127
653
  msgid "New Broadcast"
654
  msgstr ""
655
 
656
+ #: lite/admin/partials/dashboard.php:129
657
  msgid "New Post Notification"
658
  msgstr ""
659
 
660
+ #: lite/admin/partials/dashboard.php:132
661
+ #: lite/admin/partials/dashboard.php:134
662
  #: pro/pro-class-sequences.php:48
663
  msgid "New Sequence"
664
  msgstr ""
665
 
666
+ #: lite/admin/partials/dashboard.php:135
667
  msgid "Premium"
668
  msgstr ""
669
 
670
+ #: lite/admin/partials/dashboard.php:140
671
  msgid "New Template"
672
  msgstr ""
673
 
674
+ #: lite/admin/partials/dashboard.php:144
675
  msgid "New Form"
676
  msgstr ""
677
 
678
+ #: lite/admin/partials/dashboard.php:145
679
  msgid "New List"
680
  msgstr ""
681
 
682
+ #: lite/admin/partials/dashboard.php:146
683
  msgid "New Contact"
684
  msgstr ""
685
 
686
+ #: lite/admin/partials/dashboard.php:161
687
  msgid " active contacts"
688
  msgstr ""
689
 
690
+ #: lite/admin/partials/dashboard.php:169
691
  #: lite/includes/classes/class-es-contacts-table.php:325
692
  msgid "Last 60 days"
693
  msgstr ""
694
 
695
+ #: lite/admin/partials/dashboard.php:177
696
  #: lite/includes/pro-features.php:1184
697
  #: lite/includes/pro-features.php:1222
698
  #: pro/classes/class-es-pro-reports-data.php:416
702
  msgid "Opens"
703
  msgstr ""
704
 
705
+ #: lite/admin/partials/dashboard.php:185
706
  msgid " Avg Open Rate"
707
  msgstr ""
708
 
709
+ #: lite/admin/partials/dashboard.php:193
710
  msgid "Messages Sent"
711
  msgstr ""
712
 
713
+ #: lite/admin/partials/dashboard.php:201
714
  #: lite/includes/pro-features.php:1120
715
  #: pro/classes/class-es-pro-reports-data.php:379
716
  msgid "Avg Click Rate"
717
  msgstr ""
718
 
719
+ #: lite/admin/partials/dashboard.php:236
720
  msgid "Jump to: "
721
  msgstr ""
722
 
723
+ #: lite/admin/partials/dashboard.php:242
724
  #: lite/includes/class-email-subscribers-activator.php:43
725
  #: lite/includes/class-email-subscribers-activator.php:44
726
  #: lite/includes/class-email-subscribers-activator.php:49
795
  #: lite/includes/classes/class-es-campaign-report.php:180
796
  #: lite/includes/classes/class-es-campaigns-table.php:619
797
  #: lite/includes/classes/class-es-export-subscribers.php:341
798
+ #: lite/includes/classes/class-es-import-subscribers.php:657
799
+ #: lite/includes/classes/class-es-import-subscribers.php:1178
800
  #: lite/includes/classes/class-es-reports-table.php:230
801
  #: lite/includes/workflows/class-es-workflows-table.php:311
802
  #: pro/classes/class-es-pro-sequence-report.php:297
1075
  msgstr ""
1076
 
1077
  #: lite/includes/class-email-subscribers-activator.php:55
1078
+ #: lite/includes/class-email-subscribers.php:1487
1079
  #: lite/includes/classes/class-es-form-widget.php:11
1080
  #: lite/includes/classes/class-es-old-widget.php:13
1081
  #: lite/includes/classes/class-es-old-widget.php:15
1111
  msgstr ""
1112
 
1113
  #. translators: 1: Error message 2: File name 3: Line number
1114
+ #: lite/includes/class-email-subscribers.php:1273
1115
  msgid "%1$s in %2$s on line %3$s"
1116
  msgstr ""
1117
 
1118
+ #: lite/includes/class-email-subscribers.php:1500
1119
  msgid "Icegram WC"
1120
  msgstr ""
1121
 
1122
  #. translators: %1$s - constant that was used
1123
+ #: lite/includes/class-email-subscribers.php:1909
1124
  msgid "Value was set using constant %1$s"
1125
  msgstr ""
1126
 
1127
  #: lite/includes/class-es-common.php:187
1128
  #: lite/includes/classes/class-es-contacts-table.php:332
1129
+ #: lite/includes/classes/class-es-import-subscribers.php:822
1130
+ #: lite/includes/classes/class-es-import-subscribers.php:1185
1131
+ #: lite/includes/classes/class-es-lists-table.php:572
1132
  msgid "Subscribed"
1133
  msgstr ""
1134
 
1135
  #: lite/includes/class-es-common.php:188
1136
  #: lite/includes/classes/class-es-contacts-table.php:348
1137
+ #: lite/includes/classes/class-es-import-subscribers.php:824
1138
+ #: lite/includes/classes/class-es-import-subscribers.php:1187
1139
+ #: lite/includes/classes/class-es-lists-table.php:574
1140
  msgid "Unconfirmed"
1141
  msgstr ""
1142
 
1143
  #: lite/includes/class-es-common.php:189
1144
  #: lite/includes/classes/class-es-contacts-table.php:340
1145
+ #: lite/includes/classes/class-es-import-subscribers.php:1186
1146
+ #: lite/includes/classes/class-es-lists-table.php:573
1147
  msgid "Unsubscribed"
1148
  msgstr ""
1149
 
1271
 
1272
  #: lite/includes/class-es-common.php:1677
1273
  #: lite/includes/classes/class-es-campaigns-table.php:679
1274
+ #: lite/includes/classes/class-es-contacts-table.php:1109
1275
  msgid "All Statuses"
1276
  msgstr ""
1277
 
1326
  #: lite/includes/classes/class-es-admin-settings.php:190
1327
  #: lite/includes/classes/class-es-admin-settings.php:193
1328
  #: lite/includes/classes/class-es-campaigns-table.php:614
1329
+ #: lite/includes/classes/class-es-contacts-table.php:1041
1330
+ #: lite/includes/classes/class-es-forms-table.php:410
1331
+ #: lite/includes/classes/class-es-forms-table.php:900
1332
+ #: lite/includes/classes/class-es-lists-table.php:570
1333
  #: lite/public/partials/class-es-shortcode.php:152
1334
  msgid "Name"
1335
  msgstr ""
1448
  #: lite/includes/classes/class-es-admin-settings.php:386
1449
  #: lite/includes/classes/class-es-admin-settings.php:419
1450
  #: lite/includes/classes/class-es-admin-settings.php:456
1451
+ #: lite/includes/classes/class-es-newsletters.php:353
1452
  #: lite/includes/classes/class-es-reports-table.php:228
1453
  #: pro/classes/class-es-pro-sequence-report.php:295
1454
  msgid "Subject"
1459
  #: lite/includes/classes/class-es-admin-settings.php:427
1460
  #: lite/includes/classes/class-es-admin-settings.php:467
1461
  #: lite/includes/classes/class-es-newsletters.php:266
1462
+ #: pro/pro-class-sequences.php:405
1463
  msgid "Content"
1464
  msgstr ""
1465
 
1757
  #. translators: 1: Page 2: Edit action 3: List id 4: List nonce
1758
  #: lite/includes/classes/class-es-campaigns-table.php:432
1759
  #: lite/includes/classes/class-es-campaigns-table.php:456
1760
+ #: lite/includes/classes/class-es-lists-table.php:548
1761
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
1762
  msgstr ""
1763
 
1764
  #. translators: 1: Slug 2: Delete Action 3: ID 4. WP Nonce
1765
  #. translators: 1: Page 2: Delete action 3: List id 4: List nonce
1766
  #: lite/includes/classes/class-es-campaigns-table.php:481
1767
+ #: lite/includes/classes/class-es-lists-table.php:550
1768
  msgid "<a href=\"?page=%1$s&action=%2$s&list=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
1769
  msgstr ""
1770
 
1775
  msgstr ""
1776
 
1777
  #: lite/includes/classes/class-es-campaigns-table.php:616
1778
+ #: lite/includes/classes/class-es-contacts-table.php:831
1779
+ #: lite/includes/classes/class-es-contacts-table.php:1043
1780
  msgid "List(s)"
1781
  msgstr ""
1782
 
1785
  msgstr ""
1786
 
1787
  #: lite/includes/classes/class-es-campaigns-table.php:618
1788
+ #: lite/includes/classes/class-es-contacts-table.php:1044
1789
+ #: lite/includes/classes/class-es-forms-table.php:903
1790
+ #: lite/includes/classes/class-es-lists-table.php:576
1791
  #: lite/includes/workflows/class-es-workflows-table.php:310
1792
  msgid "Created"
1793
  msgstr ""
1887
 
1888
  #: lite/includes/classes/class-es-contacts-table.php:526
1889
  #: lite/includes/classes/class-es-export-subscribers.php:36
1890
+ #: lite/includes/classes/class-es-lists-table.php:706
1891
  msgid "Please select list"
1892
  msgstr ""
1893
 
1904
  msgid "Audience "
1905
  msgstr ""
1906
 
1907
+ #: lite/includes/classes/class-es-contacts-table.php:727
1908
  msgid "No list found"
1909
  msgstr ""
1910
 
1911
+ #: lite/includes/classes/class-es-contacts-table.php:738
1912
  msgid "First name"
1913
  msgstr ""
1914
 
1915
+ #: lite/includes/classes/class-es-contacts-table.php:750
1916
  msgid "Enter first name"
1917
  msgstr ""
1918
 
1919
+ #: lite/includes/classes/class-es-contacts-table.php:760
1920
  msgid "Last name"
1921
  msgstr ""
1922
 
1923
+ #: lite/includes/classes/class-es-contacts-table.php:771
1924
  msgid "Enter last name"
1925
  msgstr ""
1926
 
1927
+ #: lite/includes/classes/class-es-contacts-table.php:792
1928
  #: lite/includes/pro-features.php:907
1929
  #: pro/pro-class-email-subscribers.php:822
1930
  msgid "Enter email"
1931
  msgstr ""
1932
 
1933
+ #: lite/includes/classes/class-es-contacts-table.php:802
1934
  msgid "Send welcome email?"
1935
  msgstr ""
1936
 
1937
+ #: lite/includes/classes/class-es-contacts-table.php:848
1938
  msgid "Save Contact"
1939
  msgstr ""
1940
 
1941
+ #: lite/includes/classes/class-es-contacts-table.php:848
1942
+ #: lite/includes/classes/class-es-forms-table.php:560
1943
+ #: lite/includes/classes/class-es-lists-table.php:323
1944
  #: lite/includes/classes/class-es-post-notifications.php:429
1945
  msgid "Save Changes"
1946
  msgstr ""
1947
 
1948
+ #: lite/includes/classes/class-es-contacts-table.php:855
1949
+ #: lite/includes/classes/class-es-forms-table.php:564
1950
+ #: lite/includes/classes/class-es-lists-table.php:327
1951
  #: lite/includes/classes/class-es-post-notifications.php:432
1952
  msgid "Cancel"
1953
  msgstr ""
1954
 
1955
+ #: lite/includes/classes/class-es-contacts-table.php:871
1956
  msgid "No contacts avaliable."
1957
  msgstr ""
1958
 
1959
  #. translators: 1: Page 2: Edit action 3: Contact id 4: Wp nonce
1960
+ #: lite/includes/classes/class-es-contacts-table.php:1021
1961
  msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
1962
  msgstr ""
1963
 
1964
  #. translators: 1: Page 2: Delete action 3: Contact id 4: Wp nonce
1965
+ #: lite/includes/classes/class-es-contacts-table.php:1023
1966
  msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
1967
  msgstr ""
1968
 
1969
  #. translators: 1: Page 2: Resend action 3: Contact id 4: Wp nonce
1970
+ #: lite/includes/classes/class-es-contacts-table.php:1026
1971
  msgid "<a href=\"?page=%1$s&action=%2$s&subscriber=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Resend Confirmation<a>"
1972
  msgstr ""
1973
 
1974
+ #: lite/includes/classes/class-es-contacts-table.php:1077
1975
+ #: lite/includes/classes/class-es-forms-table.php:931
1976
+ #: lite/includes/classes/class-es-lists-table.php:605
1977
  #: lite/includes/classes/class-es-reports-table.php:211
1978
  #: lite/includes/classes/class-es-reports-table.php:296
1979
  #: lite/includes/workflows/admin/views/action.php:29
1983
  msgid "Delete"
1984
  msgstr ""
1985
 
1986
+ #: lite/includes/classes/class-es-contacts-table.php:1078
1987
  #: pro/workflows/actions/class-es-action-move-to-list.php:29
1988
  msgid "Move to list"
1989
  msgstr ""
1990
 
1991
+ #: lite/includes/classes/class-es-contacts-table.php:1079
1992
  #: lite/includes/workflows/actions/class-es-action-add-to-list.php:29
1993
  msgid "Add to list"
1994
  msgstr ""
1995
 
1996
+ #: lite/includes/classes/class-es-contacts-table.php:1080
1997
  msgid "Change status"
1998
  msgstr ""
1999
 
2000
+ #: lite/includes/classes/class-es-contacts-table.php:1101
2001
  msgid "Search Contacts"
2002
  msgstr ""
2003
 
2004
+ #: lite/includes/classes/class-es-contacts-table.php:1118
2005
  msgid "All Lists"
2006
  msgstr ""
2007
 
2008
+ #: lite/includes/classes/class-es-contacts-table.php:1231
2009
+ #: lite/includes/classes/class-es-contacts-table.php:1294
2010
  msgid "Contact(s) deleted successfully!"
2011
  msgstr ""
2012
 
2013
+ #: lite/includes/classes/class-es-contacts-table.php:1256
2014
  msgid "Confirmation email sent successfully!"
2015
  msgstr ""
2016
 
2017
+ #: lite/includes/classes/class-es-contacts-table.php:1282
2018
  msgid "Please select subscribers to update."
2019
  msgstr ""
2020
 
2021
+ #: lite/includes/classes/class-es-contacts-table.php:1305
2022
  msgid "Please select status."
2023
  msgstr ""
2024
 
2025
+ #: lite/includes/classes/class-es-contacts-table.php:1315
2026
  msgid "Contact(s) status changed successfully!"
2027
  msgstr ""
2028
 
2029
+ #: lite/includes/classes/class-es-contacts-table.php:1326
2030
+ #: lite/includes/classes/class-es-contacts-table.php:1347
2031
  #: lite/includes/classes/class-es-post-notifications.php:51
2032
  msgid "Please select list."
2033
  msgstr ""
2034
 
2035
+ #: lite/includes/classes/class-es-contacts-table.php:1335
2036
  msgid "Contact(s) moved to list successfully!"
2037
  msgstr ""
2038
 
2039
+ #: lite/includes/classes/class-es-contacts-table.php:1356
2040
  msgid "Contact(s) added to list successfully!"
2041
  msgstr ""
2042
 
2119
  msgstr ""
2120
 
2121
  #: lite/includes/classes/class-es-export-subscribers.php:83
2122
+ #: lite/includes/classes/class-es-lists-table.php:577
2123
  msgid "Export"
2124
  msgstr ""
2125
 
2126
  #: lite/includes/classes/class-es-export-subscribers.php:97
2127
+ #: lite/includes/classes/class-es-lists-table.php:575
2128
  msgid "All contacts"
2129
  msgstr ""
2130
 
2147
  #: lite/includes/classes/class-es-export-subscribers.php:337
2148
  #: lite/includes/classes/class-es-import-subscribers.php:558
2149
  #: lite/includes/classes/class-es-import-subscribers.php:649
2150
+ #: lite/includes/classes/class-es-import-subscribers.php:1032
2151
+ #: lite/includes/classes/class-es-import-subscribers.php:1176
2152
  msgid "First Name"
2153
  msgstr ""
2154
 
2155
  #: lite/includes/classes/class-es-export-subscribers.php:338
2156
  #: lite/includes/classes/class-es-import-subscribers.php:559
2157
  #: lite/includes/classes/class-es-import-subscribers.php:650
2158
+ #: lite/includes/classes/class-es-import-subscribers.php:1037
2159
+ #: lite/includes/classes/class-es-import-subscribers.php:1177
2160
  msgid "Last Name"
2161
  msgstr ""
2162
 
2221
  msgid "Forms "
2222
  msgstr ""
2223
 
2224
+ #: lite/includes/classes/class-es-forms-table.php:323
2225
  msgid " New Form"
2226
  msgstr ""
2227
 
2228
+ #: lite/includes/classes/class-es-forms-table.php:325
2229
  msgid " Edit Form"
2230
  msgstr ""
2231
 
2232
+ #: lite/includes/classes/class-es-forms-table.php:334
2233
+ #: lite/includes/classes/class-es-newsletters.php:336
2234
+ #: pro/pro-class-sequences.php:93
2235
+ msgid "Documentation "
2236
  msgstr ""
2237
 
2238
+ #: lite/includes/classes/class-es-forms-table.php:351
2239
  msgid "Form name"
2240
  msgstr ""
2241
 
2242
+ #: lite/includes/classes/class-es-forms-table.php:357
2243
  msgid "Enter form name"
2244
  msgstr ""
2245
 
2246
+ #: lite/includes/classes/class-es-forms-table.php:365
2247
  msgid "Description"
2248
  msgstr ""
2249
 
2250
+ #: lite/includes/classes/class-es-forms-table.php:371
2251
  msgid "Enter description"
2252
  msgstr ""
2253
 
2254
+ #: lite/includes/classes/class-es-forms-table.php:379
2255
  msgid "Form fields"
2256
  msgstr ""
2257
 
2258
+ #: lite/includes/classes/class-es-forms-table.php:386
2259
  msgid "Field"
2260
  msgstr ""
2261
 
2262
+ #: lite/includes/classes/class-es-forms-table.php:387
2263
  msgid "Show?"
2264
  msgstr ""
2265
 
2266
+ #: lite/includes/classes/class-es-forms-table.php:388
2267
  msgid "Required?"
2268
  msgstr ""
2269
 
2270
+ #: lite/includes/classes/class-es-forms-table.php:389
2271
  msgid "Label"
2272
  msgstr ""
2273
 
2274
+ #: lite/includes/classes/class-es-forms-table.php:390
2275
  msgid "Placeholder"
2276
  msgstr ""
2277
 
2278
+ #: lite/includes/classes/class-es-forms-table.php:446
2279
  msgid "Button"
2280
  msgstr ""
2281
 
2282
+ #: lite/includes/classes/class-es-forms-table.php:460
2283
  msgid "Contacts will be added into selected list(s)"
2284
  msgstr ""
2285
 
2286
  #. translators: %s: Create list page url
2287
+ #: lite/includes/classes/class-es-forms-table.php:477
2288
  msgid "List not found. Please %s"
2289
  msgstr ""
2290
 
2291
  #. translators: %s: Create list page url
2292
+ #: lite/includes/classes/class-es-forms-table.php:477
2293
  msgid "create your first list"
2294
  msgstr ""
2295
 
2296
+ #: lite/includes/classes/class-es-forms-table.php:488
2297
  msgid "Allow contact to choose list(s)"
2298
  msgstr ""
2299
 
2300
+ #: lite/includes/classes/class-es-forms-table.php:489
2301
  msgid "Allow contacts to choose list(s) in which they want to subscribe."
2302
  msgstr ""
2303
 
2304
+ #: lite/includes/classes/class-es-forms-table.php:522
2305
  msgid "Show GDPR consent checkbox"
2306
  msgstr ""
2307
 
2308
+ #: lite/includes/classes/class-es-forms-table.php:523
2309
  msgid "Show consent checkbox to get the consent of a contact before adding them to list(s)"
2310
  msgstr ""
2311
 
2312
+ #: lite/includes/classes/class-es-forms-table.php:550
2313
  msgid "Consent text will show up at subscription form next to consent checkbox."
2314
  msgstr ""
2315
 
2316
+ #: lite/includes/classes/class-es-forms-table.php:560
2317
  msgid "Save Form"
2318
  msgstr ""
2319
 
2320
  #. translators: 1: Page 2: Edit Action 3: Form id 4. WP Nonce
2321
+ #: lite/includes/classes/class-es-forms-table.php:883
2322
  msgid "<a href=\"?page=%1$s&action=%2$s&form=%3$s&_wpnonce=%4$s\" class=\"text-indigo-600\">Edit</a>"
2323
  msgstr ""
2324
 
2325
  #. translators: 1: Page 2: Delete Action 3: Form id 4. WP Nonce
2326
+ #: lite/includes/classes/class-es-forms-table.php:885
2327
  msgid "<a href=\"?page=%1$s&action=%2$s&form=%3$s&_wpnonce=%4$s\" onclick=\"return checkDelete()\">Delete</a>"
2328
  msgstr ""
2329
 
2330
+ #: lite/includes/classes/class-es-forms-table.php:901
2331
  msgid "Shortcode"
2332
  msgstr ""
2333
 
2334
+ #: lite/includes/classes/class-es-forms-table.php:902
2335
  msgid "Subscribers"
2336
  msgstr ""
2337
 
2338
+ #: lite/includes/classes/class-es-forms-table.php:943
2339
  msgid "You do not have permission to delete this form."
2340
  msgstr ""
2341
 
2342
+ #: lite/includes/classes/class-es-forms-table.php:950
2343
  msgid "Form deleted successfully!"
2344
  msgstr ""
2345
 
2346
+ #: lite/includes/classes/class-es-forms-table.php:965
2347
  msgid "Form(s) deleted successfully!"
2348
  msgstr ""
2349
 
2350
+ #: lite/includes/classes/class-es-forms-table.php:968
2351
  msgid "Please select form(s) to delete."
2352
  msgstr ""
2353
 
2354
+ #: lite/includes/classes/class-es-forms-table.php:979
2355
+ #: lite/includes/classes/class-es-lists-table.php:717
2356
  msgid "Enable"
2357
  msgstr ""
2358
 
2359
+ #: lite/includes/classes/class-es-forms-table.php:980
2360
+ #: lite/includes/classes/class-es-lists-table.php:718
2361
  msgid "Disable"
2362
  msgstr ""
2363
 
2364
+ #: lite/includes/classes/class-es-forms-table.php:996
2365
  msgid "Search Forms"
2366
  msgstr ""
2367
 
2368
+ #: lite/includes/classes/class-es-forms-table.php:1007
2369
  msgid "No Forms avaliable."
2370
  msgstr ""
2371
 
2592
  msgid "(Last Name) (First Name)"
2593
  msgstr ""
2594
 
2595
+ #: lite/includes/classes/class-es-import-subscribers.php:653
2596
+ msgid "Subscribed at"
2597
+ msgstr ""
2598
+
2599
+ #: lite/includes/classes/class-es-import-subscribers.php:656
2600
+ #: lite/includes/classes/class-es-import-subscribers.php:1179
2601
  msgid "List Name"
2602
  msgstr ""
2603
 
2604
+ #: lite/includes/classes/class-es-import-subscribers.php:665
2605
  msgid "Select columns for mapping"
2606
  msgstr ""
2607
 
2608
+ #: lite/includes/classes/class-es-import-subscribers.php:668
2609
  msgid "Define which column represents which field"
2610
  msgstr ""
2611
 
2612
+ #: lite/includes/classes/class-es-import-subscribers.php:685
2613
  msgid "Ignore column"
2614
  msgstr ""
2615
 
2616
  #. translators: %s: Hidden contacts count
2617
+ #: lite/includes/classes/class-es-import-subscribers.php:724
2618
  msgid "%s contacts are hidden"
2619
  msgstr ""
2620
 
2621
+ #: lite/includes/classes/class-es-import-subscribers.php:791
2622
  msgid "Email address is invalid."
2623
  msgstr ""
2624
 
2625
+ #: lite/includes/classes/class-es-import-subscribers.php:792
2626
  msgid "Email address is empty."
2627
  msgstr ""
2628
 
2629
+ #: lite/includes/classes/class-es-import-subscribers.php:793
2630
  msgid "Duplicate email in the CSV file. Only the first record imported."
2631
  msgstr ""
2632
 
2633
+ #: lite/includes/classes/class-es-import-subscribers.php:823
2634
  msgid "Unubscribed"
2635
  msgstr ""
2636
 
2637
+ #: lite/includes/classes/class-es-import-subscribers.php:825
2638
+ #: lite/includes/classes/class-es-import-subscribers.php:1188
2639
  msgid "Hard Bounced"
2640
  msgstr ""
2641
 
2642
  #. translators: 1. Total imported contacts 2. Total contacts
2643
+ #: lite/includes/classes/class-es-import-subscribers.php:1022
2644
  msgid "%1$s of %2$s contacts imported"
2645
  msgstr ""
2646
 
2647
+ #: lite/includes/classes/class-es-import-subscribers.php:1026
2648
  msgid "The following contacts were skipped"
2649
  msgstr ""
2650
 
2651
+ #: lite/includes/classes/class-es-import-subscribers.php:1041
2652
  msgid "Reason"
2653
  msgstr ""
2654
 
2665
  msgstr ""
2666
 
2667
  #: lite/includes/classes/class-es-lists-table.php:138
2668
+ #: lite/includes/classes/class-es-lists-table.php:666
2669
  msgid "You do not have permission to edit list"
2670
  msgstr ""
2671
 
2682
  msgstr ""
2683
 
2684
  #: lite/includes/classes/class-es-lists-table.php:234
2685
+ #: lite/includes/classes/class-es-lists-table.php:670
2686
  msgid "List updated successfully!"
2687
  msgstr ""
2688
 
2706
  msgid "Enter list name"
2707
  msgstr ""
2708
 
2709
+ #: lite/includes/classes/class-es-lists-table.php:323
2710
  msgid "Save List"
2711
  msgstr ""
2712
 
2714
  #. translators: 1: Unsubscribed-Filter url 2: Count
2715
  #. translators: 1: Unconfirmed-Filter url 2: Count
2716
  #. translators: 1: All contacts flters 2: Count
2717
+ #: lite/includes/classes/class-es-lists-table.php:458
2718
+ #: lite/includes/classes/class-es-lists-table.php:469
2719
+ #: lite/includes/classes/class-es-lists-table.php:480
2720
+ #: lite/includes/classes/class-es-lists-table.php:491
2721
  msgid "<a href=\"%1$s\" target=\"_blank\">%2$d</a>"
2722
  msgstr ""
2723
 
2724
+ #: lite/includes/classes/class-es-lists-table.php:566
2725
+ msgid "Unique hash key that can be used to subscribe users to this list from external sites."
2726
+ msgstr ""
2727
+
2728
+ #: lite/includes/classes/class-es-lists-table.php:571
2729
+ msgid "Hash"
2730
+ msgstr ""
2731
+
2732
+ #: lite/includes/classes/class-es-lists-table.php:626
2733
  msgid "Search lists"
2734
  msgstr ""
2735
 
2736
+ #: lite/includes/classes/class-es-lists-table.php:681
2737
  msgid "You do not have permission to delete list"
2738
  msgstr ""
2739
 
2740
+ #: lite/includes/classes/class-es-lists-table.php:688
2741
  msgid "List deleted successfully!"
2742
  msgstr ""
2743
 
2744
+ #: lite/includes/classes/class-es-lists-table.php:703
2745
  msgid "List(s) deleted successfully!"
2746
  msgstr ""
2747
 
2748
+ #: lite/includes/classes/class-es-lists-table.php:730
2749
  msgid "No lists avaliable."
2750
  msgstr ""
2751
 
2771
  msgid "If you find this plugin useful, please consider giving us %1$s5 stars review%2$s on WordPress!"
2772
  msgstr ""
2773
 
2774
+ #. translators: 1. Unsubscribe link 2. Blog admin email 3. Subscriber email 4. Blog name
2775
+ #: lite/includes/classes/class-es-mailer.php:1746
2776
+ msgid "<%1$s>,<mailto:%2$s?subject=Unsubscribe %3$s from %4$s>"
2777
+ msgstr ""
2778
+
2779
  #: lite/includes/classes/class-es-newsletters.php:94
2780
  msgid "Sorry, you are not allowed to add/edit broadcast."
2781
  msgstr ""
2822
  msgid "Send"
2823
  msgstr ""
2824
 
2825
+ #: lite/includes/classes/class-es-newsletters.php:357
 
 
 
 
2826
  msgid "From Name"
2827
  msgstr ""
2828
 
2829
+ #: lite/includes/classes/class-es-newsletters.php:361
2830
  msgid "From Email"
2831
  msgstr ""
2832
 
2833
+ #: lite/includes/classes/class-es-newsletters.php:365
2834
  msgid "Reply To"
2835
  msgstr ""
2836
 
2837
+ #: lite/includes/classes/class-es-newsletters.php:370
2838
  msgid "Message"
2839
  msgstr ""
2840
 
2841
+ #: lite/includes/classes/class-es-newsletters.php:388
2842
  msgid "Design template"
2843
  msgstr ""
2844
 
2845
+ #: lite/includes/classes/class-es-newsletters.php:404
2846
  msgid "Total recipients:"
2847
  msgstr ""
2848
 
2849
+ #: lite/includes/classes/class-es-newsletters.php:414
2850
+ #: lite/includes/classes/class-es-newsletters.php:442
2851
  #: lite/includes/classes/class-es-reports-table.php:212
2852
  #: pro/classes/class-es-pro-sequence-report.php:269
2853
  msgid "Preview"
2854
  msgstr ""
2855
 
2856
+ #: lite/includes/classes/class-es-newsletters.php:417
2857
  msgid "Browser"
2858
  msgstr ""
2859
 
2860
+ #: lite/includes/classes/class-es-newsletters.php:428
2861
  #: lite/includes/classes/class-es-reports-table.php:473
2862
  msgid "There could be a slight variation on how your customer will view the email content."
2863
  msgstr ""
2864
 
2865
+ #: lite/includes/classes/class-es-newsletters.php:432
2866
  #: lite/includes/classes/class-es-reports-table.php:477
2867
  #: lite/includes/premium-services-ui/class-ig-es-premium-services-ui.php:236
2868
  msgid "Close"
2869
  msgstr ""
2870
 
2871
+ #: lite/includes/classes/class-es-newsletters.php:445
2872
  msgid "Email sent successfully "
2873
  msgstr ""
2874
 
2875
+ #: lite/includes/classes/class-es-newsletters.php:446
2876
  msgid "Something went wrong. Please try again later"
2877
  msgstr ""
2878
 
2879
+ #: lite/includes/classes/class-es-newsletters.php:463
2880
  msgid "Email Content Preview"
2881
  msgstr ""
2882
 
2883
+ #: lite/includes/classes/class-es-newsletters.php:503
2884
  msgid "Open tracking"
2885
  msgstr ""
2886
 
2948
  msgstr ""
2949
 
2950
  #: lite/includes/classes/class-es-post-notifications.php:294
2951
+ #: pro/pro-class-sequences.php:79
2952
  msgid "Campaigns "
2953
  msgstr ""
2954
 
3004
  msgstr ""
3005
 
3006
  #: lite/includes/classes/class-es-reports-table.php:145
3007
+ #: lite/public/class-email-subscribers-public.php:475
3008
  #: pro/classes/class-es-pro-reports-data.php:144
3009
  #: pro/classes/class-es-pro-reports-data.php:189
3010
  msgid "Post Notification"
4283
  msgstr ""
4284
 
4285
  #. translators: %s: Table name
4286
+ #: lite/includes/workflows/queue/class-es-workflow-queue.php:479
4287
  #: pro/classes/abandoned-cart/class-ig-es-cart.php:784
4288
  #: pro/classes/abandoned-cart/class-ig-es-guest.php:411
4289
  msgid "Could not insert into '%1$s' table. '%1$s' may not be present in the database."
4320
  msgid "Sorry, you are not allowed to access this page."
4321
  msgstr ""
4322
 
4323
+ #: lite/public/class-email-subscribers-public.php:251
4324
  msgid "You are already subscribed!"
4325
  msgstr ""
4326
 
4327
+ #: lite/public/class-email-subscribers-public.php:253
4328
  msgid "You are already unsubscribed!"
4329
  msgstr ""
4330
 
4331
+ #: lite/public/class-email-subscribers-public.php:258
4332
  msgid "Sorry, we couldn't find you. Please contact admin."
4333
  msgstr ""
4334
 
4335
+ #: lite/public/class-email-subscribers-public.php:436
4336
  #: starter/starter-class-email-subscribers.php:882
4337
  msgid "is subscribed to our mailing list(s)."
4338
  msgstr ""
4339
 
4340
+ #: lite/public/class-email-subscribers-public.php:444
4341
  msgid "Unsubscribe from all list(s)"
4342
  msgstr ""
4343
 
4344
+ #: lite/public/class-email-subscribers-public.php:445
4345
  msgid "You will be unsubscribed from receiving all future emails sent from us."
4346
  msgstr ""
4347
 
4348
+ #: lite/public/class-email-subscribers-public.php:451
4349
  #: starter/starter-class-email-subscribers.php:906
4350
  msgid "Unsubscribe"
4351
  msgstr ""
4517
  msgid "Please share the reason"
4518
  msgstr ""
4519
 
4520
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:99
4521
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:319
4522
  msgid "Access Key ID is empty."
4523
  msgstr ""
4524
 
4525
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:109
4526
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:329
4527
  msgid "Secret Access Key is empty."
4528
  msgstr ""
4529
 
4530
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:119
4531
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:339
4532
  msgid "Closest region is not set."
4533
  msgstr ""
4534
 
4535
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:393
4536
  msgid "US East (N. Virginia)"
4537
  msgstr ""
4538
 
4539
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:394
4540
  msgid "US East (Ohio)"
4541
  msgstr ""
4542
 
4543
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:395
4544
  msgid "US West (Oregon)"
4545
  msgstr ""
4546
 
4547
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:396
4548
  msgid "US AWS GovCloud"
4549
  msgstr ""
4550
 
4551
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:397
4552
  msgid "EU (Ireland)"
4553
  msgstr ""
4554
 
4555
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:398
4556
  msgid "EU (London)"
4557
  msgstr ""
4558
 
4559
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:399
4560
  msgid "EU (Frankfurt)"
4561
  msgstr ""
4562
 
4563
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:400
4564
  msgid "Asia Pacific (Mumbai)"
4565
  msgstr ""
4566
 
4567
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:401
4568
  msgid "Asia Pacific (Tokyo)"
4569
  msgstr ""
4570
 
4571
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:402
4572
  msgid "Asia Pacific (Seoul)"
4573
  msgstr ""
4574
 
4575
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:403
4576
  msgid "Asia Pacific (Singapore)"
4577
  msgstr ""
4578
 
4579
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:404
4580
  msgid "Asia Pacific (Sydney)"
4581
  msgstr ""
4582
 
4583
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:405
4584
  msgid "Canada (Central)"
4585
  msgstr ""
4586
 
4587
+ #: pro/mailers/aws-ses/class-es-amazon-ses-mailer.php:406
4588
  msgid "South America (São Paulo)"
4589
  msgstr ""
4590
 
4591
+ #: pro/mailers/aws-ses/php-aws-ses/SimpleEmailService.php:623
4592
+ msgid "Encountered an error, but no description given"
4593
+ msgstr ""
4594
+
4595
+ #. translators: 1. Error type 2. Error code 3. Error message 4. Request Id
4596
+ #: pro/mailers/aws-ses/php-aws-ses/SimpleEmailService.php:629
4597
+ msgid "%1$s - %2$s <br/>%3$s <br/>Request Id: %4$s"
4598
+ msgstr ""
4599
+
4600
+ #. translators: %s: Error message.
4601
+ #: pro/mailers/aws-ses/php-aws-ses/SimpleEmailService.php:633
4602
+ msgid "Encountered an error: %s"
4603
+ msgstr ""
4604
+
4605
+ #: pro/mailers/class-es-mailgun-mailer.php:149
4606
  msgid "Private API key is empty."
4607
  msgstr ""
4608
 
4609
+ #: pro/mailers/class-es-mailgun-mailer.php:159
4610
  msgid "Domain name is empty"
4611
  msgstr ""
4612
 
4613
+ #: pro/mailers/class-es-mailgun-mailer.php:169
4614
  #: pro/mailers/class-es-sparkpost-mailer.php:84
4615
  msgid "Region is empty"
4616
  msgstr ""
4617
 
4618
+ #: pro/mailers/class-es-mailgun-mailer.php:569
4619
+ #: pro/mailers/class-es-postmark-mailer.php:300
4620
+ #: pro/mailers/class-es-sendgrid-mailer.php:339
4621
+ #: pro/mailers/class-es-sendgrid-mailer.php:679
4622
  #: pro/mailers/class-es-sparkpost-mailer.php:137
4623
  msgid "An unknown error has occured. Please try again later."
4624
  msgstr ""
4625
 
4626
+ #: pro/mailers/class-es-postmark-mailer.php:107
4627
  msgid "API token is empty."
4628
  msgstr ""
4629
 
4630
+ #: pro/mailers/class-es-sendgrid-mailer.php:107
4631
+ #: pro/mailers/class-es-sendgrid-mailer.php:288
4632
  #: pro/mailers/class-es-sparkpost-mailer.php:74
4633
  msgid "API key is empty."
4634
  msgstr ""
4635
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
4636
  #: pro/partials/es-dashboard.php:52
4637
  msgid "Sent on"
4638
  msgstr ""
4653
  msgid "Your cart could not be restored, it may have expired."
4654
  msgstr ""
4655
 
4656
+ #: pro/pro-class-email-subscribers.php:368
4657
  #: pro/pro-class-post-digest.php:25
4658
  msgid "Sequence"
4659
  msgstr ""
4660
 
4661
+ #: pro/pro-class-email-subscribers.php:486
4662
  msgid "Please enter an email address."
4663
  msgstr ""
4664
 
4665
+ #: pro/pro-class-email-subscribers.php:488
4666
  msgid "Add Attachment"
4667
  msgstr ""
4668
 
4669
  #. translators: %s: Attachmen max file size.
4670
+ #: pro/pro-class-email-subscribers.php:490
4671
  msgid "Please attach a file having size lower than %s."
4672
  msgstr ""
4673
 
4674
+ #: pro/pro-class-email-subscribers.php:491
4675
  msgid "Are you sure you want to delete this?"
4676
  msgstr ""
4677
 
4792
  msgid "Proceed"
4793
  msgstr ""
4794
 
4795
+ #: pro/pro-class-email-subscribers.php:1850
4796
  msgid "How to configure Mailgun to send emails in the Email Subscribers plugin?"
4797
  msgstr ""
4798
 
4799
+ #: pro/pro-class-email-subscribers.php:1878
4800
  msgid "How to configure SendGrid to send emails in the Email Subscribers plugin?"
4801
  msgstr ""
4802
 
4803
+ #: pro/pro-class-email-subscribers.php:1907
4804
  msgid "How to configure Sparkpost to send emails in the Email Subscribers plugin?"
4805
  msgstr ""
4806
 
4807
+ #: pro/pro-class-email-subscribers.php:1934
4808
  msgid "How to configure Amazon SES to send emails in the Email Subscribers plugin?"
4809
  msgstr ""
4810
 
4811
+ #: pro/pro-class-email-subscribers.php:1961
4812
  msgid "How to configure Postmark to send emails in the Email Subscribers plugin?"
4813
  msgstr ""
4814
 
4892
  msgid "Edit Sequence"
4893
  msgstr ""
4894
 
4895
+ #: pro/pro-class-sequences.php:107
 
 
 
 
4896
  msgid "Add Sequence name"
4897
  msgstr ""
4898
 
4899
+ #: pro/pro-class-sequences.php:108
4900
+ #: pro/pro-class-sequences.php:334
4901
  msgid "Save All"
4902
  msgstr ""
4903
 
4904
+ #: pro/pro-class-sequences.php:129
4905
  msgid "+ Add Email"
4906
  msgstr ""
4907
 
4908
+ #: pro/pro-class-sequences.php:169
4909
+ #: pro/pro-class-sequences.php:241
4910
  msgid "Sequence should have atleast one email"
4911
  msgstr ""
4912
 
4913
+ #: pro/pro-class-sequences.php:213
4914
  msgid "Sequence added successfully!"
4915
  msgstr ""
4916
 
4917
+ #: pro/pro-class-sequences.php:217
4918
  msgid "Sorry, you are not allowed to add sequence."
4919
  msgstr ""
4920
 
4921
+ #: pro/pro-class-sequences.php:316
4922
  msgid "Sequence updated successfully!"
4923
  msgstr ""
4924
 
4925
+ #: pro/pro-class-sequences.php:320
4926
  msgid "Sorry, you are not allowed to edit sequence."
4927
  msgstr ""
4928
 
4929
+ #: pro/pro-class-sequences.php:358
4930
+ #: pro/pro-class-sequences.php:443
4931
  msgid " day"
4932
  msgstr ""
4933
 
4934
+ #: pro/pro-class-sequences.php:358
4935
+ #: pro/pro-class-sequences.php:443
4936
  msgid " days"
4937
  msgstr ""
4938
 
4939
+ #: pro/pro-class-sequences.php:363
4940
+ #: pro/pro-class-sequences.php:401
4941
  msgid "Welcome"
4942
  msgstr ""
4943
 
 
4944
  #: pro/pro-class-sequences.php:366
4945
+ #: pro/pro-class-sequences.php:369
4946
  msgid "Delete this email"
4947
  msgstr ""
4948
 
4949
+ #: pro/pro-class-sequences.php:399
4950
  msgid "Email Subject"
4951
  msgstr ""
4952
 
4953
+ #: pro/pro-class-sequences.php:448
4954
  msgid "When to send"
4955
  msgstr ""
4956
 
4957
+ #: pro/pro-class-sequences.php:454
4958
  msgid " after subscription"
4959
  msgstr ""
4960
 
lite/public/class-email-subscribers-public.php CHANGED
@@ -209,6 +209,8 @@ class Email_Subscribers_Public {
209
  echo esc_html__( 'Sorry, you are not allowed to access this page.', 'email-subscribers' );
210
  die();
211
  }
 
 
212
  }
213
 
214
  $message = get_option( 'ig_es_unsubscribe_success_message' );
@@ -261,7 +263,6 @@ class Email_Subscribers_Public {
261
 
262
  } elseif ( in_array( $option, array( 'viewstatus', 'open' ) ) ) {
263
  if ( ! empty( $guid ) && ! empty( $email ) ) {
264
- ES_DB_Sending_Queue::update_viewed_status( $guid, $email, $message_id );
265
 
266
  if ( $campaign_id > 0 && $db_id > 0 ) {
267
  do_action( 'ig_es_message_open', $db_id, $message_id, $campaign_id );
209
  echo esc_html__( 'Sorry, you are not allowed to access this page.', 'email-subscribers' );
210
  die();
211
  }
212
+ } elseif ( ! empty( $_POST['List-Unsubscribe'] ) && 'One-Click' === $_POST['List-Unsubscribe'] ) {
213
+ $unsubscribe_lists = ES()->lists_contacts_db->get_list_ids_by_contact( $db_id, 'subscribed' );
214
  }
215
 
216
  $message = get_option( 'ig_es_unsubscribe_success_message' );
263
 
264
  } elseif ( in_array( $option, array( 'viewstatus', 'open' ) ) ) {
265
  if ( ! empty( $guid ) && ! empty( $email ) ) {
 
266
 
267
  if ( $campaign_id > 0 && $db_id > 0 ) {
268
  do_action( 'ig_es_message_open', $db_id, $message_id, $campaign_id );
readme.txt CHANGED
@@ -6,7 +6,7 @@ Tags: email marketing, subscription, autoresponder, post notification, welcome e
6
  Requires at least: 3.9
7
  Tested up to: 5.7.1
8
  Requires PHP: 5.6
9
- Stable tag: 4.7.1
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses
12
 
@@ -135,9 +135,15 @@ If you like Email Subscribers, please leave us a [⭐⭐⭐⭐⭐](https://wordp
135
 
136
  **Some of our other free plugins on WordPress.org**
137
 
138
- 1. [Icegram](https://wordpress.org/plugins/icegram/) - Popups, Welcome Bar, Opt-Ins and Lead Generation Plugin
139
- 2. [Rainmaker](https://wordpress.org/plugins/icegram-rainmaker/) - Best Forms Plugin on WordPress
140
- 3. [Temporary Login Without Password](https://wordpress.org/plugins/temporary-login-without-password/) -It's a handy tool to support our customers. We use it daily.
 
 
 
 
 
 
141
 
142
  == Installation ==
143
 
@@ -304,6 +310,13 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
304
 
305
  == Upgrade Notice ==
306
 
 
 
 
 
 
 
 
307
  **4.7.1 (30.04.2021)**
308
 
309
  * New: Send emails using Postmark batch API **[PRO]**
@@ -340,6 +353,13 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
340
 
341
  == Changelog ==
342
 
 
 
 
 
 
 
 
343
  **4.7.1 (30.04.2021)**
344
 
345
  * New: Send emails using Postmark batch API [PRO]
6
  Requires at least: 3.9
7
  Tested up to: 5.7.1
8
  Requires PHP: 5.6
9
+ Stable tag: 4.7.2
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses
12
 
135
 
136
  **Some of our other free plugins on WordPress.org**
137
 
138
+ [Icegram](https://wordpress.org/plugins/icegram/) - Popups, Welcome Bar, Opt-Ins and Lead Generation Plugin
139
+
140
+ [Rainmaker](https://wordpress.org/plugins/icegram-rainmaker/) - Best Forms Plugin on WordPress
141
+
142
+ [Temporary Login Without Password](https://wordpress.org/plugins/temporary-login-without-password/) -It's a handy tool to support our customers. We use it daily.
143
+
144
+ [Smart Manager](https://wordpress.org/plugins/smart-manager-for-wp-e-commerce/) - Manage & Bulk edit Products, Orders & more..
145
+
146
+ [Offermative](https://wordpress.org/plugins/offermative-discount-pricing-related-products-upsell-funnels-for-woocommerce/) - Dynamic discount pricing, related product recommendations, upsells and funnels for WooCommerce.
147
 
148
  == Installation ==
149
 
310
 
311
  == Upgrade Notice ==
312
 
313
+ **4.7.2 (12.05.2021)**
314
+
315
+ * New: Support for 'List-Unsubscribe' email header
316
+ * New: Support for 'Subscribed at' field while importing contacts through CSV
317
+ * Update: Support for Sendgrid batch email API [PRO]
318
+ * Update: Improved page load performance on Email Subscribers' admin pages
319
+
320
  **4.7.1 (30.04.2021)**
321
 
322
  * New: Send emails using Postmark batch API **[PRO]**
353
 
354
  == Changelog ==
355
 
356
+ **4.7.2 (12.05.2021)**
357
+
358
+ * New: Support for 'List-Unsubscribe' email header
359
+ * New: Support for 'Subscribed at' field while importing contacts through CSV
360
+ * Update: Support for Sendgrid batch email API [PRO]
361
+ * Update: Improved page load performance on Email Subscribers' admin pages
362
+
363
  **4.7.1 (30.04.2021)**
364
 
365
  * New: Send emails using Postmark batch API [PRO]