Email Subscribers & Newsletters - Version 4.4.7

Version Description

Download this release

Release Info

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

Code changes from version 4.4.6 to 4.4.7

Files changed (59) hide show
  1. email-subscribers.php +4 -4
  2. lite/admin/class-email-subscribers-admin.php +12 -4
  3. lite/admin/css/email-subscribers-admin.css +75 -2
  4. lite/admin/dist/main.css +1 -1
  5. lite/admin/images/spinner-2x.gif +0 -0
  6. lite/admin/js/email-subscribers-admin.js +225 -138
  7. lite/admin/partials/dashboard.php +20 -20
  8. lite/admin/partials/help.php +10 -10
  9. lite/includes/class-email-subscribers.php +2 -5
  10. lite/includes/class-es-common.php +85 -8
  11. lite/includes/classes/class-es-actions.php +26 -0
  12. lite/includes/classes/class-es-admin-settings.php +56 -29
  13. lite/includes/classes/class-es-campaigns-table.php +169 -97
  14. lite/includes/classes/class-es-contact-background-process.php +0 -1056
  15. lite/includes/classes/class-es-contacts-table.php +23 -15
  16. lite/includes/classes/class-es-cron.php +2 -2
  17. lite/includes/classes/class-es-export-subscribers.php +45 -186
  18. lite/includes/classes/class-es-form-widget.php +4 -3
  19. lite/includes/classes/class-es-forms-table.php +350 -335
  20. lite/includes/classes/class-es-handle-post-notification.php +2 -2
  21. lite/includes/classes/class-es-ig-redirect.php +4 -4
  22. lite/includes/classes/class-es-import-subscribers.php +242 -175
  23. lite/includes/classes/class-es-lists-table.php +10 -9
  24. lite/includes/classes/class-es-mailer.php +46 -11
  25. lite/includes/classes/class-es-newsletters.php +724 -161
  26. lite/includes/classes/class-es-old-widget.php +4 -4
  27. lite/includes/classes/class-es-post-notifications.php +7 -5
  28. lite/includes/classes/class-es-queue.php +16 -1
  29. lite/includes/classes/class-es-reports-table.php +4 -3
  30. lite/includes/classes/class-es-templates-table.php +22 -1
  31. lite/includes/db/class-es-db-mailing-queue.php +14 -0
  32. lite/includes/db/class-es-db.php +8 -1
  33. lite/includes/es-core-functions.php +1 -3
  34. lite/includes/feedback.php +47 -4
  35. lite/includes/feedback/class-ig-feedback.php +23 -11
  36. lite/includes/feedback/class-ig-tracker.php +3 -3
  37. lite/includes/libraries/action-scheduler/action-scheduler.php +8 -15
  38. lite/includes/libraries/action-scheduler/classes/ActionScheduler_ActionFactory.php +6 -6
  39. lite/includes/libraries/action-scheduler/classes/ActionScheduler_AdminView.php +19 -3
  40. lite/includes/libraries/action-scheduler/classes/ActionScheduler_Compatibility.php +1 -1
  41. lite/includes/libraries/action-scheduler/classes/ActionScheduler_DataController.php +2 -2
  42. lite/includes/libraries/action-scheduler/classes/ActionScheduler_ListTable.php +51 -3
  43. lite/includes/libraries/action-scheduler/classes/ActionScheduler_wcSystemStatus.php +0 -5
  44. lite/includes/libraries/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_Scheduler_command.php +2 -2
  45. lite/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler.php +13 -17
  46. lite/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php +5 -6
  47. lite/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_Schema.php +4 -2
  48. lite/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler_Logger.php +1 -1
  49. lite/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler_Store.php +1 -1
  50. lite/includes/libraries/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php +2 -1
  51. lite/includes/libraries/action-scheduler/classes/data-stores/ActionScheduler_HybridStore.php +84 -38
  52. lite/includes/libraries/action-scheduler/functions.php +27 -27
  53. lite/includes/pro-features.php +491 -239
  54. lite/includes/workflows/admin/views/meta-box-trigger.php +5 -4
  55. lite/includes/workflows/class-es-workflows-table.php +2 -2
  56. lite/languages/email-subscribers.pot +1101 -647
  57. lite/public/partials/class-es-shortcode.php +6 -9
  58. readme.txt +18 -4
  59. uninstall.php +1 -1
email-subscribers.php CHANGED
@@ -3,11 +3,11 @@
3
  * Plugin Name: Email Subscribers & Newsletters
4
  * Plugin URI: https://www.icegram.com/
5
  * Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
6
- * Version: 4.4.6
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
10
- * Tested up to: 5.4
11
  * Requires PHP: 5.6
12
  * Text Domain: email-subscribers
13
  * Domain Path: /lite/languages/
@@ -67,7 +67,7 @@ if ( ! version_compare( PHP_VERSION, IG_ES_MIN_PHP_VER, '>=' ) ) {
67
  * @since 4.3.0
68
  */
69
  if ( ! defined( 'IG_ES_FEEDBACK_TRACKER_VERSION' ) ) {
70
- define( 'IG_ES_FEEDBACK_TRACKER_VERSION', '1.2.2' );
71
  }
72
 
73
 
@@ -156,7 +156,7 @@ if ( $is_premium ) {
156
  /* ***************************** Initial Compatibility Work (End) ******************* */
157
 
158
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
159
- define( 'ES_PLUGIN_VERSION', '4.4.6' );
160
  }
161
 
162
  // 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.4.7
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
10
+ * Tested up to: 5.4.1
11
  * Requires PHP: 5.6
12
  * Text Domain: email-subscribers
13
  * Domain Path: /lite/languages/
67
  * @since 4.3.0
68
  */
69
  if ( ! defined( 'IG_ES_FEEDBACK_TRACKER_VERSION' ) ) {
70
+ define( 'IG_ES_FEEDBACK_TRACKER_VERSION', '1.2.3' );
71
  }
72
 
73
 
156
  /* ***************************** Initial Compatibility Work (End) ******************* */
157
 
158
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
159
+ define( 'ES_PLUGIN_VERSION', '4.4.7' );
160
  }
161
 
162
  // Plugin Folder Path.
lite/admin/class-email-subscribers-admin.php CHANGED
@@ -118,9 +118,17 @@ class Email_Subscribers_Admin {
118
 
119
  wp_enqueue_script( $this->email_subscribers, plugin_dir_url( __FILE__ ) . 'js/email-subscribers-admin.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-tabs' ), $this->version, false );
120
 
 
 
121
  $ig_es_js_data = array(
122
- 'ajax_error_message' => __( 'An error has occured. Please try again later.', 'email-subscribers' ),
123
- 'security' => wp_create_nonce( 'ig-es-admin-ajax-nonce' ),
 
 
 
 
 
 
124
  );
125
 
126
  wp_localize_script( $this->email_subscribers, 'ig_es_js_data', $ig_es_js_data );
@@ -152,6 +160,7 @@ class Email_Subscribers_Admin {
152
  if ( ! empty( $get_page ) && 'es_dashboard' === $get_page ) {
153
  wp_enqueue_script( 'frappe-js', plugin_dir_url( __FILE__ ) . 'js/frappe-charts.min.life.js', array( 'jquery' ), $this->version, false );
154
  }
 
155
  }
156
 
157
  public function remove_submenu() {
@@ -636,7 +645,6 @@ class Email_Subscribers_Admin {
636
  'custom_admin_notice',
637
  'output_custom_notices',
638
  'ig_es_fail_php_version_notice',
639
- 'contact_background_notice'
640
  );
641
 
642
  // User admin notices
@@ -753,4 +761,4 @@ class Email_Subscribers_Admin {
753
 
754
  return $footer_text;
755
  }
756
- }
118
 
119
  wp_enqueue_script( $this->email_subscribers, plugin_dir_url( __FILE__ ) . 'js/email-subscribers-admin.js', array( 'jquery', 'jquery-ui-core', 'jquery-ui-tabs' ), $this->version, false );
120
 
121
+
122
+
123
  $ig_es_js_data = array(
124
+ 'security' => wp_create_nonce( 'ig-es-admin-ajax-nonce' ),
125
+ 'i18n_data' => array(
126
+ 'ajax_error_message' => __( 'An error has occured. Please try again later.', 'email-subscribers' ),
127
+ 'broadcast_draft_success_message' => __( 'Broadcast saved as draft successfully.', 'email-subscribers' ),
128
+ 'broadcast_draft_error_message' => __( 'An error has occured while saving the broadcast. Please try again later.', 'email-subscribers' ),
129
+ 'broadcast_subject_empty_message' => __( 'Please add a broadcast subject before saving.', 'email-subscribers' ),
130
+ 'empty_template_message' => __( 'Please add email body.', 'email-subscribers' ),
131
+ ),
132
  );
133
 
134
  wp_localize_script( $this->email_subscribers, 'ig_es_js_data', $ig_es_js_data );
160
  if ( ! empty( $get_page ) && 'es_dashboard' === $get_page ) {
161
  wp_enqueue_script( 'frappe-js', plugin_dir_url( __FILE__ ) . 'js/frappe-charts.min.life.js', array( 'jquery' ), $this->version, false );
162
  }
163
+
164
  }
165
 
166
  public function remove_submenu() {
645
  'custom_admin_notice',
646
  'output_custom_notices',
647
  'ig_es_fail_php_version_notice',
 
648
  );
649
 
650
  // User admin notices
761
 
762
  return $footer_text;
763
  }
764
+ }
lite/admin/css/email-subscribers-admin.css CHANGED
@@ -3,6 +3,14 @@
3
  color: #FFFFFF;
4
  }
5
 
 
 
 
 
 
 
 
 
6
  .es-lists-table .column-created_at{
7
  width:20%;
8
  }
@@ -1007,11 +1015,11 @@ a.button-send:hover, .es-error-actions .es-dashboard-btn:hover {
1007
  color: white !important;
1008
  }
1009
 
1010
- .es-send-email-screen img.es-loader {
1011
  display: inline-block;
1012
  vertical-align: middle;
1013
  margin-right: 1em;
1014
- }
1015
 
1016
  .sp input[type="email"].error {
1017
  border: 1px solid red;
@@ -1775,4 +1783,69 @@ body.email-subscribers_page_es_workflows #post-body .postbox .inside {
1775
  li.menu-top div.wp-menu-image img {
1776
  border-style: none !important;
1777
  display: inline;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1778
  }
3
  color: #FFFFFF;
4
  }
5
 
6
+ ul#menu-nav li.active {
7
+ background-color: #5a67d8;
8
+ }
9
+
10
+ #menu-nav li a.active {
11
+ color: #FFF;
12
+ }
13
+
14
  .es-lists-table .column-created_at{
15
  width:20%;
16
  }
1015
  color: white !important;
1016
  }
1017
 
1018
+ /*.es-send-email-screen img.es-loader {
1019
  display: inline-block;
1020
  vertical-align: middle;
1021
  margin-right: 1em;
1022
+ }*/
1023
 
1024
  .sp input[type="email"].error {
1025
  border: 1px solid red;
1783
  li.menu-top div.wp-menu-image img {
1784
  border-style: none !important;
1785
  display: inline;
1786
+ }
1787
+
1788
+ /** Broadcast New UI CSS */
1789
+ /* input[type="date"]::-webkit-inner-spin-button,
1790
+ input[type="date"]::-webkit-clear-button {
1791
+ display: none;
1792
+ -webkit-appearance: none;
1793
+ } */
1794
+
1795
+ /*#progressbar {
1796
+ counter-reset: step;
1797
+ }*/
1798
+ #progressbar li:before {
1799
+ /* content: counter(step);
1800
+ counter-increment: step;*/
1801
+ width: 20px;
1802
+ line-height: 20px;
1803
+ display: inline-block;
1804
+ font-size: 10px;
1805
+ color: #333;
1806
+ background: white;
1807
+ border-radius: 3px;
1808
+ margin: 0 auto 5px auto;
1809
+ }
1810
+ /* color change after active */
1811
+ #progressbar li.active{
1812
+ border-bottom: 2px solid #5a67d8;
1813
+ }
1814
+ #progressbar li:hover {
1815
+ border-bottom: 2px solid rgb(90, 103,216, 0.5);
1816
+ }
1817
+
1818
+ #progressbar li.active span{
1819
+ color: #2d3748;
1820
+ }
1821
+
1822
+ #preview_template, #spam_score_modal{
1823
+ display: none;
1824
+ }
1825
+
1826
+ .broadcast_preview_container {
1827
+ height: 300px;
1828
+ overflow: hidden;
1829
+ overflow-y: auto;
1830
+ }
1831
+
1832
+ /* Broadcast status icons CSS */
1833
+ body.email-subscribers_page_es_campaigns .column-status .dashicons {
1834
+ position: relative;
1835
+ left: 10px;
1836
+ }
1837
+
1838
+ body.email-subscribers_page_es_campaigns .column-status .dashicons[title="Finished"] {
1839
+ color: #0e9f6e;
1840
+ }
1841
+ div.broadcast_main_content{
1842
+ width: 70% ;
1843
+ }
1844
+
1845
+ div.broadcast_side_content{
1846
+ width: 30% ;
1847
+ }
1848
+
1849
+ .es-preview.broadcast-preview p {
1850
+ margin : 1em 0 !important;
1851
  }
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;padding:0}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{color:#1c64f2}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{-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: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: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{border-color:transparent}.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: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");border-color:transparent;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: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}.ig-es-primary-button,.ig-es-send-queue-emails{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;padding:.5rem 1rem;background-color:#fff;font-size:.875rem;line-height:1.25rem;font-weight:500;color:#fff;background-color:#5850ec;-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{font-size:.875rem;border-radius:.375rem;border-width:1px;border-color:#5850ec;line-height:1.25rem;font-weight:500}.wp-heading-inline+.page-title-action{color:#1c64f2;padding:.5rem;margin-left:.5rem;margin-right:.5rem}.ig-es-title-button:hover,.wp-heading-inline+.page-title-action:hover{border-color:#6875f5;background-color:#f4f5f7}.ig-es-primary-button:hover{background-color:#6875f5;color:#fff}.ig-es-primary-button:focus,.ig-es-title-button:focus,.wp-heading-inline+.page-title-action:focus{outline:0;-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;font-size:.875rem!important;line-height:1.25rem!important;font-weight:500!important;color:#fff!important;background-color:#0e9f6e!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:hover{background-color:#31c48d!important;color:#fff!important}.ig-es-imp-button:focus{outline:0!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;font-size:.875rem;line-height:1.25rem;font-weight:500;color:#fff;background-color:#ff5a1f;-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:hover{background-color:#ff8a4c;color:#fff}.ig-es-link-button:focus{outline:0;-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{background-color:#5850ec;color:#fff}.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{color:#5850ec!important}.form-select{font-size:.875rem!important;border-color:#9fa6b2!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:0!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-color:#a4cafe!important}.es-check-toggle:checked~.es-mail-toggle-line{background-color:#5850ec}.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%}[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 3px #5a67d8;box-shadow:0 0 3px 3px #5a67d8}.bg-white{background-color:#fff}.bg-gray-100{background-color:#f4f5f7}.bg-gray-200{background-color:#e5e7eb}.bg-gray-300{background-color:#d2d6dc}.bg-green-100{background-color:#def7ec}.bg-green-600{background-color:#057a55}.bg-indigo-500{background-color:#6875f5}.bg-indigo-600{background-color:#5850ec}.bg-indigo-800{background-color:#42389d}.hover\:bg-gray-50:hover{background-color:#f9fafb}.hover\:bg-gray-100:hover{background-color:#f4f5f7}.hover\:bg-green-500:hover{background-color:#0e9f6e}.hover\:bg-indigo-500:hover{background-color:#6875f5}.focus\:bg-gray-50:focus{background-color:#f9fafb}.focus\:bg-gray-100:focus{background-color:#f4f5f7}.border-collapse{border-collapse:collapse}.border-transparent{border-color:transparent}.border-gray-100{border-color:#f4f5f7}.border-gray-200{border-color:#e5e7eb}.border-gray-300{border-color:#d2d6dc}.border-gray-400{border-color:#9fa6b2}.border-indigo-600{border-color:#5850ec}.hover\:border-gray-200:hover{border-color:#e5e7eb}.hover\:border-indigo-500:hover{border-color:#6875f5}.focus\:border-blue-300:focus{border-color:#a4cafe}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-full{border-radius:9999px}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.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-pointer{cursor:pointer}.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}.grid{display:grid}.table{display:table}.table-cell{display:table-cell}.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}.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}.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-shrink-0{-ms-flex-negative:0;flex-shrink:0}.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-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.leading-4{line-height:1rem}.leading-5{line-height:1.25rem}.leading-6{line-height:1.5rem}.leading-7{line-height:1.75rem}.leading-none{line-height:1}.leading-snug{line-height:1.375}.leading-normal{line-height:1.5}.leading-relaxed{line-height:1.625}.list-disc{list-style-type:disc}.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-4{margin-top:1rem;margin-bottom:1rem}.mx-4{margin-left:1rem;margin-right:1rem}.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-auto{margin-left:auto;margin-right:auto}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.mt-1{margin-top:.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}.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-8{margin-top:2rem}.mr-8{margin-right:2rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.ml-12{margin-left:3rem}.ml-16{margin-left:4rem}.mr-1\.5{margin-right:.375rem}.-mr-1{margin-right:-.25rem}.max-h-full{max-height:100%}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.opacity-0{opacity:0}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-hidden{overflow:hidden}.p-2{padding:.5rem}.p-3{padding:.75rem}.py-1{padding-top:.25rem;padding-bottom:.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}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.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}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.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}.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}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pl-16{padding-left:4rem}.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-y-0{top:0;bottom:0}.right-0{right:0}.left-0{left:0}.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-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-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-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)}.text-left{text-align:left}.text-center{text-align:center}.text-white{color:#fff}.text-black{color:#000}.text-gray-400{color:#9fa6b2}.text-gray-500{color:#6b7280}.text-gray-600{color:#4b5563}.text-gray-700{color:#374151}.text-gray-800{color:#252f3f}.text-gray-900{color:#161e2e}.text-red-600{color:#e02424}.text-orange-400{color:#ff8a4c}.text-orange-500{color:#ff5a1f}.text-yellow-400{color:#e3a008}.text-green-400{color:#31c48d}.text-green-600{color:#057a55}.text-green-800{color:#03543f}.text-blue-500{color:#3f83f8}.text-blue-700{color:#1a56db}.text-indigo-100{color:#e5edff}.text-indigo-400{color:#8da2fb}.text-indigo-500{color:#6875f5}.text-indigo-600{color:#5850ec}.hover\:text-white:hover{color:#fff}.hover\:text-gray-800:hover{color:#252f3f}.hover\:text-gray-900:hover{color:#161e2e}.hover\:text-blue-700:hover{color:#1a56db}.hover\:text-indigo-500:hover{color:#6875f5}.focus\:text-white:focus{color:#fff}.active\:text-gray-900:active,.focus\:text-gray-900:focus{color:#161e2e}.active\:text-indigo-600:active{color:#5850ec}.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-4xl{font-size:2.25rem}.italic{font-style:italic}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.align-middle{vertical-align:middle}.whitespace-no-wrap{white-space:nowrap}.w-0{width:0}.w-4{width:1rem}.w-5{width:1.25rem}.w-8{width:2rem}.w-10{width:2.5rem}.w-40{width:10rem}.w-56{width:14rem}.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-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-9\/12{width:75%}.w-11\/12{width:91.666667%}.w-full{width:100%}.z-20{z-index:20}.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}.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}.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-300{-webkit-transition-duration:.3s;transition-duration:.3s}@media (min-width:640px){.sm\:rounded{border-radius:.25rem}.sm\:rounded-md{border-radius:.375rem}.sm\:border-r{border-right-width:1px}.sm\:border-l{border-left-width:1px}.sm\:grid{display:grid}.sm\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.sm\:leading-5{line-height:1.25rem}.sm\:leading-9{line-height:2.25rem}.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\:text-sm{font-size:.875rem}.sm\:text-2xl{font-size:1.5rem}.sm\:text-3xl{font-size:1.875rem}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-32{width:8rem}.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\: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-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.md\:justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.md\:my-2{margin-top:.5rem;margin-bottom:.5rem}.md\:mt-0{margin-top:0}.md\:ml-4{margin-left:1rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.md\:text-base{font-size:1rem}}@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\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.lg\:grid{display:grid}.lg\:my-0{margin-top:0;margin-bottom:0}.lg\:mx-5{margin-left:1.25rem;margin-right:1.25rem}.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\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:text-sm{font-size:.875rem}.lg\:text-lg{font-size:1.125rem}.lg\:w-40{width:10rem}.lg\:w-3\/12{width:25%}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (min-width:1280px){.xl\:mx-7{margin-left:1.75rem;margin-right:1.75rem}.xl\:pb-4{padding-bottom:1rem}.xl\:w-2\/12{width:16.666667%}}
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;padding:0}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{-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: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: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{border-color:transparent}.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: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");border-color:transparent;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: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}.ig-es-primary-button,.ig-es-send-queue-emails{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;padding:.5rem 1rem;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity));font-size:.875rem;line-height:1.25rem;font-weight:500;--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity));--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,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-title-button,.wp-heading-inline+.page-title-action{font-size:.875rem;border-radius:.375rem;border-width:1px;--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));line-height:1.25rem;font-weight:500}.wp-heading-inline+.page-title-action{--text-opacity:1;color:#1c64f2;color:rgba(28,100,242,var(--text-opacity));padding:.5rem;margin-left:.5rem;margin-right:.5rem}.ig-es-title-button:hover,.wp-heading-inline+.page-title-action:hover{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,var(--border-opacity));--bg-opacity:1;background-color:#f4f5f7;background-color:rgba(244,245,247,var(--bg-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,.ig-es-title-button:focus,.wp-heading-inline+.page-title-action:focus{outline:0;-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:0!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:0;-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:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));--text-opacity:1;color:#fff;color:rgba(255,255,255,var(--text-opacity))}.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:0!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%}[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 3px #5a67d8;box-shadow:0 0 3px 3px #5a67d8}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,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-green-100{--bg-opacity:1;background-color:#def7ec;background-color:rgba(222,247,236,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-teal-100{--bg-opacity:1;background-color:#d5f5f6;background-color:rgba(213,245,246,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-800{--bg-opacity:1;background-color:#42389d;background-color:rgba(66,56,157,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-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))}.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))}.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-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-gray-500:hover{--border-opacity:1;border-color:#6b7280;border-color:rgba(107,114,128,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-500:hover{--border-opacity:1;border-color:#6875f5;border-color:rgba(104,117,245,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}.border-solid{border-style:solid}.border-dashed{border-style:dashed}.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-auto{cursor:auto}.cursor-pointer{cursor:pointer}.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-cell{display:table-cell}.grid{display:grid}.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}.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}.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}.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-normal{font-weight:400}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.h-0{height:0}.h-3{height:.75rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-10{height:2.5rem}.h-15{height:3.75rem}.h-20{height:5rem}.h-48{height:12rem}.h-auto{height:auto}.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-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-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-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}.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-auto{margin-left:auto;margin-right:auto}.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}.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-8{margin-top:2rem}.mr-8{margin-right:2rem}.mr-10{margin-right:2.5rem}.mt-12{margin-top:3rem}.ml-12{margin-left:3rem}.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-3\.5{margin-top:.875rem}.-mr-1{margin-right:-.25rem}.max-h-full{max-height:100%}.max-w-7xl{max-width:80rem}.max-w-full{max-width:100%}.min-w-0{min-width:0}.min-w-full{min-width:100%}.opacity-0{opacity:0}.opacity-100{opacity:1}.focus\:outline-none:focus{outline:0}.overflow-hidden{overflow:hidden}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.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-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.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}.pb-2{padding-bottom:.5rem}.pl-2{padding-left:.5rem}.pt-3{padding-top:.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}.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}.pl-10{padding-left:2.5rem}.pr-12{padding-right:3rem}.pl-16{padding-left:4rem}.pt-1\.5{padding-top:.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-y-0{top:0;bottom:0}.top-0{top:0}.right-0{right:0}.left-0{left:0}.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)}.text-left{text-align:left}.text-center{text-align:center}.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-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-600{--text-opacity:1;color:#e02424;color:rgba(224,36,36,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-green-400{--text-opacity:1;color:#31c48d;color:rgba(49,196,141,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-500{--text-opacity:1;color:#0694a2;color:rgba(6,148,162,var(--text-opacity))}.text-teal-700{--text-opacity:1;color:#036672;color:rgba(3,102,114,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))}.hover\:text-white:hover{--text-opacity:1;color:#fff;color:rgba(255,255,255,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-white:focus{--text-opacity:1;color:#fff;color:rgba(255,255,255,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))}.italic{font-style:italic}.uppercase{text-transform:uppercase}.underline{text-decoration:underline}.no-underline{text-decoration:none}.antialiased{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.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}.align-middle{vertical-align:middle}.whitespace-no-wrap{white-space:nowrap}.w-0{width:0}.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-10{width:2.5rem}.w-40{width:10rem}.w-56{width:14rem}.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-9\/12{width:75%}.w-11\/12{width:91.666667%}.w-full{width:100%}.z-20{z-index:20}.z-50{z-index:50}.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}.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}.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-300{-webkit-transition-duration:.3s;transition-duration:.3s}@media (min-width:640px){.sm\:rounded{border-radius:.25rem}.sm\:rounded-md{border-radius:.375rem}.sm\:border-r{border-right-width:1px}.sm\:border-l{border-left-width:1px}.sm\:grid{display:grid}.sm\:justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.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\: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\:px-8{padding-left:2rem;padding-right:2rem}.sm\:truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sm\:w-32{width:8rem}.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\: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-end{-webkit-box-pack:end;-ms-flex-pack:end;justify-content:flex-end}.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\: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\:pb-2{padding-bottom:.5rem}.md\:pr-4{padding-right:1rem}.md\:pt-6{padding-top:1.5rem}.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\:inline-flex{display:-webkit-inline-box;display:-ms-inline-flexbox;display:inline-flex}.lg\:grid{display:grid}.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\:ml-16{margin-left:4rem}.lg\:-mr-16{margin-right:-4rem}.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-7{padding-left:1.75rem;padding-right:1.75rem}.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\:shadow-none{-webkit-box-shadow:none;box-shadow:none}.lg\:w-40{width:10rem}.lg\:w-1\/2{width:50%}.lg\:w-3\/12{width:25%}.lg\:w-7\/12{width:58.333333%}.lg\:grid-cols-2{grid-template-columns:repeat(2,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\:px-4{padding-left:1rem;padding-right:1rem}.xl\:pb-4{padding-bottom:1rem}.xl\:w-3\/5{width:60%}.xl\:w-2\/12{width:16.666667%}}
lite/admin/images/spinner-2x.gif ADDED
Binary file
lite/admin/js/email-subscribers-admin.js CHANGED
@@ -14,7 +14,20 @@
14
 
15
  $('.es_visible').change();
16
 
17
- $('#tabs-signup_confirmation, #tabs-email_sending, #tabs-security_settings, #tabs-user_roles').hide();
 
 
 
 
 
 
 
 
 
 
 
 
 
18
 
19
  $('#tabs-general').show();
20
 
@@ -26,22 +39,57 @@
26
  var target = $(this).attr('href');
27
  $('.setting-content' + target).show();
28
  return false;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
29
  });
30
 
31
 
32
- /*$('#es-settings-tabs').tabs().addClass('ui-tabs-vertical ui-helper-clearfix');
 
 
 
33
 
34
- var defaultHeight = $('div#es-settings-tabs div#menu-tab-content div#tabs-general').height() + 30;
35
- $('div#es-settings-tabs div#menu-tab-listing ul').height(defaultHeight);
 
 
 
 
36
 
37
- // Set Tab Height
38
- $('.ui-tabs-anchor').click(function() {
39
- var tab = $(this).attr('href');
40
- $('#email_tabs_form').attr('action', tab);
41
- var tabHight = $('div#es-settings-tabs div#menu-tab-content div' + tab).height() + 30;
42
- $('div#es-settings-tabs div#menu-tab-listing ul').height(tabHight);
43
  });
44
- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
45
 
46
  if (jQuery('.statusesselect').length) {
47
  var statusselect = jQuery('.statusesselect')[0].outerHTML;
@@ -207,8 +255,10 @@
207
  response = JSON.parse(response);
208
  if (response.hasOwnProperty('total')) {
209
  var total = response.total;
210
- var total_contacts_text = "<b>Total Contacts: " + total + "</b>";
 
211
  $('#ig_es_total_contacts').html(total_contacts_text);
 
212
  if (total == 0) {
213
  $('#ig_es_campaign_submit_button').attr("disabled", true);
214
  } else {
@@ -238,10 +288,13 @@
238
  if (response.hasOwnProperty('subject')) {
239
  jQuery('.wp-editor-boradcast').val(response.body);
240
  if ('undefined' !== typeof tinyMCE) {
 
241
  var activeEditor = tinyMCE.get('edit-es-boradcast-body');
 
242
  if (activeEditor !== null) { // Make sure we're not calling setContent on null
243
  response.body = response.body.replace(/\n/g, "<br />");
244
  activeEditor.setContent(response.body); // Update tinyMCE's content
 
245
  }
246
  }
247
 
@@ -251,6 +304,11 @@
251
  if (response.es_utm_campaign && jQuery('#es_utm_campaign').length) {
252
  jQuery('#es_utm_campaign').val(response.es_utm_campaign);
253
  }
 
 
 
 
 
254
  }
255
  }
256
  }
@@ -290,6 +348,7 @@
290
  jQuery(this).unbind('submit').submit();
291
  }
292
  });
 
293
  jQuery(document).on('click', '#ig_es_campaign_submit_button', function (e) {
294
  if (jQuery('.wp-editor-boradcast').val() !== '') {
295
  jQuery('.es-form').find('form').attr('target', '');
@@ -299,11 +358,10 @@
299
  //add target new to go pro
300
  jQuery('a[href="admin.php?page=es_pricing"]').attr('target', '_blank').attr('href', 'https://www.icegram.com/email-subscribers-pricing/');
301
 
302
- $('.ig-es-campaign-status-toggle-label').click(function (e) {
303
- e.preventDefault();
304
- let checkbox_elem = $(this).find('.es-check-toggle');
305
- let campaign_id = $(checkbox_elem).val();
306
- let new_campaign_status = $(checkbox_elem).prop('checked') ? 0 : 1;
307
  let data = {
308
  action: 'ig_es_toggle_campaign_status',
309
  campaign_id: campaign_id,
@@ -316,160 +374,189 @@
316
  data: data,
317
  dataType: 'json',
318
  success: function (response) {
319
- if (response.success) {
320
- $(checkbox_elem).prop('checked', new_campaign_status);
321
- } else {
322
- alert(ig_es_js_data.ajax_error_message);
323
  }
324
  },
325
  error: function (err) {
326
- alert(ig_es_js_data.ajax_error_message);
327
  }
328
  });
329
  });
330
 
331
- // Contact background import/export code.
332
- if( 'undefined' !== typeof background_process_data ) {
333
 
334
- jQuery('body').on('click', '.download-csv-wrapper a', function(){
335
- jQuery('.download-csv-wrapper').hide('slow');
336
- });
337
 
338
- if( '' !== background_process_data.notice_html ) {
339
- let notice_html = jQuery.parseHTML(background_process_data.notice_html);
340
- jQuery(notice_html).insertAfter( '.wp-heading-inline' );
 
 
 
341
  }
342
 
343
- if( 'running' === background_process_data.status ) {
344
- background_progress_interval_callback = setInterval(function(){
345
- ig_es_check_contact_background_progress();
346
- },5000);
347
  }
348
- jQuery('body').on('click', '#ig-es-cancel-contact-background-process', function(e){
349
- e.preventDefault();
350
- ig_es_cancel_contact_background_process();
351
- });
352
- }
353
- });
354
-
355
- })(jQuery);
356
 
357
- function checkDelete() {
358
- return confirm('Are you sure?');
359
- }
360
 
361
- // Clear interval callback for background progress.
362
- var background_progress_interval_callback = null;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
363
 
364
- // Background request object.
365
- var background_progress_request = null;
366
 
367
- function ig_es_start_contact_background_progress_percentage( progress_data, target_dom ) {
368
- let target_element_wrapper = target_dom.find('#ig_es_contact_background_prcess_percentage_wrapper');
369
- let target_element = target_dom.find('#ig_es_background_process_percentage');
370
- let percent_completion = progress_data.percent_completion;
371
 
372
- target_element_wrapper.show();
373
- target_element.text(percent_completion + '%');
374
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
375
 
376
- function ig_es_disable_import_form() {
377
- if( 1 === jQuery('#ig_es_contact_background_progress').length ) {
378
- jQuery('form#form_addemail').find('[name="submit"]').attr('disabled','disabled');
379
- }
380
- }
381
 
382
- function ig_es_enable_import_form() {
383
- if( 1 === jQuery('#ig_es_contact_background_results').length ) {
384
- jQuery('form#form_addemail').find('[name="submit"]').removeAttr('disabled');
385
- }
386
- }
 
 
 
387
 
388
- function ig_es_check_contact_background_progress() {
389
- ig_es_disable_import_form();
390
- background_progress_request = jQuery.ajax({
391
- url: ajaxurl,
392
- method: 'post',
393
- dataType: 'json',
394
- data: {
395
- action: 'ig_es_contact_background_progress',
396
- security: ig_es_js_data.security
397
- },
398
- success: function( response ) {
399
 
400
- let percent_completion = response.percent_completion;
 
 
 
 
 
401
 
402
- let progress_data = {
403
- percent_completion: response.percent_completion
404
- }
405
 
406
- let target_dom = jQuery('#ig_es_contact_background_progress');
407
 
408
- if ( response.percent_completion !== undefined && response.percent_completion !== '' ) {
409
- if( 100 == response.percent_completion) {
410
- clearInterval(background_progress_interval_callback);
411
- ig_es_get_background_process_results();
412
- }
413
- target_dom.show();
414
- ig_es_start_contact_background_progress_percentage( progress_data, target_dom );
415
- }
416
- }
417
- });
418
  }
419
 
 
 
 
420
 
421
- function ig_es_get_background_process_results() {
422
- jQuery.ajax({
423
- url: ajaxurl,
424
- method: 'post',
425
- dataType: 'json',
426
- data: {
427
- action: 'ig_es_get_background_process_results',
428
- security: ig_es_js_data.security
429
- },
430
- success: function( response ) {
431
- if( 'undefined' !== typeof response.response_html && '' !== response.response_html ) {
432
-
433
- // Check if results already shown then return.
434
- if( 1 === jQuery('#ig_es_contact_background_results').length ) {
435
- return;
436
- }
437
 
438
- let result_html = jQuery.parseHTML( response.response_html );
439
- // If there is background process progress message being shown then replace it with background process result html else show background process result after page heading.
440
- if( 1 === jQuery('#ig_es_contact_background_progress').length ) {
441
- jQuery('#ig_es_contact_background_progress').replaceWith( result_html );
442
- } else {
443
- jQuery(result_html).insertAfter( '.wp-heading-inline' );
444
- }
445
- ig_es_enable_import_form();
446
- }
447
- }
448
- });
449
- }
450
 
451
- function ig_es_cancel_contact_background_process() {
452
- clearInterval(background_progress_interval_callback);
 
 
 
 
 
 
 
 
453
  jQuery.ajax({
 
454
  url: ajaxurl,
455
- method: 'post',
456
  dataType: 'json',
457
- beforeSend: function() {
458
- // Cancel previous request for checking background progress.
459
- if( null !== background_progress_request) {
460
- background_progress_request.abort();
 
 
 
 
 
 
461
  }
462
  },
463
- data: {
464
- action: 'ig_es_cancel_contact_background_process',
465
- security: ig_es_js_data.security
466
- },
467
- success: function( response ) {
468
- if( 'undefined' !== typeof response.response_html && '' !== response.response_html ) {
469
- let response_html = jQuery.parseHTML( response.response_html );
470
- jQuery('#ig_es_contact_background_progress').replaceWith( response_html );
471
- ig_es_enable_import_form();
472
- }
473
  }
 
 
474
  });
475
- }
14
 
15
  $('.es_visible').change();
16
 
17
+ $('#menu-nav li:first-child').addClass('active').find('a').addClass('active');
18
+ $('.setting-content').hide();
19
+ $('.setting-content:first').show();
20
+
21
+ $('#menu-nav li').click(function(){
22
+ $('#menu-nav li,#menu-nav li a').removeClass('active');
23
+ $(this).addClass('active').find('a').addClass('active');
24
+ $('.setting-content').hide();
25
+ var activeTab = $(this).find('a').attr('href');
26
+ $(activeTab).show();
27
+ return false;
28
+ });
29
+
30
+ /*$('#tabs-signup_confirmation, #tabs-email_sending, #tabs-security_settings, #tabs-user_roles').hide();
31
 
32
  $('#tabs-general').show();
33
 
39
  var target = $(this).attr('href');
40
  $('.setting-content' + target).show();
41
  return false;
42
+ });*/
43
+
44
+ $(".next_btn, #summary_menu").click(function() {
45
+ var $fieldset = $(this).closest('.es_fieldset');
46
+ $fieldset.next().find('div.es_broadcast_second').fadeIn('normal');
47
+ $fieldset.find('.es_broadcast_first').hide();
48
+
49
+ $fieldset.find('#broadcast_button1,#broadcast_button2').show();
50
+ $fieldset.find('#broadcast_button').hide();
51
+
52
+ $('#content_menu').removeClass("active");
53
+ $('#summary_menu').addClass("active");
54
+ //$('.active').removeClass('active').next().addClass('active');
55
+
56
+ // Trigger template content changed event to update email preview.
57
+ $('.wp-editor-boradcast').trigger('change');
58
+
59
  });
60
 
61
 
62
+ $(".pre_btn, #content_menu").click(function() {
63
+ var $fieldset = $(this).closest('.es_fieldset');
64
+ $fieldset.find('.es_broadcast_first').fadeIn('normal');
65
+ $fieldset.next().find('.es_broadcast_second').hide();
66
 
67
+ $fieldset.find('#broadcast_button').show();
68
+ $fieldset.find('#broadcast_button1, #broadcast_button2').hide();
69
+
70
+ $('#summary_menu').removeClass("active");
71
+ $('#content_menu').addClass("active");
72
+ //$('.active').removeClass('active').prev().addClass('active');
73
 
 
 
 
 
 
 
74
  });
75
+
76
+ $("input:radio[name='broadcast_data[scheduling_option]']").click(function() {
77
+
78
+ let scheduling_option = $(this).val();
79
+ if( 'schedule_later' === scheduling_option ) {
80
+ $('.display_schedule').removeClass('hidden');
81
+ } else {
82
+ $('.display_schedule').addClass('hidden');
83
+ }
84
+ });
85
+
86
+ $('#preview_template').hide();
87
+ $('#spam_score_modal').hide();
88
+
89
+ $("#close_template").on('click', function (event) {
90
+ event.preventDefault();
91
+ $('#preview_template').hide();
92
+ });
93
 
94
  if (jQuery('.statusesselect').length) {
95
  var statusselect = jQuery('.statusesselect')[0].outerHTML;
255
  response = JSON.parse(response);
256
  if (response.hasOwnProperty('total')) {
257
  var total = response.total;
258
+ var total_contacts_text = "<h2 class='text-sm font-normal text-gray-600'>Total Contacts: <span class='text-base font-medium text-gray-700'> " + total + "</span></h2>";
259
+ var total_recipients_text = "<span class='font-medium text-base text-gray-700'>" + total + " <span class='text-base font-medium text-gray-700'></span><span class='font-normal text-sm text-gray-500'> recipients </span>";
260
  $('#ig_es_total_contacts').html(total_contacts_text);
261
+ $('#ig_es_total_recipients').html(total_recipients_text);
262
  if (total == 0) {
263
  $('#ig_es_campaign_submit_button').attr("disabled", true);
264
  } else {
288
  if (response.hasOwnProperty('subject')) {
289
  jQuery('.wp-editor-boradcast').val(response.body);
290
  if ('undefined' !== typeof tinyMCE) {
291
+
292
  var activeEditor = tinyMCE.get('edit-es-boradcast-body');
293
+
294
  if (activeEditor !== null) { // Make sure we're not calling setContent on null
295
  response.body = response.body.replace(/\n/g, "<br />");
296
  activeEditor.setContent(response.body); // Update tinyMCE's content
297
+
298
  }
299
  }
300
 
304
  if (response.es_utm_campaign && jQuery('#es_utm_campaign').length) {
305
  jQuery('#es_utm_campaign').val(response.es_utm_campaign);
306
  }
307
+
308
+ if( 1 === $('#edit-es-boradcast-body').length ) {
309
+ tinyMCE.triggerSave();
310
+ $('#edit-es-boradcast-body').trigger('change');
311
+ }
312
  }
313
  }
314
  }
348
  jQuery(this).unbind('submit').submit();
349
  }
350
  });
351
+
352
  jQuery(document).on('click', '#ig_es_campaign_submit_button', function (e) {
353
  if (jQuery('.wp-editor-boradcast').val() !== '') {
354
  jQuery('.es-form').find('form').attr('target', '');
358
  //add target new to go pro
359
  jQuery('a[href="admin.php?page=es_pricing"]').attr('target', '_blank').attr('href', 'https://www.icegram.com/email-subscribers-pricing/');
360
 
361
+ $('.ig-es-campaign-status-toggle-label input[type="checkbox"]').change(function() {
362
+ let checkbox_elem = $(this);
363
+ let campaign_id = $(checkbox_elem).val();
364
+ let new_campaign_status = $(checkbox_elem).prop('checked') ? 1 : 0;
 
365
  let data = {
366
  action: 'ig_es_toggle_campaign_status',
367
  campaign_id: campaign_id,
374
  data: data,
375
  dataType: 'json',
376
  success: function (response) {
377
+ if ( !response.success ) {
378
+ alert( ig_es_js_data.i18n_data.ajax_error_message );
379
+ // Revert back toggle status.
380
+ $(checkbox_elem).prop( 'checked', ! new_campaign_status );
381
  }
382
  },
383
  error: function (err) {
384
+ alert( ig_es_js_data.i18n_data.ajax_error_message );
385
  }
386
  });
387
  });
388
 
389
+ $('.ig_es_draft_broadcast, .next_btn, #summary_menu').on('click', function(e) {
 
390
 
391
+ let trigger_elem = $(this);
392
+ let is_draft_bttuon = $(trigger_elem).hasClass('ig_es_draft_broadcast');
 
393
 
394
+ let broadcast_subject = $('#ig_es_broadcast_subject').val();
395
+ if( '' === broadcast_subject ) {
396
+ if( is_draft_bttuon ) {
397
+ alert( ig_es_js_data.i18n_data.broadcast_subject_empty_message );
398
+ }
399
+ return;
400
  }
401
 
402
+ // If draft button is clicked then change broadcast status to draft..
403
+ if( is_draft_bttuon ) {
404
+ $('#broadcast_status').val(0);
 
405
  }
 
 
 
 
 
 
 
 
406
 
407
+ // Trigger save event for content of wp_editor instances.
408
+ window.tinyMCE.triggerSave();
 
409
 
410
+ let form_data = $(this).closest('form').serialize();
411
+ // Add action to form data
412
+ form_data += form_data + '&action=ig_es_draft_broadcast&security=' + ig_es_js_data.security;
413
+ jQuery.ajax({
414
+ method: 'POST',
415
+ url: ajaxurl,
416
+ data: form_data,
417
+ dataType: 'json',
418
+ beforeSend: function() {
419
+ // Prevent submit button untill saving is complete.
420
+ $('#ig_es_broadcast_submitted').addClass('opacity-50 cursor-not-allowed').attr('disabled','disabled');
421
+ },
422
+ success: function (response) {
423
+ if (response.success) {
424
+ if( 'undefined' !== typeof response.data ) {
425
+ let response_data = response.data;
426
+ let broadcast_id = response_data.broadcast_id;
427
+ $('#broadcast_id').val( broadcast_id );
428
+ if( is_draft_bttuon ) {
429
+ alert( ig_es_js_data.i18n_data.broadcast_draft_success_message );
430
+ }
431
+ } else {
432
+ if( is_draft_bttuon ) {
433
+ alert( ig_es_js_data.i18n_data.broadcast_draft_error_message );
434
+ }
435
+ }
436
+ } else {
437
+ alert( ig_es_js_data.i18n_data.ajax_error_message );
438
+ }
439
+ },
440
+ error: function (err) {
441
+ alert( ig_es_js_data.i18n_data.ajax_error_message );
442
+ }
443
+ }).always(function(){
444
+ $('#ig_es_broadcast_submitted').removeClass('opacity-50 cursor-not-allowed').removeAttr('disabled');
445
+ });
446
+ });
447
 
448
+ $('.wp-editor-boradcast, #edit-es-boradcast-body,#ig_es_broadcast_subject,#ig_es_broadcast_list_ids').on('change',function(event){
 
449
 
450
+ // Trigger save event for content of wp_editor instances before processing it.
451
+ window.tinyMCE.triggerSave();
 
 
452
 
453
+ let form_data = $(this).closest('form').serialize();
454
+ // Add action to form data
455
+ form_data += form_data + '&action=ig_es_preview_broadcast&preview_type=inline&security=' + ig_es_js_data.security;
456
+ jQuery.ajax({
457
+ method: 'POST',
458
+ url: ajaxurl,
459
+ data: form_data,
460
+ dataType: 'json',
461
+ success: function (response) {
462
+ if (response.success) {
463
+ if( 'undefined' !== typeof response.data ) {
464
+ let response_data = response.data;
465
+ let template_html = response_data.template_html;
466
+ let broadcast_subject = response_data.broadcast_subject;
467
+ let contact_name = response_data.contact_name;
468
+ let contact_email = response_data.contact_email;
469
+ $('.broadcast_preview_subject').html(broadcast_subject);
470
+ $('.broadcast_preview_contact_name').html(contact_name);
471
+ if( '' !== contact_email ) {
472
+ $('.broadcast_preview_contact_email').html( '&lt;' + contact_email + '&gt;');
473
+ }
474
+ $('.broadcast_preview_content').html(template_html);
475
+ }
476
+ } else {
477
+ alert( ig_es_js_data.i18n_data.ajax_error_message );
478
+ }
479
+ },
480
+ error: function (err) {
481
+ alert( ig_es_js_data.i18n_data.ajax_error_message );
482
+ }
483
+ });
484
+ });
485
 
486
+ $('#es_test_email_btn').on('click', function(){
487
+ let preview_option = $('[name="preview_option"]:checked').val();
488
+ let template_button = $('#es_test_email_btn');
 
 
489
 
490
+ $(template_button).parent().find('.es-send-success').hide();
491
+ $(template_button).parent().find('.es-send-error').hide();
492
+ if( 'preview_in_popup' === preview_option ) {
493
+ ig_es_show_broadcast_preview_in_popup();
494
+ } else if( 'preview_in_email' === preview_option ) {
495
+ ig_es_send_broadcast_preview_email();
496
+ }
497
+ });
498
 
499
+ $('#broadcast_form [name="preview_option"]').on('click',function(){
500
+ let preview_option = $('[name="preview_option"]:checked').val();
 
 
 
 
 
 
 
 
 
501
 
502
+ if( 'preview_in_email' === preview_option ) {
503
+ $('#es_test_send_email').show();
504
+ } else {
505
+ $('#es_test_send_email').hide();
506
+ }
507
+ });
508
 
509
+ });
 
 
510
 
511
+ })(jQuery);
512
 
513
+ function checkDelete() {
514
+ return confirm('Are you sure?');
 
 
 
 
 
 
 
 
515
  }
516
 
517
+ function ig_es_show_broadcast_preview_in_popup() {
518
+ // Trigger save event for content of wp_editor instances before processing it.
519
+ window.tinyMCE.triggerSave();
520
 
521
+ let content = jQuery('.wp-editor-boradcast').val();
522
+ if (jQuery("#wp-edit-es-boradcast-body-wrap").hasClass("tmce-active")){
523
+ content = tinyMCE.activeEditor.getContent();
524
+ }else{
525
+ content = jQuery('.wp-editor-boradcast').val();
526
+ }
 
 
 
 
 
 
 
 
 
 
527
 
 
 
 
 
 
 
 
 
 
 
 
 
528
 
529
+ if( !content ){
530
+ alert( ig_es_js_data.i18n_data.empty_template_message );
531
+ return;
532
+ }
533
+
534
+ let template_button = jQuery('#es_test_email_btn');
535
+ jQuery(template_button).next('.es-loader').show();
536
+ let form_data = jQuery('#es_test_email_btn').closest('form').serialize();
537
+ // Add action to form data
538
+ form_data += form_data + '&action=ig_es_preview_broadcast&security=' + ig_es_js_data.security;
539
  jQuery.ajax({
540
+ method: 'POST',
541
  url: ajaxurl,
542
+ data: form_data,
543
  dataType: 'json',
544
+ success: function (response) {
545
+ if (response.success) {
546
+ if( 'undefined' !== typeof response.data ) {
547
+ let response_data = response.data;
548
+ let template_html = response_data.template_html;
549
+ jQuery('.broadcast_preview_container').html(template_html);
550
+ jQuery('#preview_template').load().show();
551
+ }
552
+ } else {
553
+ alert( ig_es_js_data.i18n_data.ajax_error_message );
554
  }
555
  },
556
+ error: function (err) {
557
+ alert( ig_es_js_data.i18n_data.ajax_error_message );
 
 
 
 
 
 
 
 
558
  }
559
+ }).done(function(){
560
+ jQuery(template_button).next('.es-loader').hide();
561
  });
562
+ }
lite/admin/partials/dashboard.php CHANGED
@@ -56,14 +56,14 @@ $topics_indexes = array_rand( $topics, 3 );
56
  <div class="md:flex md:items-center md:justify-between">
57
  <div class="flex-1 min-w-0">
58
  <h2 class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
59
- <?php _e( 'Dashboard', 'email_subscribers' ); ?>
60
  </h2>
61
  </div>
62
  <div class="flex mt-4 md:mt-0 md:ml-4">
63
  <a href="<?php echo $audience_url; ?>">
64
  <span class="rounded-md shadow-sm">
65
  <button type="button" class="inline-flex items-center px-4 py-2 text-sm font-medium leading-5 text-gray-700 transition duration-150 ease-in-out bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:shadow-outline focus:border-blue-300">
66
- <?php _e( 'Audience', 'email_subscribers' ); ?>
67
  </button>
68
  </span>
69
  </a>
@@ -72,7 +72,7 @@ $topics_indexes = array_rand( $topics, 3 );
72
  <div>
73
  <span class="rounded-md shadow-sm">
74
  <button type="button" class="w-full ig-es-primary-button">
75
- <?php _e( 'Create', 'email_subscribers' ); ?>
76
  <svg class="w-5 h-5 ml-2 -mr-1" fill="currentColor" viewBox="0 0 20 20">
77
  <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/>
78
  </svg>
@@ -83,26 +83,26 @@ $topics_indexes = array_rand( $topics, 3 );
83
  x-transition:leave-end="transform opacity-0 scale-95" class="absolute right-0 hidden w-56 mt-2 origin-top-right rounded-md shadow-lg">
84
  <div class="bg-white rounded-md shadow-xs">
85
  <div class="py-1">
86
- <a href="<?php echo $new_broadcast_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Broadcast', 'email_subscribers' ); ?></a>
87
 
88
- <a href="<?php echo $new_post_notification_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Post Notification', 'email_subscribers' ); ?></a>
89
 
90
  <?php if ( ES()->is_pro() ) { ?>
91
- <a href="<?php echo $new_sequence_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Sequence', 'email_subscribers' ); ?></a>
92
  <?php } else { ?>
93
- <a href="<?php echo $icegram_pricing_url; ?>" target="_blank" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Sequence', 'email_subscribers' ); ?>
94
- <span class="inline-flex px-2 text-xs font-semibold leading-5 text-green-800 bg-green-100 rounded-full"><?php _e( 'Premium', 'email_subscribers' ); ?></span></a>
95
  <?php } ?>
96
  </div>
97
  <div class="border-t border-gray-100"></div>
98
  <div class="py-1">
99
- <a href="<?php echo $new_template_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Template', 'email_subscribers' ); ?></a>
100
  </div>
101
  <div class="border-t border-gray-100"></div>
102
  <div class="py-1">
103
- <a href="<?php echo $new_form_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Form', 'email_subscribers' ); ?></a>
104
- <a href="<?php echo $new_list_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New List', 'email_subscribers' ); ?></a>
105
- <a href="<?php echo $new_contact_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Contact', 'email_subscribers' ); ?></a>
106
  </div>
107
  </div>
108
  </div>
@@ -117,7 +117,7 @@ $topics_indexes = array_rand( $topics, 3 );
117
  <section class="py-4 my-8 bg-white rounded-lg shadow md:flex md:items-start md:justify-between sm:px-4 sm:px-0 sm:grid sm:grid-cols-3">
118
  <div class="flex-1 min-w-0">
119
  <p class="px-3 text-lg font-medium leading-6 text-gray-400">
120
- <span class="text-black"><?php echo $active_contacts; ?></span><?php _e( ' active contacts', 'email_subscribers' ); ?>
121
  </p>
122
  <div class="text-center bg-white-100" id="ig-es-contacts-growth">
123
 
@@ -125,7 +125,7 @@ $topics_indexes = array_rand( $topics, 3 );
125
  </div>
126
  <div class="flex-1 min-w-0">
127
  <p class="px-3 text-lg font-medium leading-6 text-gray-400">
128
- <?php _e( 'Last 60 days', 'email_subscribers' ); ?>
129
  </p>
130
  <div class="sm:grid sm:grid-cols-2">
131
  <div class="p-3">
@@ -133,7 +133,7 @@ $topics_indexes = array_rand( $topics, 3 );
133
  <?php echo $total_email_opens; ?>
134
  </p>
135
  <p class="mt-1 font-medium leading-6 text-gray-500">
136
- <?php _e( 'Opens', 'email_subscribers' ); ?>
137
  </p>
138
  </div>
139
  <div class="p-3">
@@ -141,7 +141,7 @@ $topics_indexes = array_rand( $topics, 3 );
141
  <?php echo $avg_open_rate; ?> %
142
  </p>
143
  <p class="mt-1 font-medium leading-6 text-gray-500">
144
- <?php _e( ' Avg Open Rate', 'email_subscribers' ); ?>
145
  </p>
146
  </div>
147
  <div class="p-3">
@@ -149,7 +149,7 @@ $topics_indexes = array_rand( $topics, 3 );
149
  <?php echo $total_message_sent; ?>
150
  </p>
151
  <p class="mt-1 font-medium leading-6 text-gray-500">
152
- <?php _e( 'Messages Sent', 'email_subscribers' ); ?>
153
  </p>
154
  </div>
155
  <div class="p-3">
@@ -157,7 +157,7 @@ $topics_indexes = array_rand( $topics, 3 );
157
  <?php echo $avg_click_rate; ?> %
158
  </p>
159
  <p class="mt-1 font-medium leading-6 text-gray-500">
160
- <?php _e( 'Avg Click Rate', 'email_subscribers' ); ?>
161
  </p>
162
  </div>
163
  </div>
@@ -190,10 +190,10 @@ $topics_indexes = array_rand( $topics, 3 );
190
  <li class="">
191
  <div class="px-2 py-2 text-sm leading-5 text-gray-900 sm:px-2">
192
 
193
- <?php _e( 'Jump to: ', 'email_subscribers' ); ?><a href="<?php echo $reports_url; ?>" class="font-bold" target="_blank"><?php _e( 'Reports', 'email_subscribers' ); ?></a> ・<a href="<?php echo $templates_url; ?>" class="font-bold" target="_blank"><?php _e( 'Templates', 'email_subscribers' ); ?></a> ・<a
194
  href="<?php echo $settings_url; ?>"
195
  class="font-bold" target="_blank"><?php _e( 'Settings',
196
- 'email_subscribers' ); ?></a>
197
 
198
  </div>
199
  </li>
56
  <div class="md:flex md:items-center md:justify-between">
57
  <div class="flex-1 min-w-0">
58
  <h2 class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
59
+ <?php _e( 'Dashboard', 'email-subscribers' ); ?>
60
  </h2>
61
  </div>
62
  <div class="flex mt-4 md:mt-0 md:ml-4">
63
  <a href="<?php echo $audience_url; ?>">
64
  <span class="rounded-md shadow-sm">
65
  <button type="button" class="inline-flex items-center px-4 py-2 text-sm font-medium leading-5 text-gray-700 transition duration-150 ease-in-out bg-white border border-gray-300 rounded-md hover:bg-gray-50 focus:outline-none focus:shadow-outline focus:border-blue-300">
66
+ <?php _e( 'Audience', 'email-subscribers' ); ?>
67
  </button>
68
  </span>
69
  </a>
72
  <div>
73
  <span class="rounded-md shadow-sm">
74
  <button type="button" class="w-full ig-es-primary-button">
75
+ <?php _e( 'Create', 'email-subscribers' ); ?>
76
  <svg class="w-5 h-5 ml-2 -mr-1" fill="currentColor" viewBox="0 0 20 20">
77
  <path fill-rule="evenodd" d="M5.293 7.293a1 1 0 011.414 0L10 10.586l3.293-3.293a1 1 0 111.414 1.414l-4 4a1 1 0 01-1.414 0l-4-4a1 1 0 010-1.414z" clip-rule="evenodd"/>
78
  </svg>
83
  x-transition:leave-end="transform opacity-0 scale-95" class="absolute right-0 hidden w-56 mt-2 origin-top-right rounded-md shadow-lg">
84
  <div class="bg-white rounded-md shadow-xs">
85
  <div class="py-1">
86
+ <a href="<?php echo $new_broadcast_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Broadcast', 'email-subscribers' ); ?></a>
87
 
88
+ <a href="<?php echo $new_post_notification_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Post Notification', 'email-subscribers' ); ?></a>
89
 
90
  <?php if ( ES()->is_pro() ) { ?>
91
+ <a href="<?php echo $new_sequence_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Sequence', 'email-subscribers' ); ?></a>
92
  <?php } else { ?>
93
+ <a href="<?php echo $icegram_pricing_url; ?>" target="_blank" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Sequence', 'email-subscribers' ); ?>
94
+ <span class="inline-flex px-2 text-xs font-semibold leading-5 text-green-800 bg-green-100 rounded-full"><?php _e( 'Premium', 'email-subscribers' ); ?></span></a>
95
  <?php } ?>
96
  </div>
97
  <div class="border-t border-gray-100"></div>
98
  <div class="py-1">
99
+ <a href="<?php echo $new_template_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Template', 'email-subscribers' ); ?></a>
100
  </div>
101
  <div class="border-t border-gray-100"></div>
102
  <div class="py-1">
103
+ <a href="<?php echo $new_form_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Form', 'email-subscribers' ); ?></a>
104
+ <a href="<?php echo $new_list_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New List', 'email-subscribers' ); ?></a>
105
+ <a href="<?php echo $new_contact_url; ?>" class="block px-4 py-2 text-sm leading-5 text-gray-700 hover:bg-gray-100 hover:text-gray-900 focus:outline-none focus:bg-gray-100 focus:text-gray-900"><?php _e( 'New Contact', 'email-subscribers' ); ?></a>
106
  </div>
107
  </div>
108
  </div>
117
  <section class="py-4 my-8 bg-white rounded-lg shadow md:flex md:items-start md:justify-between sm:px-4 sm:px-0 sm:grid sm:grid-cols-3">
118
  <div class="flex-1 min-w-0">
119
  <p class="px-3 text-lg font-medium leading-6 text-gray-400">
120
+ <span class="text-black"><?php echo $active_contacts; ?></span><?php _e( ' active contacts', 'email-subscribers' ); ?>
121
  </p>
122
  <div class="text-center bg-white-100" id="ig-es-contacts-growth">
123
 
125
  </div>
126
  <div class="flex-1 min-w-0">
127
  <p class="px-3 text-lg font-medium leading-6 text-gray-400">
128
+ <?php _e( 'Last 60 days', 'email-subscribers' ); ?>
129
  </p>
130
  <div class="sm:grid sm:grid-cols-2">
131
  <div class="p-3">
133
  <?php echo $total_email_opens; ?>
134
  </p>
135
  <p class="mt-1 font-medium leading-6 text-gray-500">
136
+ <?php _e( 'Opens', 'email-subscribers' ); ?>
137
  </p>
138
  </div>
139
  <div class="p-3">
141
  <?php echo $avg_open_rate; ?> %
142
  </p>
143
  <p class="mt-1 font-medium leading-6 text-gray-500">
144
+ <?php _e( ' Avg Open Rate', 'email-subscribers' ); ?>
145
  </p>
146
  </div>
147
  <div class="p-3">
149
  <?php echo $total_message_sent; ?>
150
  </p>
151
  <p class="mt-1 font-medium leading-6 text-gray-500">
152
+ <?php _e( 'Messages Sent', 'email-subscribers' ); ?>
153
  </p>
154
  </div>
155
  <div class="p-3">
157
  <?php echo $avg_click_rate; ?> %
158
  </p>
159
  <p class="mt-1 font-medium leading-6 text-gray-500">
160
+ <?php _e( 'Avg Click Rate', 'email-subscribers' ); ?>
161
  </p>
162
  </div>
163
  </div>
190
  <li class="">
191
  <div class="px-2 py-2 text-sm leading-5 text-gray-900 sm:px-2">
192
 
193
+ <?php _e( 'Jump to: ', 'email-subscribers' ); ?><a href="<?php echo $reports_url; ?>" class="font-bold" target="_blank"><?php _e( 'Reports', 'email-subscribers' ); ?></a> ・<a href="<?php echo $templates_url; ?>" class="font-bold" target="_blank"><?php _e( 'Templates', 'email-subscribers' ); ?></a> ・<a
194
  href="<?php echo $settings_url; ?>"
195
  class="font-bold" target="_blank"><?php _e( 'Settings',
196
+ 'email-subscribers' ); ?></a>
197
 
198
  </div>
199
  </li>
lite/admin/partials/help.php CHANGED
@@ -76,10 +76,10 @@ $articles = array(
76
  );
77
 
78
  ?>
79
- <h1 class="mt-4 wp-heading-inline"><span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate"><?php _e( 'Help & Info', 'email-subscribers' ) ?></span></h1>
80
- <div class="wrap font-sans">
81
- <div class="container w-full flex flex-wrap border rounded-lg bg-white shadow ">
82
- <div class="inline-block pl-2 border-r border-dashed px-2 w-4/12 ">
83
  <div class="max-h-full" id="features_display">
84
  <div class="pt-6 pb-6 pl-2 mt-2">
85
  <ul class="mx-6 leading-relaxed list-disc">
@@ -155,7 +155,7 @@ $articles = array(
155
 
156
  <div class="container flex flex-wrap w-full mt-4">
157
  <div class="block mt-6">
158
- <h3 class="text-2xl font-medium text-gray-700"><?php _e( 'Other awesome plugins from same author', 'email_subscribers' ); ?></h3>
159
  </div>
160
  <div class="grid w-full grid-cols-3 py-2 my-4">
161
  <?php foreach ( $plugins as $plugin ) { ?>
@@ -184,11 +184,11 @@ $articles = array(
184
  <div class="flex flex-row mb-0 border-t">
185
  <div class="flex w-2/3 px-3 py-5 text-sm"><?php _e( 'Status', 'email-subscribers' ); ?>:
186
  <?php if ( in_array( $plugin['name'], $active_plugins ) ) { ?>
187
- <span class="font-bold text-green-600">&nbsp;<?php _e( 'Active', 'email_subscribers' ); ?></span>
188
  <?php } elseif ( in_array( $plugin['name'], $inactive_plugins ) ) { ?>
189
- <span class="font-bold text-red-600">&nbsp;<?php _e( 'Inactive', 'email_subscribers' ); ?></span>
190
  <?php } else { ?>
191
- <span class="font-bold text-orange-500">&nbsp;<?php _e( 'Not Installed', 'email_subscribers' ); ?></span>
192
  <?php } ?>
193
  </div>
194
  <div class="flex justify-center w-1/3 py-3 md:pr-4">
@@ -199,10 +199,10 @@ $articles = array(
199
 
200
  if ( ! in_array( $plugin['name'], $all_plugins ) ) { ?>
201
  <button type="button" class="inline-flex justify-center w-full px-4 py-2 text-sm font-medium leading-5 text-white transition duration-150 ease-in-out bg-white bg-green-600 border border-transparent rounded-md hover:bg-green-500 focus:outline-none focus:shadow-outline-blue">
202
- <?php _e( 'Install', 'email_subscribers' ); ?> </button>
203
  <?php } elseif ( in_array( $plugin['name'], $inactive_plugins ) ) { ?>
204
  <button type="button" class="inline-flex justify-center w-full px-4 py-2 text-sm font-medium leading-5 text-white transition duration-150 ease-in-out bg-white bg-indigo-600 border border-transparent rounded-md hover:bg-indigo-500 focus:outline-none focus:shadow-outline-blue">
205
- <?php _e( 'Activate', 'email_subscribers' ); ?> </button>
206
  <?php } ?>
207
  </a>
208
  </span>
76
  );
77
 
78
  ?>
79
+ <h1 class="mt-4 wp-heading-inline"><span class="text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate"><?php _e( 'Help & Info', 'email-subscribers' ) ?></span></h1>
80
+ <div class="font-sans wrap">
81
+ <div class="container flex flex-wrap w-full bg-white border rounded-lg shadow ">
82
+ <div class="inline-block w-4/12 px-2 pl-2 border-r border-dashed ">
83
  <div class="max-h-full" id="features_display">
84
  <div class="pt-6 pb-6 pl-2 mt-2">
85
  <ul class="mx-6 leading-relaxed list-disc">
155
 
156
  <div class="container flex flex-wrap w-full mt-4">
157
  <div class="block mt-6">
158
+ <h3 class="text-2xl font-medium text-gray-700"><?php _e( 'Other awesome plugins from same author', 'email-subscribers' ); ?></h3>
159
  </div>
160
  <div class="grid w-full grid-cols-3 py-2 my-4">
161
  <?php foreach ( $plugins as $plugin ) { ?>
184
  <div class="flex flex-row mb-0 border-t">
185
  <div class="flex w-2/3 px-3 py-5 text-sm"><?php _e( 'Status', 'email-subscribers' ); ?>:
186
  <?php if ( in_array( $plugin['name'], $active_plugins ) ) { ?>
187
+ <span class="font-bold text-green-600">&nbsp;<?php _e( 'Active', 'email-subscribers' ); ?></span>
188
  <?php } elseif ( in_array( $plugin['name'], $inactive_plugins ) ) { ?>
189
+ <span class="font-bold text-red-600">&nbsp;<?php _e( 'Inactive', 'email-subscribers' ); ?></span>
190
  <?php } else { ?>
191
+ <span class="font-bold text-orange-500">&nbsp;<?php _e( 'Not Installed', 'email-subscribers' ); ?></span>
192
  <?php } ?>
193
  </div>
194
  <div class="flex justify-center w-1/3 py-3 md:pr-4">
199
 
200
  if ( ! in_array( $plugin['name'], $all_plugins ) ) { ?>
201
  <button type="button" class="inline-flex justify-center w-full px-4 py-2 text-sm font-medium leading-5 text-white transition duration-150 ease-in-out bg-white bg-green-600 border border-transparent rounded-md hover:bg-green-500 focus:outline-none focus:shadow-outline-blue">
202
+ <?php _e( 'Install', 'email-subscribers' ); ?> </button>
203
  <?php } elseif ( in_array( $plugin['name'], $inactive_plugins ) ) { ?>
204
  <button type="button" class="inline-flex justify-center w-full px-4 py-2 text-sm font-medium leading-5 text-white transition duration-150 ease-in-out bg-white bg-indigo-600 border border-transparent rounded-md hover:bg-indigo-500 focus:outline-none focus:shadow-outline-blue">
205
+ <?php _e( 'Activate', 'email-subscribers' ); ?> </button>
206
  <?php } ?>
207
  </a>
208
  </span>
lite/includes/class-email-subscribers.php CHANGED
@@ -608,7 +608,6 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
608
  'lite/includes/classes/class-es-message.php',
609
  'lite/includes/classes/class-es-lists-table.php',
610
  'lite/includes/classes/class-es-contacts-table.php',
611
- 'lite/includes/classes/class-es-contact-background-process.php',
612
  'lite/includes/classes/class-es-post-notifications.php',
613
  'lite/includes/classes/class-es-templates-table.php',
614
  'lite/includes/classes/class-es-campaigns-table.php',
@@ -813,8 +812,6 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
813
 
814
  $this->loader->add_filter( 'admin_footer_text', $plugin_admin, 'update_admin_footer_text' );
815
 
816
-
817
-
818
  }
819
 
820
  /**
@@ -1121,10 +1118,10 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
1121
  *
1122
  * @since 4.4.4
1123
  */
1124
- public function init_action_scheduler_queue_runner() {
1125
 
1126
  $admin_ajax_url = admin_url( 'admin-ajax.php' );
1127
- $admin_ajax_url = add_query_arg( 'action', 'ig_es_init_queue_runner', $admin_ajax_url );
1128
  $args = array(
1129
  'timeout' => 0.01,
1130
  'blocking' => false,
608
  'lite/includes/classes/class-es-message.php',
609
  'lite/includes/classes/class-es-lists-table.php',
610
  'lite/includes/classes/class-es-contacts-table.php',
 
611
  'lite/includes/classes/class-es-post-notifications.php',
612
  'lite/includes/classes/class-es-templates-table.php',
613
  'lite/includes/classes/class-es-campaigns-table.php',
812
 
813
  $this->loader->add_filter( 'admin_footer_text', $plugin_admin, 'update_admin_footer_text' );
814
 
 
 
815
  }
816
 
817
  /**
1118
  *
1119
  * @since 4.4.4
1120
  */
1121
+ public function init_action_scheduler_queue_runner( $action = 'ig_es_init_queue_runner' ) {
1122
 
1123
  $admin_ajax_url = admin_url( 'admin-ajax.php' );
1124
+ $admin_ajax_url = add_query_arg( 'action', $action, $admin_ajax_url );
1125
  $args = array(
1126
  'timeout' => 0.01,
1127
  'blocking' => false,
lite/includes/class-es-common.php CHANGED
@@ -10,7 +10,7 @@ if ( ! defined( 'ABSPATH' ) ) {
10
  *
11
  * @since 4.0
12
  */
13
- Class ES_Common {
14
  /**
15
  * Convert email subscribe templates.
16
  *
@@ -197,6 +197,7 @@ Class ES_Common {
197
  return $dropdown;
198
  }
199
 
 
200
  /**
201
  * Generate GUID
202
  *
@@ -1245,13 +1246,13 @@ Class ES_Common {
1245
  public static function get_useful_articles() {
1246
 
1247
  $articles = array(
1248
- array( 'title' => __( '8 Tips To Improve Email Open Rates', 'email_subscribers' ), 'link' => 'https://www.icegram.com/2bx5' ),
1249
- array( 'title' => __( 'Prevent Your Email From Landing In Spam', 'email_subscribers' ), 'link' => 'https://www.icegram.com/2bx6' ),
1250
- array( 'title' => __( '<b>Email Subscribers Secret Club</b>', 'email_subscribers' ), 'link' => 'https://www.facebook.com/groups/2298909487017349/', 'label' => __( 'Join Now', 'email-subscribers' ), 'label_class' => 'bg-green-100 text-green-800' ),
1251
- array( 'title' => __( 'Best Way To Keep Customers Engaged', 'email_subscribers' ), 'link' => 'https://www.icegram.com/ymrn' ),
1252
- array( 'title' => __( 'Access Control', 'email_subscribers' ), 'link' => 'https://www.icegram.com/81z9' ),
1253
- array( 'title' => __( 'Prevent Spam Subscription Using Captcha', 'email_subscribers' ), 'link' => 'https://www.icegram.com/3jy4' ),
1254
- array( 'title' => __( 'Email Subscribers PRO', 'email_subscribers' ), 'link' => 'https://www.icegram.com/er6r', 'label' => __( 'Lifetime', 'email-subscribers' ), 'label_class' => 'bg-green-100 text-green-800' )
1255
  );
1256
 
1257
  return $articles;
@@ -1290,4 +1291,80 @@ Class ES_Common {
1290
 
1291
  }
1292
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1293
  }
10
  *
11
  * @since 4.0
12
  */
13
+ class ES_Common {
14
  /**
15
  * Convert email subscribe templates.
16
  *
197
  return $dropdown;
198
  }
199
 
200
+
201
  /**
202
  * Generate GUID
203
  *
1246
  public static function get_useful_articles() {
1247
 
1248
  $articles = array(
1249
+ array( 'title' => __( '8 Tips To Improve Email Open Rates', 'email-subscribers' ), 'link' => 'https://www.icegram.com/2bx5' ),
1250
+ array( 'title' => __( 'Prevent Your Email From Landing In Spam', 'email-subscribers' ), 'link' => 'https://www.icegram.com/2bx6' ),
1251
+ array( 'title' => __( '<b>Email Subscribers Secret Club</b>', 'email-subscribers' ), 'link' => 'https://www.facebook.com/groups/2298909487017349/', 'label' => __( 'Join Now', 'email-subscribers' ), 'label_class' => 'bg-green-100 text-green-800' ),
1252
+ array( 'title' => __( 'Best Way To Keep Customers Engaged', 'email-subscribers' ), 'link' => 'https://www.icegram.com/ymrn' ),
1253
+ array( 'title' => __( 'Access Control', 'email-subscribers' ), 'link' => 'https://www.icegram.com/81z9' ),
1254
+ array( 'title' => __( 'Prevent Spam Subscription Using Captcha', 'email-subscribers' ), 'link' => 'https://www.icegram.com/3jy4' ),
1255
+ array( 'title' => __( 'Email Subscribers PRO', 'email-subscribers' ), 'link' => 'https://www.icegram.com/er6r', 'label' => __( 'Lifetime', 'email-subscribers' ), 'label_class' => 'bg-green-100 text-green-800' )
1256
  );
1257
 
1258
  return $articles;
1291
 
1292
  }
1293
 
1294
+ /**
1295
+ * Get Captcha setting
1296
+ *
1297
+ * @param $id null|int
1298
+ * @param $data array
1299
+ *
1300
+ * @return bool|mixed|void
1301
+ *
1302
+ * @since 4.4.7
1303
+ */
1304
+ public static function get_captcha_setting( $form_id = null, $data = array() ) {
1305
+
1306
+ if ( ! empty( $form_id ) ) {
1307
+
1308
+ $form_id = (int) $form_id;
1309
+
1310
+ $form_data = ES()->forms_db->get_form_by_id( $form_id );
1311
+
1312
+ $settings = ig_es_get_data( $form_data, 'settings', array() );
1313
+
1314
+ if ( ! empty( $settings ) ) {
1315
+
1316
+ $settings = maybe_unserialize( $settings );
1317
+
1318
+ if ( isset( $settings['captcha'] ) ) {
1319
+ return empty( $settings['captcha'] ) ? 'no' : $settings['captcha'];
1320
+ }
1321
+
1322
+ }
1323
+
1324
+ return get_option( 'ig_es_enable_captcha', 'no' );
1325
+ }
1326
+
1327
+ if ( ! isset( $data['captcha'] ) || empty( $data['captcha'] ) ) {
1328
+ $setting = get_option( 'ig_es_enable_captcha', 'no' );
1329
+ } else {
1330
+ $setting = $data['captcha'];
1331
+ }
1332
+
1333
+ return $setting;
1334
+ }
1335
+
1336
+ public static function convert_date_to_wp_date( $date ) {
1337
+ $convert_date_format = get_option( 'date_format' );
1338
+ $convert_time_format = get_option( 'time_format' );
1339
+
1340
+ return date_i18n( "$convert_date_format $convert_time_format", strtotime( $date ) );
1341
+ }
1342
+
1343
+ /**
1344
+ * Method to convert emojis character into their equivalent HTML entity in the given string if conversion supported
1345
+ * else remove them
1346
+ *
1347
+ * @param string $string String with emojis characters.
1348
+ *
1349
+ * @return string $string Converted string with equivalent HTML entities
1350
+ *
1351
+ * @since 4.4.7
1352
+ */
1353
+ public static function handle_emoji_characters( $string = '' ) {
1354
+
1355
+ if( ! empty( $string ) ) {
1356
+ if( function_exists( 'wp_encode_emoji' ) ) {
1357
+ $string = wp_encode_emoji( $string );
1358
+ } else {
1359
+ $string = preg_replace('%(?:
1360
+ \xF0[\x90-\xBF][\x80-\xBF]{2} # planes 1-3
1361
+ | [\xF1-\xF3][\x80-\xBF]{3} # planes 4-15
1362
+ | \xF4[\x80-\x8F][\x80-\xBF]{2} # plane 16
1363
+ )%xs', '', $string);
1364
+ }
1365
+ }
1366
+
1367
+ return $string;
1368
+ }
1369
+
1370
  }
lite/includes/classes/class-es-actions.php CHANGED
@@ -187,6 +187,8 @@ if ( ! class_exists( 'ES_Actions' ) ) {
187
  // Track only if campaign sent.
188
  if ( $this->is_campaign_sent( $contact_id, $message_id, $campaign_id ) ) {
189
 
 
 
190
  return $this->add_action( array(
191
  'contact_id' => $contact_id,
192
  'message_id' => $message_id,
@@ -287,6 +289,30 @@ if ( ! class_exists( 'ES_Actions' ) ) {
287
 
288
  return $wpdb->get_var( $wpdb->prepare( $sql, $contact_id, $message_id, $campaign_id, IG_MESSAGE_SENT ) );
289
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
290
  }
291
  }
292
 
187
  // Track only if campaign sent.
188
  if ( $this->is_campaign_sent( $contact_id, $message_id, $campaign_id ) ) {
189
 
190
+ $this->update_viewed_status( $contact_id, $campaign_id, $message_id );
191
+
192
  return $this->add_action( array(
193
  'contact_id' => $contact_id,
194
  'message_id' => $message_id,
289
 
290
  return $wpdb->get_var( $wpdb->prepare( $sql, $contact_id, $message_id, $campaign_id, IG_MESSAGE_SENT ) );
291
  }
292
+
293
+ /**
294
+ * @param int $conact_id
295
+ * @param int $campaign_id
296
+ * @param int $message_id
297
+ *
298
+ * @return bool|false|int|void
299
+ *
300
+ * @since 4.4.7
301
+ */
302
+ public function update_viewed_status( $conact_id = 0, $campaign_id = 0, $message_id = 0 ) {
303
+ global $wpdb;
304
+
305
+ if ( empty( $conact_id ) || empty( $campaign_id ) ) {
306
+ return;
307
+ }
308
+
309
+ $current_date = ig_get_current_date_time();
310
+
311
+ $query = "UPDATE " . IG_SENDING_QUEUE_TABLE . " SET opened_at = %s, opened = %d WHERE contact_id = %d AND campaign_id = %d AND mailing_queue_id = %d";
312
+ $sql = $wpdb->prepare( $query, $current_date, 1, $conact_id, $campaign_id, $message_id );
313
+
314
+ return $wpdb->query( $sql );
315
+ }
316
  }
317
  }
318
 
lite/includes/classes/class-es-admin-settings.php CHANGED
@@ -82,7 +82,7 @@ class ES_Admin_Settings {
82
  $email_fields_to_sanitize = array(
83
  'ig_es_from_email'
84
  );
85
-
86
  foreach ( $options as $key => $value ) {
87
  if ( substr( $key, 0, 6 ) === 'ig_es_' ) {
88
 
@@ -95,7 +95,7 @@ class ES_Admin_Settings {
95
  } elseif ( in_array( $key, $email_fields_to_sanitize ) ) {
96
  $value = sanitize_email( $value );
97
  }
98
-
99
  update_option( $key, wp_unslash( $value ), false );
100
  }
101
  }
@@ -113,10 +113,10 @@ class ES_Admin_Settings {
113
  ?>
114
 
115
  <div class="wrap">
116
- <h1 class="mt-4 wp-heading-inline"><span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">Settings</h1>
117
  </header>
118
  </span>
119
- <form action="" method="post" id="email_tabs_form" class="font-sans sticky bg-white rounded-lg shadow-md">
120
  <div class="flex flex-wrap mt-6">
121
  <?php settings_fields( 'email_subscribers_settings' );
122
  $es_settings_tabs = array(
@@ -127,14 +127,14 @@ class ES_Admin_Settings {
127
  );
128
  $es_settings_tabs = apply_filters( 'ig_es_settings_tabs', $es_settings_tabs );
129
  ?>
130
- <div id="es-settings-menu" class="w-1/5 border-r border-gray-100 pt-4 text-gray-800 leading-normal">
131
- <div class="es-menu-list lg:block mt-0 my-2 lg:my-0 lg:border-transparent bg-white shadow lg:shadow-none lg:bg-transparent z-20" style="top:6em;" id="menu-content">
132
- <ul class="menu-nav" class=" list-reset py-2 md:py-0">
133
  <?php
134
  foreach ( $es_settings_tabs as $key => $value ) {
135
  ?>
136
- <li id="menu-content-li" class="settings-menu-change mx-2 h-10 py-1 border rounded md:my-2 border-transparent hover:rounded-lg hover:border-gray-200">
137
- <a href="#tabs-<?php echo $key ?>" id="menu-content-change" class="block px-4 pt-1 align-middle font-medium text-base hover:text-gray-800 no-underline active:text-gray-900"><i class="py-0.5 dashicons dashicons-<?php echo $value['icon'] ?>"></i>&nbsp;<?php echo $value['name'] ?></a></li>
138
  <?php
139
  }
140
  ?>
@@ -519,7 +519,7 @@ $email_sending_settings = array(
519
 
520
  'ig_es_test_send_email' => array(
521
  'type' => 'html',
522
- 'html' => '<input id="es-test-email" class="mt-3 mb-1 form-input h-9 border-gray-400"/><input type="submit" name="submit" id="es-send-test" class="ig-es-primary-button" value="Send Email"><span class="es_spinner_image_admin" id="spinner-image" style="display:none"><img src="' . ES_PLUGIN_URL . 'lite/public/images/spinner.gif' . '" alt="Loading..."/></span>',
523
  'placeholder' => '',
524
  'supplemental' => '',
525
  'default' => '',
@@ -645,7 +645,7 @@ public function field_callback( $arguments, $id_key = '' ) {
645
  break;
646
 
647
  case 'number': // If it is a number field
648
- $field_html = sprintf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" %5$s min="0" class="mt-2 mb-1 h-9 text-sm border-gray-400 w-2/5 "/>', $uid, $type, $placeholder, $value, $readonly );
649
  break;
650
 
651
  case 'email':
@@ -657,21 +657,21 @@ public function field_callback( $arguments, $id_key = '' ) {
657
  break;
658
 
659
  case 'file':
660
- $field_html = '<input type="text" id="logo_url" name="' . $uid . '" value="' . $value . '" class="form-input w-2/3 mt-2 mb-1 h-9 border-gray-400 text-sm w-3/5' . $class . '"/> <input id="upload_logo_button" type="button" class="button" value="Upload Logo" />';
661
  break;
662
 
663
  case 'checkbox' :
664
 
665
- $field_html = '<label for="' . $id_key . '" class="mt-4 mb-1 inline-flex items-center cursor-pointer">
666
  <span class="relative">';
667
 
668
- if ( ! $disabled ) {
669
- $field_html .= '<input id="' . $id_key . '" type="checkbox" name="' . $uid . '" value="yes" ' . checked( $value, 'yes', false ) . ' class="mt-6 absolute es-check-toggle opacity-0 w-0 h-0 ' . $class . '" />';
670
- }
671
 
672
  $field_html .= $placeholder . '</input>
673
- <span class="es-mail-toggle-line block w-10 h-6 bg-gray-300 rounded-full shadow-inner "></span>
674
- <span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-4 h-4 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline"></span>
675
  </span>
676
  </label>';
677
  break;
@@ -698,7 +698,7 @@ public function field_callback( $arguments, $id_key = '' ) {
698
  //If there is help text
699
  if ( ! empty( $arguments['desc'] ) ) {
700
  $helper = $arguments['desc'];
701
- $field_html .= sprintf( '<p class="helper italic text-xs font-normal text-gray-500 mb-2 leading-snug"> %s</p>', $helper ); // Show it
702
  }
703
 
704
  return $field_html;
@@ -713,28 +713,33 @@ public function field_callback( $arguments, $id_key = '' ) {
713
  }
714
 
715
  function render_settings_fields( $fields ) {
716
- $html = "<table class='mt-4 rounded-lg bg-white mr-4 lg:mx-5 xl:mx-7 overflow-hidden'>";
717
  $html .= "<tbody>";
718
  foreach ( $fields as $key => $field ) {
719
  if ( ! empty( $field['name'] ) ) {
720
- $html .= "<tr class=' ml-4 py-4 border-b border-gray-100'><th scope='row' class='pt-7 ml-6 block pt-3 pb-8 text-left pr-4'><span class='text-sm font-semibold text-gray-600 pb-2'>";
721
  $html .= $field['name'];
722
 
723
  if ( ! empty( $field['is_premium'] ) ) {
724
- $html .= '<a href="' . $field['link'] . '" target="_blank"><span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">' . __( 'Premium', 'email-subscribers' ) . '</span></a>';
725
  }
726
 
727
  //If there is help text
728
  if ( ! empty( $field['info'] ) ) {
729
  $helper = $field['info'];
730
- $html .= "<br />" . sprintf( '<p class="italic text-xs font-normal text-gray-500 mt-1 leading-snug">%s</p>', $helper ); // Show it
731
  }
732
  $button_html = "<tr>";
733
 
734
  $html .= "</th>";
735
  }
736
 
737
- $html .= "<td class=' pl-5 w-4/6 bg-white rounded-lg py-2'>";
 
 
 
 
 
738
  if ( ! empty( $field['sub_fields'] ) ) {
739
  $option_key = '';
740
  foreach ( $field['sub_fields'] as $field_key => $sub_field ) {
@@ -755,6 +760,28 @@ public function field_callback( $arguments, $id_key = '' ) {
755
  $html .= $this->field_callback( $field );
756
  }
757
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
758
  $html .= "</td></tr>";
759
  }
760
 
@@ -765,7 +792,7 @@ public function field_callback( $arguments, $id_key = '' ) {
765
  $html .= '<input type="hidden" name="submitted" value="submitted" />';
766
  $html .= '<input type="hidden" name="submit_action" value="ig-es-save-admin-settings" />';
767
  $html .= $nonce_field;
768
- $html .= '<input type="submit" name="submit" class="cursor-pointer my-2 mx-6 ig-es-primary-button" value="' . __( 'Save Settings', 'email-subscribers' ) . '">';
769
  $html .= "</td></tr>";
770
  $html .= "</tbody>";
771
  $html .= "</table>";
@@ -814,20 +841,20 @@ public function field_callback( $arguments, $id_key = '' ) {
814
 
815
  foreach ( $mailers as $key => $mailer ) {
816
  $html .= '<label class="inline-flex items-center cursor-pointer">';
817
- $html .= '<input type="radio" class="es_mailer absolute opacity-0 w-0 h-0" name="ig_es_mailer_settings[mailer]" value="' . $key . '" ' . checked( $selected_mailer, $key, false ) . '></input>';
818
 
819
  if ( ! empty( $mailer['is_premium'] ) ) {
820
  $html .= '<a href="' . $mailer['url'] . '" target="_blank">';
821
  }
822
 
823
- $html .= '<div class="mt-4 mr-4 border-solid border-2 rounded-lg border-gray-200 shadow-md es-mailer-logo">
824
- <div class="es-logo-wrapper border-0">
825
  <img src="' . $mailer['logo'] . '" alt="Default (none)">
826
  </div>'
827
  . $mailer['name'];
828
 
829
  if ( ! empty( $mailer['is_premium'] ) ) {
830
- $html .= '<span class="px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800">Premium</span></a>';
831
  }
832
  $html .= '</div></label>';
833
  }
82
  $email_fields_to_sanitize = array(
83
  'ig_es_from_email'
84
  );
85
+
86
  foreach ( $options as $key => $value ) {
87
  if ( substr( $key, 0, 6 ) === 'ig_es_' ) {
88
 
95
  } elseif ( in_array( $key, $email_fields_to_sanitize ) ) {
96
  $value = sanitize_email( $value );
97
  }
98
+
99
  update_option( $key, wp_unslash( $value ), false );
100
  }
101
  }
113
  ?>
114
 
115
  <div class="wrap">
116
+ <h1 class="mt-4 wp-heading-inline"><span class="text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate">Settings</h1>
117
  </header>
118
  </span>
119
+ <form action="" method="post" id="email_tabs_form" class="sticky font-sans bg-white rounded-lg shadow-md">
120
  <div class="flex flex-wrap mt-6">
121
  <?php settings_fields( 'email_subscribers_settings' );
122
  $es_settings_tabs = array(
127
  );
128
  $es_settings_tabs = apply_filters( 'ig_es_settings_tabs', $es_settings_tabs );
129
  ?>
130
+ <div id="es-settings-menu" class="w-1/5 pt-4 leading-normal text-gray-800 border-r border-gray-100">
131
+ <div class="z-20 my-2 mt-0 bg-white shadow es-menu-list lg:block lg:my-0 lg:border-transparent lg:shadow-none lg:bg-transparent" style="top:6em;" id="menu-content">
132
+ <ul id="menu-nav" class="py-2 list-reset md:py-0">
133
  <?php
134
  foreach ( $es_settings_tabs as $key => $value ) {
135
  ?>
136
+ <li id="menu-content" class="h-10 py-1 mx-2 border border-transparent rounded settings-menu-change md:my-2 hover:rounded-lg hover:border-gray-200">
137
+ <a href="#tabs-<?php echo $key ?>" id="menu-content-change" class="block px-4 pt-1 text-base font-medium text-gray-900 no-underline align-middle hover:text-gray-800"><i class="py-0.5 dashicons dashicons-<?php echo $value['icon'] ?>"></i>&nbsp;<?php echo $value['name'] ?></a></li>
138
  <?php
139
  }
140
  ?>
519
 
520
  'ig_es_test_send_email' => array(
521
  'type' => 'html',
522
+ 'html' => '<input id="es-test-email" class="mt-3 mb-1 border-gray-400 form-input h-9"/><input type="submit" name="submit" id="es-send-test" class="ig-es-primary-button" value="Send Email"><span class="es_spinner_image_admin" id="spinner-image" style="display:none"><img src="' . ES_PLUGIN_URL . 'lite/public/images/spinner.gif' . '" alt="Loading..."/></span>',
523
  'placeholder' => '',
524
  'supplemental' => '',
525
  'default' => '',
645
  break;
646
 
647
  case 'number': // If it is a number field
648
+ $field_html = sprintf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" %5$s min="0" class="w-2/5 mt-2 mb-1 text-sm border-gray-400 h-9 "/>', $uid, $type, $placeholder, $value, $readonly );
649
  break;
650
 
651
  case 'email':
657
  break;
658
 
659
  case 'file':
660
+ $field_html = '<input type="text" id="logo_url" name="' . $uid . '" value="' . $value . '" class="w-2/3 w-3/5 mt-2 mb-1 text-sm border-gray-400 form-input h-9' . $class . '"/> <input id="upload_logo_button" type="button" class="button" value="Upload Logo" />';
661
  break;
662
 
663
  case 'checkbox' :
664
 
665
+ $field_html = '<label for="' . $id_key . '" class="inline-flex items-center mt-4 mb-1 cursor-pointer">
666
  <span class="relative">';
667
 
668
+ if ( ! $disabled ) {
669
+ $field_html .= '<input id="' . $id_key . '" type="checkbox" name="' . $uid . '" value="yes" ' . checked( $value, 'yes', false ) . ' class="absolute w-0 h-0 mt-6 opacity-0 es-check-toggle ' . $class . '" />';
670
+ }
671
 
672
  $field_html .= $placeholder . '</input>
673
+ <span class="block w-10 h-6 bg-gray-300 rounded-full shadow-inner es-mail-toggle-line "></span>
674
+ <span class="absolute inset-y-0 left-0 block w-4 h-4 mt-1 ml-1 transition-all duration-300 ease-in-out bg-white rounded-full shadow es-mail-toggle-dot focus-within:shadow-outline"></span>
675
  </span>
676
  </label>';
677
  break;
698
  //If there is help text
699
  if ( ! empty( $arguments['desc'] ) ) {
700
  $helper = $arguments['desc'];
701
+ $field_html .= sprintf( '<p class="mb-2 text-xs italic font-normal leading-snug text-gray-500 helper"> %s</p>', $helper ); // Show it
702
  }
703
 
704
  return $field_html;
713
  }
714
 
715
  function render_settings_fields( $fields ) {
716
+ $html = "<table class='mt-4 mr-4 overflow-hidden bg-white rounded-lg lg:mx-5 xl:mx-7'>";
717
  $html .= "<tbody>";
718
  foreach ( $fields as $key => $field ) {
719
  if ( ! empty( $field['name'] ) ) {
720
+ $html .= "<tr class='py-4 ml-4 border-b border-gray-100 '><th scope='row' class='block pt-3 pb-8 pr-4 ml-6 text-left pt-7'><span class='pb-2 text-sm font-semibold text-gray-600'>";
721
  $html .= $field['name'];
722
 
723
  if ( ! empty( $field['is_premium'] ) ) {
724
+ $html .= '<a href="' . $field['link'] . '" target="_blank"><span class="inline-flex px-2 text-xs font-semibold leading-5 text-green-800 bg-green-100 rounded-full">' . __( 'Premium', 'email-subscribers' ) . '</span></a>';
725
  }
726
 
727
  //If there is help text
728
  if ( ! empty( $field['info'] ) ) {
729
  $helper = $field['info'];
730
+ $html .= "<br />" . sprintf( '<p class="mt-1 text-xs italic font-normal leading-snug text-gray-500">%s</p>', $helper ); // Show it
731
  }
732
  $button_html = "<tr>";
733
 
734
  $html .= "</th>";
735
  }
736
 
737
+ $html .= "<td class='w-4/6 py-2 pl-5 bg-white rounded-lg '>";
738
+
739
+ if ( ! empty( $field['upgrade_desc'] ) ) {
740
+ $html .="<div class='flex'><div class='flex-none w-2/5'>";
741
+ }
742
+
743
  if ( ! empty( $field['sub_fields'] ) ) {
744
  $option_key = '';
745
  foreach ( $field['sub_fields'] as $field_key => $sub_field ) {
760
  $html .= $this->field_callback( $field );
761
  }
762
 
763
+ if ( ! empty( $field['upgrade_desc'] ) ) {
764
+ $html .="</div>
765
+ <div class='w-3/5'>
766
+ <div class='px-3 py-2 mr-2 rounded-md bg-teal-50'>
767
+ <div class='flex'>
768
+ <div class='flex-shrink-0'>
769
+ <svg class='w-5 h-5 text-teal-400' fill='currentColor' viewBox='0 0 20 20'>
770
+ <path fill-rule='evenodd' d='M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z' clip-rule='evenodd'/>
771
+ </svg>
772
+ </div>
773
+ <div class='ml-3'>
774
+ <h3 class='text-sm font-medium leading-5 text-teal-700'>";
775
+ $html .= $field['upgrade_title'] . "</h3>";
776
+ $html .= "<div class='mt-2 text-sm leading-5 text-teal-500'>
777
+ <p>". $field['upgrade_desc'] . "</p>
778
+ </div>
779
+ </div>
780
+ </div>
781
+ </div>
782
+ </div>";
783
+ }
784
+
785
  $html .= "</td></tr>";
786
  }
787
 
792
  $html .= '<input type="hidden" name="submitted" value="submitted" />';
793
  $html .= '<input type="hidden" name="submit_action" value="ig-es-save-admin-settings" />';
794
  $html .= $nonce_field;
795
+ $html .= '<input type="submit" name="submit" class="mx-6 my-2 cursor-pointer ig-es-primary-button" value="' . __( 'Save Settings', 'email-subscribers' ) . '">';
796
  $html .= "</td></tr>";
797
  $html .= "</tbody>";
798
  $html .= "</table>";
841
 
842
  foreach ( $mailers as $key => $mailer ) {
843
  $html .= '<label class="inline-flex items-center cursor-pointer">';
844
+ $html .= '<input type="radio" class="absolute w-0 h-0 opacity-0 es_mailer" name="ig_es_mailer_settings[mailer]" value="' . $key . '" ' . checked( $selected_mailer, $key, false ) . '></input>';
845
 
846
  if ( ! empty( $mailer['is_premium'] ) ) {
847
  $html .= '<a href="' . $mailer['url'] . '" target="_blank">';
848
  }
849
 
850
+ $html .= '<div class="mt-4 mr-4 border-2 border-gray-200 border-solid rounded-lg shadow-md es-mailer-logo">
851
+ <div class="border-0 es-logo-wrapper">
852
  <img src="' . $mailer['logo'] . '" alt="Default (none)">
853
  </div>'
854
  . $mailer['name'];
855
 
856
  if ( ! empty( $mailer['is_premium'] ) ) {
857
+ $html .= '<span class="inline-flex px-2 text-xs font-semibold leading-5 text-green-800 bg-green-100 rounded-full">Premium</span></a>';
858
  }
859
  $html .= '</div></label>';
860
  }
lite/includes/classes/class-es-campaigns-table.php CHANGED
@@ -42,7 +42,7 @@ class ES_Campaigns_Table extends WP_List_Table {
42
  $this->db = new ES_DB_Campaigns();
43
 
44
  add_action( 'ig_es_campaign_deleted', array( $this, 'delete_child_campaigns' ), 10, 1 );
45
-
46
  }
47
 
48
  /**
@@ -80,7 +80,7 @@ class ES_Campaigns_Table extends WP_List_Table {
80
  $this->db->delete_campaigns( $child_campaign_ids );
81
  }
82
  }
83
-
84
 
85
  /**
86
  * Render Campaigns table
@@ -90,53 +90,60 @@ class ES_Campaigns_Table extends WP_List_Table {
90
  public function render() {
91
  $action = ig_es_get_request_data( 'action' );
92
  global $ig_es_tracker;
 
93
 
 
 
 
 
 
 
94
  ?>
95
- <div class="wrap">
96
- <h1 class="wp-heading-inline"><span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate"><?php _e( 'Campaigns', 'email-subscribers' ) ?>
97
- <a href="admin.php?page=es_notifications&action=new" class="ig-es-title-button px-2 py-2 mx-1"><?php _e( 'Create Post Notification', 'email-subscribers' ) ?></a></span>
98
- <a href="admin.php?page=es_newsletters" class="ig-es-title-button px-2 py-2 mx-1"><?php _e( 'Send Broadcast', 'email-subscribers' ) ?></a>
99
- <?php do_action( 'ig_es_after_campaign_type_buttons' );
100
-
101
- $icegram_plugin = 'icegram/icegram.php';
102
- $active_plugins = $ig_es_tracker::get_active_plugins();
103
- if ( in_array( $icegram_plugin, $active_plugins ) ) {
104
- $redirect_url = admin_url( 'post-new.php?post_type=ig_campaign' );
105
- ?>
106
- <a href="<?php echo $redirect_url; ?>" class="ig-es-link-button px-2 py-2 mx-1"><?php _e( 'Onsite Campaigns', 'email-subscribers' ) ?></a>
107
- <?php } else { ?>
108
- <a href="admin.php?page=go_to_icegram&action=create_campaign" class="ig-es-link-button px-2 py-2 mx-1"><?php _e( 'Onsite Campaigns', 'email-subscribers' ) ?></a>
109
- <?php } ?>
110
-
111
- <a href="edit.php?post_type=es_template" class="ig-es-imp-button px-2 py-2 mx-1"><?php _e( 'Manage Templates', 'email-subscribers' ) ?></a>
112
-
113
-
114
- </h1>
115
- <div id="poststuff" class="es-items-lists">
116
- <div id="post-body" class="metabox-holder column-1">
117
- <div id="post-body-content">
118
- <div class="meta-box-sortables ui-sortable">
119
- <form method="post">
120
- <?php
121
- $this->prepare_items();
122
- $this->display(); ?>
123
- </form>
124
- </div>
125
- </div>
126
- </div>
127
- <br class="clear">
128
- </div>
129
- </div>
130
- <?php
131
- }
132
 
133
- public function custom_admin_notice() {
134
- $es_note_cat = ig_es_get_request_data( 'es_note_cat' );
135
 
136
- if ( $es_note_cat ) {
137
- echo '<div class="updated"><p>' . esc_html( 'Notification Added Successfully!', 'email-subscribers' ) . '</p></div>';
138
- }
139
  }
 
140
 
141
  /**
142
  * Retrieve lists data from the database
@@ -259,37 +266,37 @@ class ES_Campaigns_Table extends WP_List_Table {
259
  * @param string $column_name
260
  *
261
  * @return mixed
262
- *
263
  * @modified 4.4.4 Removed 'status' column switch case.
264
  */
265
  public function column_default( $item, $column_name ) {
266
  switch ( $column_name ) {
267
 
268
  case 'list_ids':
269
- if ( ! empty( $item[ $column_name ] ) ) {
270
- return ES()->lists_db->get_list_id_name_map( $item[ $column_name ] );
271
- } else {
272
- return '-';
273
- }
274
- break;
275
  case 'type':
276
- $type = ( $item[ $column_name ] === 'newsletter' ) ? __( 'Broadcast', 'email-subscribers' ) : $item[ $column_name ];
277
- $type = ucwords( str_replace( '_', ' ', $type ) );
278
 
279
- return $type;
280
- break;
281
  case 'categories':
282
- if ( ! empty( $item[ $column_name ] ) ) {
283
- $categories = ES_Common::convert_categories_string_to_array( $item[ $column_name ], false );
284
- $categories = strpos( $item[ $column_name ], '{a}All{a}' ) ? __( 'All', 'email-subscribers' ) : trim( trim( implode( ', ', $categories ) ), ',' );
285
 
286
- return $categories;
287
- } else {
288
- return '-';
289
- }
290
- break;
291
  default:
292
- return $item[ $column_name ];
293
  }
294
  }
295
 
@@ -320,34 +327,44 @@ class ES_Campaigns_Table extends WP_List_Table {
320
 
321
  $nonce = wp_create_nonce( 'es_post_notification' );
322
 
323
- if ( $type !== 'newsletter' ) {
324
-
325
- $template = get_post( $item['base_template_id'] );
326
 
 
327
  if ( $template instanceof WP_Post ) {
328
  $title = '<strong>' . $template->post_title . '</strong>';
329
  } else {
330
  $title = ! empty( $item['name'] ) ? $item['name'] : '';
331
  }
332
-
333
  $slug = ( in_array( $item['type'], array( 'post_notification', 'post_digest' ) ) ) ? esc_attr( 'es_notifications' ) : 'es_' . $item['type'];
334
-
335
  $actions ['edit'] = sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s" class="text-indigo-600">Edit</a>', 'email-subscribers' ), $slug, 'edit', absint( $item['id'] ), $nonce );
336
- $actions['delete'] = sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s" onclick="return checkDelete()">Delete</a>', 'email-subscribers' ), esc_attr( 'es_campaigns' ), 'delete', absint( $item['id'] ), $nonce );
337
-
338
- $title .= $this->row_actions( $actions );
339
  } else {
340
- $title = $item['name'];
 
 
 
 
 
 
 
 
 
 
 
 
341
  }
342
 
 
 
 
 
343
  return $title;
344
  }
345
 
346
  /**
347
  * Method for campaign status HTML
348
- *
349
  * @return string $status_html Campaign status HTML.
350
- *
351
  * @since 4.4.4
352
  */
353
  function column_status( $item ) {
@@ -357,42 +374,97 @@ class ES_Campaigns_Table extends WP_List_Table {
357
  IG_ES_CAMPAIGN_STATUS_ACTIVE,
358
  IG_ES_CAMPAIGN_STATUS_IN_ACTIVE
359
  );
360
-
361
- if( in_array( $campaign_status, $campaign_statuses, true ) ) {
 
 
 
 
 
362
  ?>
363
  <label for="<?php echo esc_attr( 'ig-es-campaign-status-toggle-' . $campaign_id ); ?>" class="ig-es-campaign-status-toggle-label inline-flex items-center cursor-pointer">
364
  <span class="relative">
365
  <input id="<?php echo esc_attr( 'ig-es-campaign-status-toggle-' . $campaign_id ); ?>" type="checkbox" class="absolute es-check-toggle opacity-0 w-0 h-0" name="<?php echo esc_attr( 'ig-es-campaign-status-toggle-' . $campaign_id ); ?>" value="<?php echo esc_attr( $campaign_id ); ?>" <?php checked( IG_ES_CAMPAIGN_STATUS_ACTIVE, $campaign_status ); ?>>
366
  <span class="es-mail-toggle-line inline-block w-10 h-6 bg-gray-300 rounded-full shadow-inner"></span>
367
- <span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-4 h-4 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline"></span>
368
  </span>
369
  </label>
370
  <?php
371
  } else {
372
  switch ( $campaign_status ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
373
  case IG_ES_CAMPAIGN_STATUS_SCHEDULED:
374
- ?>
375
- <span class="dashicons dashicons-backup" title="<?php echo esc_attr__( 'Scheduled', 'email-subscribers' ); ?>"></span>
376
- <?php
377
- break;
378
-
 
 
 
379
  case IG_ES_CAMPAIGN_STATUS_QUEUED:
380
- ?>
381
- <span class="dashicons dashicons-image-rotate" title="<?php echo esc_attr__( 'Queued', 'email-subscribers' ); ?>"></span>
382
- <?php
383
- break;
 
 
 
384
 
385
  case IG_ES_CAMPAIGN_STATUS_PAUSED:
386
- ?>
387
- <span class="dashicons dashicons-controls-pause" title="<?php echo esc_attr__( 'Paused', 'email-subscribers' ); ?>"></span>
 
 
388
  <?php
389
  break;
390
 
391
  default:
392
- ?>
393
- <span class="dashicons dashicons-yes-alt" title="<?php echo esc_attr__( 'Finished', 'email-subscribers' ); ?>"></span>
394
- <?php
395
- break;
 
 
 
396
  }
397
  }
398
  ?>
@@ -457,11 +529,11 @@ class ES_Campaigns_Table extends WP_List_Table {
457
  * @since 4.3.4 Added esc_attr()
458
  */
459
  public function search_box( $text = '', $input_id = '' ) { ?>
460
- <p class="search-box">
461
- <label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
462
- <input type="search" id="<?php echo $input_id ?>" name="s" value="<?php _admin_search_query(); ?>"/>
463
  <?php submit_button( __( 'Search Campaigns', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
464
- </p>
465
  <?php }
466
 
467
  /**
42
  $this->db = new ES_DB_Campaigns();
43
 
44
  add_action( 'ig_es_campaign_deleted', array( $this, 'delete_child_campaigns' ), 10, 1 );
45
+
46
  }
47
 
48
  /**
80
  $this->db->delete_campaigns( $child_campaign_ids );
81
  }
82
  }
83
+
84
 
85
  /**
86
  * Render Campaigns table
90
  public function render() {
91
  $action = ig_es_get_request_data( 'action' );
92
  global $ig_es_tracker;
93
+ if( 'broadcast_created' === $action ) {
94
 
95
+ // Trigger feedback popup for broadcast creation.
96
+ do_action( 'ig_es_broadcast_created' );
97
+
98
+ $message = __( 'Broadcast has been created successfully.', 'email-subscribers' );
99
+ ES_Common::show_message( $message, 'success' );
100
+ }
101
  ?>
102
+ <div class="wrap">
103
+ <h1 class="wp-heading-inline"><span class="text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate"><?php _e( 'Campaigns', 'email-subscribers' ) ?>
104
+ <a href="admin.php?page=es_notifications&action=new" class="ig-es-title-button px-2 py-2 mx-1"><?php _e( 'Create Post Notification', 'email-subscribers' ) ?></a></span>
105
+ <a href="admin.php?page=es_newsletters" class="ig-es-title-button px-2 py-2 mx-1"><?php _e( 'Send Broadcast', 'email-subscribers' ) ?></a>
106
+ <?php do_action( 'ig_es_after_campaign_type_buttons' );
107
+
108
+ $icegram_plugin = 'icegram/icegram.php';
109
+ $active_plugins = $ig_es_tracker::get_active_plugins();
110
+ if ( in_array( $icegram_plugin, $active_plugins ) ) {
111
+ $redirect_url = admin_url( 'post-new.php?post_type=ig_campaign' );
112
+ ?>
113
+ <a href="<?php echo $redirect_url; ?>" class="ig-es-link-button px-2 py-2 mx-1"><?php _e( 'Onsite Campaigns', 'email-subscribers' ) ?></a>
114
+ <?php } else { ?>
115
+ <a href="admin.php?page=go_to_icegram&action=create_campaign" class="ig-es-link-button px-2 py-2 mx-1"><?php _e( 'Onsite Campaigns', 'email-subscribers' ) ?></a>
116
+ <?php } ?>
117
+
118
+ <a href="edit.php?post_type=es_template" class="ig-es-imp-button px-2 py-2 mx-1"><?php _e( 'Manage Templates', 'email-subscribers' ) ?></a>
119
+
120
+
121
+ </h1>
122
+ <div id="poststuff" class="es-items-lists">
123
+ <div id="post-body" class="metabox-holder column-1">
124
+ <div id="post-body-content">
125
+ <div class="meta-box-sortables ui-sortable">
126
+ <form method="post">
127
+ <?php
128
+ $this->prepare_items();
129
+ $this->display(); ?>
130
+ </form>
131
+ </div>
132
+ </div>
133
+ </div>
134
+ <br class="clear">
135
+ </div>
136
+ </div>
137
+ <?php
138
+ }
139
 
140
+ public function custom_admin_notice() {
141
+ $es_note_cat = ig_es_get_request_data( 'es_note_cat' );
142
 
143
+ if ( $es_note_cat ) {
144
+ echo '<div class="updated"><p>' . esc_html( 'Notification Added Successfully!', 'email-subscribers' ) . '</p></div>';
 
145
  }
146
+ }
147
 
148
  /**
149
  * Retrieve lists data from the database
266
  * @param string $column_name
267
  *
268
  * @return mixed
269
+ *
270
  * @modified 4.4.4 Removed 'status' column switch case.
271
  */
272
  public function column_default( $item, $column_name ) {
273
  switch ( $column_name ) {
274
 
275
  case 'list_ids':
276
+ if ( ! empty( $item[ $column_name ] ) ) {
277
+ return ES()->lists_db->get_list_id_name_map( $item[ $column_name ] );
278
+ } else {
279
+ return '-';
280
+ }
281
+ break;
282
  case 'type':
283
+ $type = ( $item[ $column_name ] === 'newsletter' ) ? __( 'Broadcast', 'email-subscribers' ) : $item[ $column_name ];
284
+ $type = ucwords( str_replace( '_', ' ', $type ) );
285
 
286
+ return $type;
287
+ break;
288
  case 'categories':
289
+ if ( ! empty( $item[ $column_name ] ) ) {
290
+ $categories = ES_Common::convert_categories_string_to_array( $item[ $column_name ], false );
291
+ $categories = strpos( $item[ $column_name ], '{a}All{a}' ) ? __( 'All', 'email-subscribers' ) : trim( trim( implode( ', ', $categories ) ), ',' );
292
 
293
+ return $categories;
294
+ } else {
295
+ return '-';
296
+ }
297
+ break;
298
  default:
299
+ return $item[ $column_name ];
300
  }
301
  }
302
 
327
 
328
  $nonce = wp_create_nonce( 'es_post_notification' );
329
 
330
+ $template = get_post( $item['base_template_id'] );
 
 
331
 
332
+ if ( $type !== 'newsletter' ) {
333
  if ( $template instanceof WP_Post ) {
334
  $title = '<strong>' . $template->post_title . '</strong>';
335
  } else {
336
  $title = ! empty( $item['name'] ) ? $item['name'] : '';
337
  }
 
338
  $slug = ( in_array( $item['type'], array( 'post_notification', 'post_digest' ) ) ) ? esc_attr( 'es_notifications' ) : 'es_' . $item['type'];
 
339
  $actions ['edit'] = sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s" class="text-indigo-600">Edit</a>', 'email-subscribers' ), $slug, 'edit', absint( $item['id'] ), $nonce );
 
 
 
340
  } else {
341
+
342
+ $title = $item['name'];
343
+ $slug = 'es_newsletters';
344
+ $status = $item['status'];
345
+
346
+ $broadcast_allowed_edit_statuses = array(
347
+ IG_ES_CAMPAIGN_STATUS_IN_ACTIVE,
348
+ IG_ES_CAMPAIGN_STATUS_SCHEDULED
349
+ );
350
+
351
+ if( in_array( $status, $broadcast_allowed_edit_statuses ) ) {
352
+ $actions ['edit'] = sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s" class="text-indigo-600">Edit</a>', 'email-subscribers' ), $slug, 'edit', absint( $item['id'] ), $nonce );
353
+ }
354
  }
355
 
356
+ $actions['delete'] = sprintf( __( '<a href="?page=%s&action=%s&list=%s&_wpnonce=%s" onclick="return checkDelete()">Delete</a>', 'email-subscribers' ), esc_attr( 'es_campaigns' ), 'delete', absint( $item['id'] ), $nonce );
357
+
358
+ $title .= $this->row_actions( $actions );
359
+
360
  return $title;
361
  }
362
 
363
  /**
364
  * Method for campaign status HTML
365
+ *
366
  * @return string $status_html Campaign status HTML.
367
+ *
368
  * @since 4.4.4
369
  */
370
  function column_status( $item ) {
374
  IG_ES_CAMPAIGN_STATUS_ACTIVE,
375
  IG_ES_CAMPAIGN_STATUS_IN_ACTIVE
376
  );
377
+
378
+ $campaign_type = '';
379
+ if( ! empty( $campaign_id ) ) {
380
+ $campaign_type = ES()->campaigns_db->get_campaign_type_by_id( $campaign_id );
381
+ }
382
+
383
+ if( 'newsletter' !== $campaign_type && in_array( $campaign_status, $campaign_statuses, true ) ) {
384
  ?>
385
  <label for="<?php echo esc_attr( 'ig-es-campaign-status-toggle-' . $campaign_id ); ?>" class="ig-es-campaign-status-toggle-label inline-flex items-center cursor-pointer">
386
  <span class="relative">
387
  <input id="<?php echo esc_attr( 'ig-es-campaign-status-toggle-' . $campaign_id ); ?>" type="checkbox" class="absolute es-check-toggle opacity-0 w-0 h-0" name="<?php echo esc_attr( 'ig-es-campaign-status-toggle-' . $campaign_id ); ?>" value="<?php echo esc_attr( $campaign_id ); ?>" <?php checked( IG_ES_CAMPAIGN_STATUS_ACTIVE, $campaign_status ); ?>>
388
  <span class="es-mail-toggle-line inline-block w-10 h-6 bg-gray-300 rounded-full shadow-inner"></span>
389
+ <span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-4 h-4 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline"></span>
390
  </span>
391
  </label>
392
  <?php
393
  } else {
394
  switch ( $campaign_status ) {
395
+
396
+ case IG_ES_CAMPAIGN_STATUS_ACTIVE:
397
+ $notification = ES_DB_Mailing_Queue::get_notification_by_campaign_id( $campaign_id );
398
+ if( ! empty( $notification ) ) {
399
+ $notification_status = $notification['status'];
400
+ if( 'In Queue' === $notification_status ) {
401
+ ?>
402
+ <svg class="flex-shrink-0 ml-2 h-6 w-6 text-orange-400" fill="currentColor" viewBox="0 0 20 20">
403
+ <title><?php echo esc_attr__( 'Scheduled', 'email-subscribers' ); ?></title>
404
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/>
405
+ </svg>
406
+ <?php
407
+ } else if( 'Sending' === $notification_status ) {
408
+ ?>
409
+ <svg class="flex-shrink-0 ml-2 h-6 w-6 text-yellow-400" fill="currentColor" viewBox="0 0 20 20">
410
+ <title><?php echo esc_attr__( 'Sending', 'email-subscribers' ); ?></title>
411
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-8.707l-3-3a1 1 0 00-1.414 1.414L10.586 9H7a1 1 0 100 2h3.586l-1.293 1.293a1 1 0 101.414 1.414l3-3a1 1 0 000-1.414z" clip-rule="evenodd"/>
412
+ </svg>
413
+ <?php
414
+ } else {
415
+ ?>
416
+ <svg class="flex-shrink-0 ml-2 h-6 w-6 text-green-400" fill="currentColor" viewBox="0 0 20 20" >
417
+ <title><?php echo esc_attr__( 'Sent', 'email-subscribers' ); ?></title>
418
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/>
419
+ </svg>
420
+ <?php
421
+ }
422
+ }
423
+ break;
424
+
425
+ case IG_ES_CAMPAIGN_STATUS_IN_ACTIVE:
426
+ ?>
427
+ <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="ml-2 h-6 w-6 text-indigo-600">
428
+ <title><?php echo esc_attr__( 'Draft', 'email-subscribers' ); ?></title>
429
+ <path d="M11 5H6a2 2 0 00-2 2v11a2 2 0 002 2h11a2 2 0 002-2v-5m-1.414-9.414a2 2 0 112.828 2.828L11.828 15H9v-2.828l8.586-8.586z"></path>
430
+ </svg>
431
+ <?php
432
+ break;
433
+
434
  case IG_ES_CAMPAIGN_STATUS_SCHEDULED:
435
+ ?>
436
+ <svg class="flex-shrink-0 ml-2 h-6 w-6 text-orange-400" fill="currentColor" viewBox="0 0 20 20">
437
+ <title><?php echo esc_attr__( 'Scheduled', 'email-subscribers' ); ?></title>
438
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm1-12a1 1 0 10-2 0v4a1 1 0 00.293.707l2.828 2.829a1 1 0 101.415-1.415L11 9.586V6z" clip-rule="evenodd"/>
439
+ </svg>
440
+ <?php
441
+ break;
442
+
443
  case IG_ES_CAMPAIGN_STATUS_QUEUED:
444
+ ?>
445
+ <svg class="flex-shrink-0 ml-2 h-6 w-6 text-yellow-400" fill="currentColor" viewBox="0 0 20 20">
446
+ <title><?php echo esc_attr__( 'Sending', 'email-subscribers' ); ?></title>
447
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-8.707l-3-3a1 1 0 00-1.414 1.414L10.586 9H7a1 1 0 100 2h3.586l-1.293 1.293a1 1 0 101.414 1.414l3-3a1 1 0 000-1.414z" clip-rule="evenodd"/></svg>
448
+ </svg>
449
+ <?php
450
+ break;
451
 
452
  case IG_ES_CAMPAIGN_STATUS_PAUSED:
453
+ ?>
454
+ <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="ml-2 h-6 w-6 text-blue-400">
455
+ <title><?php echo esc_attr__( 'Paused', 'email-subscribers' ); ?></title>
456
+ <path d="M10 9v6m4-6v6m7-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
457
  <?php
458
  break;
459
 
460
  default:
461
+ ?>
462
+ <svg class="flex-shrink-0 ml-2 h-6 w-6 text-green-400" fill="currentColor" viewBox="0 0 20 20" >
463
+ <title><?php echo esc_attr__( 'Sent', 'email-subscribers' ); ?></title>
464
+ <path fill-rule="evenodd" d="M10 18a8 8 0 100-16 8 8 0 000 16zm3.707-9.293a1 1 0 00-1.414-1.414L9 10.586 7.707 9.293a1 1 0 00-1.414 1.414l2 2a1 1 0 001.414 0l4-4z" clip-rule="evenodd"/>
465
+ </svg>
466
+ <?php
467
+ break;
468
  }
469
  }
470
  ?>
529
  * @since 4.3.4 Added esc_attr()
530
  */
531
  public function search_box( $text = '', $input_id = '' ) { ?>
532
+ <p class="search-box">
533
+ <label class="screen-reader-text" for="<?php echo esc_attr( $input_id ); ?>"><?php echo esc_attr( $text ); ?>:</label>
534
+ <input type="search" id="<?php echo $input_id ?>" name="s" value="<?php _admin_search_query(); ?>"/>
535
  <?php submit_button( __( 'Search Campaigns', 'email-subscribers' ), 'button', false, false, array( 'id' => 'search-submit' ) ); ?>
536
+ </p>
537
  <?php }
538
 
539
  /**
lite/includes/classes/class-es-contact-background-process.php DELETED
@@ -1,1056 +0,0 @@
1
- <?php
2
- /**
3
- * Class to handle export/import of ES contacts in background
4
- *
5
- * @author Icegram
6
- * @since 4.4.4
7
- * @version 1.0.0
8
- *
9
- * @package Email Subscribers
10
- */
11
-
12
- if ( ! defined( 'ABSPATH' ) ) {
13
- exit; // Exit if accessed directly.
14
- }
15
-
16
- if ( ! class_exists( 'ES_Contact_Background_Process' ) ) {
17
-
18
- /**
19
- * ES_Contact_Background_Process Class.
20
- */
21
- class ES_Contact_Background_Process {
22
-
23
- /**
24
- * Start time of current process.
25
- *
26
- * (default value: 0)
27
- *
28
- * @var int
29
- * @access protected
30
- */
31
- protected $start_time = 0;
32
-
33
- /**
34
- * Identifier
35
- *
36
- * @var mixed
37
- * @access protected
38
- */
39
- protected $identifier;
40
-
41
- /**
42
- * Background process status
43
- *
44
- * (default value: '')
45
- *
46
- * @var string
47
- * @access protected
48
- */
49
- protected $is_process_running = '';
50
-
51
- /**
52
- * Variable to hold instance of ES_Contact_Background_Process
53
- *
54
- * @var $instance
55
- */
56
- private static $instance = null;
57
-
58
- /**
59
- * Contructor
60
- *
61
- * @since 4.4.4
62
- */
63
- private function __construct() {
64
-
65
- $this->identifier = 'ig_es_contact_background_process';
66
- add_action( 'admin_enqueue_scripts', array( $this, 'contact_background_notice' ), 11 );
67
- add_action( 'wp_ajax_ig_es_contact_background_progress', array( $this, 'ajax_contact_background_progress' ) );
68
- add_action( 'wp_ajax_ig_es_get_background_process_results', array( $this, 'ajax_get_background_process_results' ) );
69
- add_action( 'wp_ajax_ig_es_cancel_contact_background_process', array( $this, 'ajax_cancel_contact_background_process' ) );
70
- add_action( 'wp_ajax_ig_es_download_csv', array( $this, 'ajax_download_csv' ) );
71
- add_action( 'ig_es_add_contact_to_csv', array( $this, 'add_contact_to_csv' ) );
72
- add_action( 'ig_es_import_contacts_from_csv', array( $this, 'import_contacts_from_csv' ) );
73
-
74
- add_action( 'action_scheduler_failed_action', array( $this, 'restart_failed_action' ) );
75
- add_filter( 'cron_schedules', array( $this, 'modify_action_scheduler_default_interval' ), 1000 ); // phpcs:ignore
76
- }
77
-
78
- /**
79
- * Get single instance of ES_Contact_Background_Process
80
- *
81
- * @return ES_Contact_Background_Process Singleton object of ES_Contact_Background_Process
82
- *
83
- * @since 4.4.4
84
- */
85
- public static function get_instance() {
86
- // Check if instance is already exists.
87
- if ( is_null( self::$instance ) ) {
88
- self::$instance = new self();
89
- }
90
-
91
- return self::$instance;
92
- }
93
-
94
- /**
95
- * Memory exceeded
96
- *
97
- * Ensures the batch process never exceeds 80%
98
- * of the maximum WordPress memory.
99
- *
100
- * @return bool
101
- *
102
- * @since 4.4.4
103
- */
104
- protected function memory_exceeded() {
105
- $memory_limit = $this->get_memory_limit() * 0.8; // 80% of max memory
106
- $current_memory = memory_get_usage( true );
107
-
108
- if ( $current_memory >= $memory_limit ) {
109
- return true;
110
- }
111
-
112
- return false;
113
- }
114
-
115
- /**
116
- * Get memory limit.
117
- *
118
- * @return int
119
- *
120
- * @since 4.4.4
121
- */
122
- protected function get_memory_limit() {
123
- if ( function_exists( 'ini_get' ) ) {
124
- $memory_limit = ini_get( 'memory_limit' );
125
- } else {
126
- // Sensible default.
127
- $memory_limit = '128M';
128
- }
129
-
130
- if ( ! $memory_limit || -1 === intval( $memory_limit ) ) {
131
- // Unlimited, set to 32GB.
132
- $memory_limit = '32G';
133
- }
134
-
135
- return wp_convert_hr_to_bytes( $memory_limit );
136
- }
137
-
138
- /**
139
- * Time exceeded.
140
- *
141
- * Ensures the batch never exceeds a sensible time limit.
142
- * A timeout limit of 30s is common on shared hosting.
143
- *
144
- * @param string $start_time start timestamp.
145
- *
146
- * @return bool
147
- *
148
- * @since 4.4.4
149
- */
150
- protected function time_exceeded( $start_time = '' ) {
151
-
152
- if ( ! empty( $start_time ) ) {
153
- $this->start_time = $start_time;
154
- }
155
-
156
- $finish = $this->start_time + ( $this->get_time_limit() * 0.8 );
157
- $return = false;
158
-
159
- if ( time() >= $finish ) {
160
- $return = true;
161
- }
162
-
163
- return apply_filters( $this->identifier . '_time_exceeded', $return );
164
- }
165
-
166
- /**
167
- * Method to get Server time limit
168
- *
169
- * @return int $time_limit Server time limit.
170
- *
171
- * @since 4.4.4
172
- */
173
- protected function get_time_limit() {
174
- if ( function_exists( 'ini_get' ) ) {
175
- $time_limit = ini_get( 'max_execution_time' );
176
- } else {
177
- // Sensible default.
178
- $time_limit = apply_filters( $this->identifier . '_default_time_limit', 20 );
179
- }
180
-
181
- $time_limit = (int) $time_limit;
182
- return $time_limit;
183
- }
184
-
185
- /**
186
- * Display notice if a background process is already running or is completed
187
- *
188
- * @since 4.4.4
189
- */
190
- public function contact_background_notice() {
191
-
192
- if ( ! ES()->is_es_admin_screen() ) {
193
- return;
194
- }
195
-
196
- if ( ! wp_script_is( 'jquery' ) ) {
197
- wp_enqueue_script( 'jquery' );
198
- }
199
-
200
- $upload_dir = wp_upload_dir();
201
- $upload_path = $upload_dir['path'];
202
- $background_process_data = array();
203
- ob_start();
204
- if ( ! empty( $upload_dir['error'] ) ) {
205
- ?>
206
- <div id="ig_es_folder_permission_warning" class="error">
207
- <p>
208
- <span class="dashicons dashicons-warning"></span>&nbsp;
209
- <?php /* translators: 1. Important 2. Upload path */ ?>
210
- <?php echo sprintf( esc_html__( '%1$s: To allow import/export of contacts, please make sure %2$s directory is writable.', 'email-subscribers' ), '<strong>' . esc_html__( 'Important', 'email-subscribers' ) . '</strong>', '<strong><code>' . esc_html( $upload_path ) . '</code></strong>' ); ?>
211
- </p>
212
- </div>
213
- <?php
214
- } else {
215
- $action = ig_es_get_request_data( 'action' );
216
- $is_process_running = $this->is_process_running();
217
- $background_process_result = get_site_option( 'ig_es_contact_background_process_result', false );
218
-
219
- // If background process is not running and there isn't any background process result to show then return.
220
- if( 'no' === $is_process_running && empty( $background_process_result ) ) {
221
- return;
222
- }
223
-
224
- // Show background process notification only on import/export admin pages.
225
- if( in_array( $action, array( 'import', 'export' ), true ) ) {
226
- // Show background process in progress message.
227
- if ( 'yes' === $is_process_running ) {
228
- ?>
229
- <div id="ig_es_contact_background_progress" class="error">
230
- <p>
231
- <?php
232
- $process_data = get_site_option( 'ig_es_contact_background_process_data', false );
233
-
234
- if( ! empty( $process_data ) ) {
235
- $bulk_action = $process_data['action'];
236
-
237
- switch ( $bulk_action ) {
238
- case 'import_contact':
239
- $bulk_text = __( 'imported', 'email-subscribers' );
240
- break;
241
-
242
- case 'export_contact':
243
- $bulk_text = __( 'exported', 'email-subscribers' );
244
- break;
245
-
246
- default:
247
- $bulk_text = '';
248
- break;
249
- }
250
-
251
- echo '<strong>' . esc_html__( 'Important', 'email-subscribers' ) . '</strong>: ' . esc_html__( 'Contacts are being', 'email-subscribers' );
252
- echo '&nbsp;' . esc_html( $bulk_text ) . '&nbsp;';
253
- echo esc_html__( 'in the background.', 'email-subscribers' ) . '&nbsp;';
254
- $process_progress = $this->calculate_contact_background_progress();
255
- if( ! empty( $process_progress['percent_completion'] ) ) {
256
- $percent_completion = $process_progress['percent_completion'];
257
- } else {
258
- $percent_completion = 0;
259
- }
260
- ?>
261
- <span id="ig_es_contact_background_prcess_percentage_wrapper">
262
- <?php echo esc_html__( 'Progress', 'email-subscribers' ); ?>:&nbsp;
263
- <strong><span id="ig_es_background_process_percentage"><?php echo esc_html( $percent_completion ); ?>%</span></strong>
264
- </span>
265
- <?php
266
- }
267
- ?>
268
- </p>
269
- <p>
270
- <?php
271
- echo __( '<a href="#" id="ig-es-cancel-contact-background-process">Click here</a> to cancel this request.', 'email-subscribers' );
272
- ?>
273
- </p>
274
- </div>
275
- <?php
276
- }
277
- }
278
-
279
- // If background process is running then check it's progress continuously with the interval of 5 seconds.
280
- if( 'yes' === $is_process_running ) {
281
- $background_process_data['status'] = 'running';
282
- } else {
283
- // Check if background process is finished then gets its result HTML.
284
- if( ! empty( $background_process_result ) ) {
285
- $this->get_background_process_results_html( $background_process_result );
286
- }
287
- }
288
- }
289
-
290
- $notice_html = ob_get_clean();
291
- $background_process_data['notice_html'] = $notice_html;
292
- wp_localize_script( 'email-subscribers', 'background_process_data', $background_process_data );
293
- }
294
-
295
- /**
296
- * Get background process progress via ajax
297
- *
298
- * @since 4.4.4
299
- */
300
- public function ajax_contact_background_progress() {
301
-
302
- check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
303
-
304
- $response = array();
305
-
306
- $progress = $this->calculate_contact_background_progress();
307
-
308
- if ( isset( $progress['percent_completion'] ) ) {
309
- $response['percent_completion'] = $progress['percent_completion'];
310
- }
311
-
312
- $process_data = get_site_option( 'ig_es_contact_background_process_data', false );
313
-
314
- if ( ! empty( $process_data ) ) {
315
-
316
- $contact_action = $process_data['action'];
317
- $response['contact_action'] = $contact_action;
318
- } else {
319
- $process_result = get_site_option( 'ig_es_contact_background_process_result', false );
320
- if( ! empty( $process_result ) ) {
321
- $response['percent_completion'] = 100;
322
- $response['contact_action'] = $process_result['action'];
323
- }
324
- }
325
-
326
- wp_send_json( $response );
327
- }
328
-
329
- /**
330
- * Get exported CSV file.
331
- *
332
- * @since 4.4.4
333
- */
334
- public function ajax_download_csv() {
335
-
336
- check_ajax_referer( 'ig_es_download_csv', 'download_nonce' );
337
-
338
- $background_process_result = get_site_option( 'ig_es_contact_background_process_result', false );
339
-
340
- if ( $background_process_result ) {
341
-
342
- $file_path = $background_process_result['action_data']['csv_file_path'];
343
- $file_name = basename( $file_path );
344
- $dirname = dirname( $file_path );
345
- $mime_type = 'text/x-csv';
346
-
347
- if ( file_exists( $file_path ) && is_readable( $file_path ) ) {
348
-
349
- nocache_headers();
350
- header( 'X-Robots-Tag: noindex, nofollow', true );
351
- header( 'Content-Type: ' . $mime_type . '; charset=UTF-8' );
352
- header( 'Content-Description: File Transfer' );
353
- header( 'Content-Transfer-Encoding: binary' );
354
- header( 'Content-Disposition: attachment; filename="' . sanitize_file_name( $file_name ) . '";' );
355
- readfile( $file_path ); // phpcs:ignore
356
- unlink( $file_path );
357
- } else {
358
- echo esc_html__( 'Failed to create export file.', 'email-subscribers' );
359
- exit();
360
- }
361
-
362
- delete_site_option( 'ig_es_contact_background_process_result' );
363
- exit();
364
-
365
- }
366
- }
367
-
368
- /**
369
- * Cancel current background process
370
- *
371
- * @since 4.4.4.1
372
- */
373
- public function ajax_cancel_contact_background_process() {
374
-
375
- check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
376
- $response = array();
377
- $background_process_data = get_site_option( 'ig_es_contact_background_process_data', false );
378
- ob_start();
379
- if ( $background_process_data ) {
380
-
381
- if( 'export_contact' === $background_process_data['action'] ) {
382
- $csv_file_folder = ! empty( $background_process_data['export_file']['wp_upload_dir'] ) ? $background_process_data['export_file']['wp_upload_dir'] : '';
383
- $csv_file_name = ! empty( $background_process_data['export_file']['file_name'] ) ? $background_process_data['export_file']['file_name'] : '';
384
- $csv_file_path = $csv_file_folder . $csv_file_name;
385
- } else if( 'import_contact' === $background_process_data['action'] ) {
386
- $csv_file_path = ! empty( $background_process_data['import_file']['file'] ) ? $background_process_data['import_file']['file'] : '';
387
- }
388
-
389
- if( ! empty( $csv_file_path ) && file_exists( $csv_file_path ) ) {
390
- // Delete CSV file being used in the process.
391
- unlink( $csv_file_path );
392
- }
393
-
394
- // Delete data related to background process.
395
- delete_site_option( 'ig_es_contact_background_process_data' );
396
- delete_site_option( 'ig_es_contact_background_process_result' );
397
-
398
- // Unschedule existing scheduled action schedulers.
399
- as_unschedule_action( 'ig_es_add_contact_to_csv' );
400
- as_unschedule_action( 'ig_es_import_contacts_from_csv' );
401
- ?>
402
- <div id="ig_es_contact_background_results" class="updated">
403
- <p>
404
- <?php
405
- echo __( 'The background process has been canceled successfully. You can start a new process again by importing or exporting.', 'email-subscribers' );
406
- ?>
407
- </p>
408
- </div>
409
- <?php
410
- } else {
411
- // Till we processed this cancel request current import/export process got completed therefore show success background message instead.
412
- $background_process_result = get_site_option( 'ig_es_contact_background_process_result', false );
413
- if( false !== $background_process_result ) {
414
- $this->get_background_process_results_html( $background_process_result );
415
- }
416
- }
417
- $response_html = ob_get_clean();
418
- $response['response_html'] = $response_html;
419
- wp_send_json( $response );
420
- }
421
-
422
- /**
423
- * Checks if background process is running
424
- *
425
- * @return string $is_process_running
426
- *
427
- * @since 4.4.4
428
- */
429
- public function is_process_running() {
430
-
431
- // Return process status if it has already been saved.
432
- if ( ! empty( $this->is_process_running ) ) {
433
- return $this->is_process_running;
434
- }
435
-
436
- $process_data = get_site_option( 'ig_es_contact_background_process_data', false );
437
- $this->is_process_running = ( ! empty( $process_data ) ) ? 'yes' : 'no';
438
-
439
- return $this->is_process_running;
440
- }
441
-
442
- /**
443
- * Calculate progress of background contact process
444
- *
445
- * @return array $progress
446
- *
447
- * @since 4.4.4
448
- */
449
- public function calculate_contact_background_progress() {
450
-
451
- $progress = array();
452
- $process_data = get_site_option( 'ig_es_contact_background_process_data', false );
453
-
454
- if( ! empty( $process_data ) ) {
455
- $total_contacts_to_process = ! empty( $process_data['total_contacts_to_process'] ) ? $process_data['total_contacts_to_process'] : 0;
456
- $total_contacts_processed = ! empty( $process_data['total_contacts_processed'] ) ? $process_data['total_contacts_processed'] : 0;
457
-
458
- $percent_completion = 0;
459
- if ( ! empty( $total_contacts_to_process ) ) {
460
- $percent_completion = ( ( intval( $total_contacts_processed ) ) * 100 ) / intval( $total_contacts_to_process );
461
- }
462
-
463
- $progress['percent_completion'] = round( $percent_completion, 2 );
464
- }
465
-
466
- return $progress;
467
- }
468
-
469
- /**
470
- * Add Contacts to CSV from saved contact's data
471
- *
472
- * @since 4.4.4
473
- */
474
- public function add_contact_to_csv() {
475
-
476
- global $wpdb;
477
-
478
- $process_data = get_site_option( 'ig_es_contact_background_process_data', true );
479
-
480
- // Check status of contacts to be exported. Return if empty.
481
- if( empty( $process_data['contact_status'] ) ) {
482
- return;
483
- }
484
-
485
- $contact_status = $process_data['contact_status'];
486
- $total_contacts_processed = ! empty( $process_data['total_contacts_processed'] ) ? $process_data['total_contacts_processed'] : 0;
487
- $list_id = ! empty( $process_data['list_id'] ) ? $process_data['list_id'] : 0; // Contact list id.
488
- $last_contact_id = ! empty( $process_data['last_contact_id'] ) ? $process_data['last_contact_id'] : 0; // ID of last exported contact.
489
-
490
- $email_subscribe_table = IG_CONTACTS_TABLE;
491
-
492
- $contact_results = array();
493
- if ( 'all' === $contact_status ) {
494
- $contact_results = ES()->lists_contacts_db->get_all_contacts();
495
- } elseif ( 'subscribed' === $contact_status ) {
496
- $contact_results = ES()->lists_contacts_db->get_all_subscribed_contacts();
497
- } elseif ( 'unsubscribed' === $contact_status ) {
498
- $contact_results = ES()->lists_contacts_db->get_all_unsubscribed_contacts();
499
- } elseif ( 'confirmed' === $contact_status ) {
500
- $contact_results = ES()->lists_contacts_db->get_all_confirmed_contacts();
501
- } elseif ( 'unconfirmed' === $contact_status ) {
502
- $contact_results = ES()->lists_contacts_db->get_all_unconfirmed_contacts();
503
- } elseif ( 'select_list' === $contact_status ) {
504
- $list_id = absint( $list_id );
505
- $contact_results = ES()->lists_contacts_db->get_all_contacts_from_list( $list_id );
506
- }
507
-
508
- $subscribers = array();
509
-
510
- // Set fail safe limit to process contact to export.
511
- $fail_safe_limit = apply_filters( 'ig_es_fail_safe_contact_export_limit', 1000 );
512
-
513
- // ID of last processed contact list data.
514
- $last_processed_list_contact_id = ! empty( $process_data['last_processed_list_contact_id'] ) ? $process_data['last_processed_list_contact_id'] : 0;
515
-
516
- if ( count( $contact_results ) > 0 ) {
517
- $total_contacts_to_process = count( $contact_results );
518
-
519
- $process_data['total_contacts_to_process'] = $total_contacts_to_process;
520
- $contact_list_map = array();
521
- $contact_ids = array();
522
- if( ! empty( $last_processed_list_contact_id ) ) {
523
- $last_processed_list_contact_id_index = array_search($last_processed_list_contact_id, array_column( $contact_results, 'id') );
524
- // Remove contact results before $last_processed_list_contact_id_index since they have been processed in last run.
525
- $contact_results = array_splice( $contact_results, $last_processed_list_contact_id_index + 1 );
526
- }
527
-
528
- foreach ( $contact_results as $result_count => $result ) {
529
- if ( ! in_array( $result['contact_id'], $contact_ids ) ) {
530
- $contact_ids[] = $result['contact_id'];
531
- }
532
-
533
- $contact_list_map[ $result['contact_id'] ][] = array(
534
- 'status' => $result['status'],
535
- 'list_id' => $result['list_id'],
536
- 'optin_type' => $result['optin_type']
537
- );
538
-
539
- // If contact fail safe limit reached then set id of list contact data. This will be used in next run while processing $contact_results.
540
- if( $result_count >= $fail_safe_limit ) {
541
- $last_processed_list_contact_id = $result['id'];
542
- break;
543
- }
544
- }
545
- $contact_ids_str = "'" . implode( "' , '", $contact_ids ) . "' ";
546
-
547
- $query = "SELECT `id`, `first_name`, `last_name`, `email`, `created_at` FROM {$email_subscribe_table} WHERE id IN ({$contact_ids_str}) ORDER BY FIELD( id, {$contact_ids_str})";
548
- $subscribers = $wpdb->get_results( $query, ARRAY_A );
549
- }
550
-
551
- $subscribers_count = count( $subscribers );
552
-
553
- $batch_start_time = time();
554
-
555
- if ( isset( $process_data['export_file'] ) && is_array( $process_data['export_file'] ) ) {
556
- $export_file = $process_data['export_file'];
557
- $csv_folder = $export_file['wp_upload_dir'];
558
- $file_name = $export_file['file_name'];
559
- $csv_file_path = $csv_folder . $file_name;
560
- // Check if file exist.
561
- if( file_exists( $csv_file_path ) ) {
562
- $csv_file_handler = fopen( $csv_file_path, 'a' ); // phpcs:ignore
563
-
564
- // Proceed only if file has opened in append mode.
565
- if ( false !== $csv_file_handler ) {
566
- $last_subscriber = end( $subscribers );
567
- $last_subscriber_id = $last_subscriber['id'];
568
- $lists_id_name_map = ES()->lists_db->get_list_id_name_map();
569
- foreach ( $subscribers as $subscriber ) {
570
- $subscriber_id = $subscriber['id'];
571
- $data = array();
572
- $data['first_name'] = trim( str_replace( '"', '""', $subscriber['first_name'] ) );
573
- $data['last_name'] = trim( str_replace( '"', '""', $subscriber['last_name'] ) );
574
- $data['email'] = trim( str_replace( '"', '""', $subscriber['email'] ) );
575
- $contact_id = $subscriber['id'];
576
- if ( ! empty( $contact_list_map[ $contact_id ] ) ) {
577
- foreach ( $contact_list_map[ $contact_id ] as $list_details ) {
578
- $file_data = "\n";
579
- $data['list'] = $lists_id_name_map[ $list_details['list_id'] ];
580
- $data['status'] = ucfirst( $list_details['status'] );
581
- $data['optin_type'] = ( $list_details['optin_type'] == 1 ) ? 'Single Opt-In' : 'Double Opt-In';
582
- $data['created_at'] = $subscriber['created_at'];
583
- $file_data .= '"' . implode( '","', $data ) . '"';
584
- if ( $file_data ) {
585
- fwrite( $csv_file_handler, $file_data ); // phpcs:ignore
586
- }
587
- $total_contacts_processed++;
588
- }
589
- }
590
-
591
- // If loop is completed or time is reached or memory limit is reached then set required options for next run and break the loop.
592
- if ( $last_subscriber_id === $subscriber_id || $this->time_exceeded( $batch_start_time ) || $this->memory_exceeded() ) {
593
- // Update background process data only if it exists to ensure we don't start another process in this request if it was cancelled previously by user.
594
- if( false !== get_site_option( 'ig_es_contact_background_process_data', false ) ) {
595
- $process_data['last_contact_id'] = $subscriber_id;
596
- $process_data['total_contacts_processed'] = $total_contacts_processed;
597
- $process_data['last_processed_list_contact_id'] = $last_processed_list_contact_id;
598
- update_site_option( 'ig_es_contact_background_process_data', $process_data );
599
- if ( function_exists( 'as_schedule_single_action' ) ) {
600
- as_schedule_single_action( time(), 'ig_es_add_contact_to_csv' );
601
- }
602
- break;
603
- }
604
- }
605
- }
606
-
607
- fclose( $csv_file_handler ); // phpcs:ignore
608
-
609
- // If all contacts are processed.
610
- if ( $total_contacts_processed >= $total_contacts_to_process ) {
611
-
612
- $contact_background_process_result = array(
613
- 'action' => 'export_contact',
614
- 'total_contacts_processed' => $total_contacts_processed,
615
- 'action_data' => array(
616
- 'csv_file_path' => $csv_file_path,
617
- ),
618
- );
619
-
620
- as_unschedule_action( 'ig_es_add_contact_to_csv' );
621
- as_unschedule_action( 'ig_es_import_contacts_from_csv' );
622
-
623
- // Delete background process data as it is now completed.
624
- delete_site_option( 'ig_es_contact_background_process_data' );
625
-
626
- update_site_option( 'ig_es_contact_background_process_result', $contact_background_process_result );
627
- }
628
- }
629
- }
630
- }
631
- }
632
-
633
- /**
634
- * Generate Contacts from generated/imported csv file
635
- *
636
- * @since 4.4.4
637
- */
638
- public function import_contacts_from_csv() {
639
-
640
- $process_data = get_site_option( 'ig_es_contact_background_process_data', true );
641
- $total_contacts_to_process = ! empty( $process_data['total_contacts_to_process'] ) ? (int) $process_data['total_contacts_to_process'] : 0;
642
-
643
- if ( isset( $process_data['import_file'] ) && is_array( $process_data['import_file'] ) && ! empty( $total_contacts_to_process ) ) {
644
-
645
- $contact_status = $process_data['contact_status'];
646
- $list_id = $process_data['list_id'];
647
- $import_file = $process_data['import_file'];
648
- $csv_file = $import_file['file'];
649
- $file_position = isset( $import_file['file_position'] ) && is_numeric( $import_file['file_position'] ) ? $import_file['file_position'] : 0;
650
-
651
- // Check if file exist.
652
- if( file_exists( $csv_file ) ) {
653
- // Set locale.
654
- $encoding = mb_detect_encoding( $csv_file, 'UTF-8, ISO-8859-1', true );
655
- if ( $encoding ) {
656
- setlocale( LC_ALL, 'en_US.' . $encoding );
657
- }
658
- ini_set( 'auto_detect_line_endings', true ); // phpcs:ignore
659
- $csv_file_handler = fopen( $csv_file, 'r' ); // phpcs:ignore
660
- if ( false !== $csv_file_handler ) {
661
-
662
- $delimiter = $this->get_delimiter( $csv_file );
663
-
664
- // Get Headers
665
- $csv_header = array_map( 'trim', fgetcsv( $csv_file_handler, 0, $delimiter ) );
666
-
667
- $batch_start_time = time();
668
-
669
- $reading_completed = false;
670
- $no_of_remaining_contacts = -1;
671
- $existing_contacts_email_id_map = ES()->contacts_db->get_email_id_map();
672
-
673
- $existing_contacts = array();
674
- if ( count( $existing_contacts_email_id_map ) > 0 ) {
675
- $existing_contacts = array_keys( $existing_contacts_email_id_map );
676
- $existing_contacts = array_map( 'strtolower', $existing_contacts );
677
- }
678
-
679
- $invalid_emails_count = ! empty( $process_data['invalid_emails_count'] ) ? $process_data['invalid_emails_count'] : 0;
680
- $total_contacts_processed = ! empty( $process_data['total_contacts_processed'] ) ? $process_data['total_contacts_processed'] : 0;
681
- $existing_contacts_count = ! empty( $process_data['existing_contacts_count'] ) ? $process_data['existing_contacts_count'] : 0;
682
- $processed_emails = array();
683
- $contacts_data = array();
684
- $current_date_time = ig_get_current_date_time();
685
-
686
- for ( $no_of_contacts_imported = 1; $no_of_contacts_imported <= $total_contacts_to_process; $no_of_contacts_imported++ ) {
687
-
688
- $result = $this->parse_data_by_row( $csv_file_handler, $csv_header, $file_position, $encoding, $delimiter );
689
- $file_position = $result['file_position'];
690
- $parsed_csv_data = $result['parsed_csv_data'];
691
- $reading_completed = $result['reading_completed'];
692
- if ( ! $reading_completed ) {
693
-
694
- $parsed_csv_data = array_map( 'trim', $parsed_csv_data );
695
-
696
- $email = isset( $parsed_csv_data['Email'] ) ? strtolower( sanitize_email( trim( $parsed_csv_data['Email'] ) ) ) : '';
697
- if ( empty( $email ) ) {
698
- $total_contacts_processed++;
699
- $invalid_emails_count++;
700
- continue;
701
- }
702
-
703
- if ( ! in_array( $email, $existing_contacts ) ) {
704
- $contacts_data = array();
705
- $name = isset( $parsed_csv_data['Name'] ) ? trim( $parsed_csv_data['Name'] ) : '';
706
- $first_name = isset( $parsed_csv_data['First Name'] ) ? sanitize_text_field( trim( $parsed_csv_data['First Name'] ) ) : '';
707
- $last_name = isset( $parsed_csv_data['Last Name'] ) ? sanitize_text_field( trim( $parsed_csv_data['Last Name'] ) ) : '';
708
-
709
- // If we don't get the first_name & last_name, consider Name field.
710
- // If name empty, get the name from Email
711
- if ( empty( $first_name ) && empty( $last_name ) ) {
712
-
713
- if ( empty( $name ) ) {
714
- $name = ES_Common::get_name_from_email( $email );
715
- }
716
-
717
- $names = ES_Common::prepare_first_name_last_name( $name );
718
- $first_name = sanitize_text_field( $names['first_name'] );
719
- $last_name = sanitize_text_field( $names['last_name'] );
720
- }
721
-
722
- $guid = ES_Common::generate_guid();
723
-
724
- $contacts_data['first_name'] = $first_name;
725
- $contacts_data['last_name'] = $last_name;
726
- $contacts_data['email'] = $email;
727
- $contacts_data['source'] = 'import';
728
- $contacts_data['status'] = 'verified';
729
- $contacts_data['hash'] = $guid;
730
- $contacts_data['created_at'] = $current_date_time;
731
-
732
- ES()->contacts_db->bulk_insert( array( $contacts_data ) );
733
-
734
- } else {
735
- $existing_contacts_count++;
736
- }
737
- $processed_emails[] = $email;
738
- $total_contacts_processed++;
739
- }
740
-
741
- $no_of_remaining_contacts = $total_contacts_to_process - $total_contacts_processed;
742
-
743
- if ( 0 === $no_of_remaining_contacts ) {
744
-
745
- $contact_ids = ES()->contacts_db->get_contact_ids_by_emails( $processed_emails );
746
- if( ! empty( $contact_ids ) ) {
747
- ES()->lists_contacts_db->remove_contacts_from_lists( $contact_ids, $list_id );
748
- ES()->lists_contacts_db->do_import_contacts_into_list( $list_id, $contact_ids, $contact_status, 1, $current_date_time );
749
- }
750
-
751
- $contact_background_process_result = array(
752
- 'action' => 'import_contact',
753
- 'total_contacts_to_process' => $total_contacts_to_process,
754
- 'total_contacts_processed' => $total_contacts_processed,
755
- 'existing_contacts_count' => $existing_contacts_count,
756
- 'invalid_emails_count' => $invalid_emails_count,
757
- );
758
-
759
- fclose( $csv_file_handler ); // phpcs:ignore
760
- unlink( $csv_file );
761
- delete_site_option( 'ig_es_contact_background_process_data' );
762
-
763
- update_site_option( 'ig_es_contact_background_process_result', $contact_background_process_result, 'no' );
764
- break;
765
- }
766
-
767
- if ( $this->time_exceeded( $batch_start_time ) || $this->memory_exceeded() ) {
768
-
769
- $contact_ids = ES()->contacts_db->get_contact_ids_by_emails( $processed_emails );
770
- if( ! empty( $contact_ids ) ) {
771
- ES()->lists_contacts_db->remove_contacts_from_lists( $contact_ids, $list_id );
772
- ES()->lists_contacts_db->do_import_contacts_into_list( $list_id, $contact_ids, $contact_status, 1, $current_date_time );
773
- }
774
-
775
- fclose( $csv_file_handler ); // phpcs:ignore
776
-
777
- // Update background process data only if it exists to ensure we don't start another process in this request if it was cancelled previously by user.
778
- if( false !== get_site_option( 'ig_es_contact_background_process_data', false ) ) {
779
- $process_data['import_file']['file_position'] = $file_position;
780
- $process_data['total_contacts_processed'] = $total_contacts_processed;
781
- $process_data['existing_contacts_count'] = $existing_contacts_count;
782
- $process_data['invalid_emails_count'] = $invalid_emails_count;
783
- update_site_option( 'ig_es_contact_background_process_data', $process_data );
784
- if ( function_exists( 'as_schedule_single_action' ) ) {
785
- as_schedule_single_action( time(), 'ig_es_import_contacts_from_csv' );
786
- }
787
- break;
788
- }
789
- }
790
- }
791
- }
792
- }
793
- }
794
- }
795
-
796
- /**
797
- * Restart scheduler after one minute if it fails
798
- *
799
- * @param array $action_id id of failed action.
800
- *
801
- * @since 4.4.4
802
- */
803
- public function restart_failed_action( $action_id = 0 ) {
804
-
805
- if ( empty( $action_id ) || ! class_exists( 'ActionScheduler' ) || ! is_callable( array( 'ActionScheduler', 'store' ) ) || ! function_exists( 'as_schedule_single_action' ) ) {
806
- return;
807
- }
808
-
809
- $action = ActionScheduler::store()->fetch_action( $action_id );
810
- $action_hook = $action->get_hook();
811
-
812
- if ( in_array( $action_hook, array( 'ig_es_add_contact_to_csv', 'ig_es_import_contacts_from_csv' ), true ) ) {
813
- as_schedule_single_action( time() + MINUTE_IN_SECONDS, $action_hook );
814
- }
815
- }
816
-
817
- /**
818
- * Parse data one row at a time
819
- *
820
- * @param boolean $file_handler CSV file handler.
821
- * @param array $header CSV header meta column name.
822
- * @param integer $file_position file pointer posistion to read from.
823
- * @param string $encoding Character encoding.
824
- * @param string $delimiter Delimiting character.
825
- *
826
- * @return array $result parsed data with current file pointer position
827
- *
828
- * @since 4.4.4
829
- */
830
- public function parse_data_by_row( $file_handler = false, $header = array(), $file_position = 0, $encoding = '', $delimiter = ',' ) {
831
-
832
- $parsed_csv_data = array();
833
-
834
- $reading_completed = false;
835
-
836
- if ( false !== $file_handler ) {
837
-
838
- if ( $file_position > 0 ) {
839
-
840
- fseek( $file_handler, (int) $file_position );
841
-
842
- }
843
-
844
- if ( false !== ( $postmeta = fgetcsv( $file_handler, 0, $delimiter ) ) ) { // phpcs:ignore
845
- $row = array();
846
- foreach ( $header as $key => $heading ) {
847
-
848
- // Put all CSV data into an associative array by row.
849
- $row[ $heading ] = ( isset( $postmeta[ $key ] ) ) ? $this->format_data_from_csv( stripslashes( $postmeta[ $key ] ), $encoding ) : '';
850
- }
851
-
852
- $parsed_csv_data = $row;
853
-
854
- unset( $postmeta, $row );
855
-
856
- } else {
857
-
858
- $reading_completed = true;
859
-
860
- }
861
-
862
- $file_position = ftell( $file_handler );
863
- }
864
-
865
- $result = array(
866
- 'parsed_csv_data' => $parsed_csv_data,
867
- 'file_position' => $file_position,
868
- 'reading_completed' => $reading_completed,
869
- );
870
-
871
- return $result;
872
- }
873
-
874
- /**
875
- * Format data passed from CSV
876
- *
877
- * @param array $data The data to format.
878
- * @param string $enc Encoding.
879
- *
880
- * @since 4.4.4
881
- */
882
- public function format_data_from_csv( $data, $enc ) {
883
- return ( 'UTF-8' === $enc ) ? $data : utf8_encode( $data );
884
- }
885
-
886
- /**
887
- * Get CSV file delimiter
888
- *
889
- * @param $file
890
- * @param int $check_lines
891
- *
892
- * @return mixed
893
- *
894
- * @since 4.4.4
895
- */
896
- public function get_delimiter( $file, $check_lines = 2 ) {
897
-
898
- $file = new SplFileObject( $file );
899
-
900
- $delimiters = array( ',', '\t', ';', '|', ':' );
901
- $results = array();
902
- $i = 0;
903
- while ( $file->valid() && $i <= $check_lines ) {
904
- $line = $file->fgets();
905
- foreach ( $delimiters as $delimiter ) {
906
- $regExp = '/[' . $delimiter . ']/';
907
- $fields = preg_split( $regExp, $line );
908
- if ( count( $fields ) > 1 ) {
909
- if ( ! empty( $results[ $delimiter ] ) ) {
910
- $results[ $delimiter ] ++;
911
- } else {
912
- $results[ $delimiter ] = 1;
913
- }
914
- }
915
- }
916
- $i ++;
917
- }
918
-
919
- if ( count( $results ) > 0 ) {
920
-
921
- $results = array_keys( $results, max( $results ) );
922
-
923
- return $results[0];
924
- }
925
-
926
- return ',';
927
-
928
- }
929
-
930
- /**
931
- * Function to modify action scheduler's default interval between two consecutive scheduler when background process running
932
- *
933
- * @param array $schedules schedules with interval and display.
934
- *
935
- * @return array $schedules
936
- *
937
- * @since 4.4.4
938
- */
939
- public function modify_action_scheduler_default_interval( $schedules = array() ) {
940
-
941
- if ( 'yes' === $this->is_process_running() ) {
942
-
943
- $schedules['every_minute'] = array(
944
- 'interval' => 5,
945
- 'display' => __( 'Every 5 Seconds', 'email-subscribers' ),
946
- );
947
- }
948
-
949
- return $schedules;
950
- }
951
-
952
-
953
- /**
954
- * Method to get background process result HTML in ajax request.
955
- *
956
- * @return array $response Response HTML array
957
- *
958
- * @since 4.4.4
959
- */
960
- public function ajax_get_background_process_results() {
961
-
962
- check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
963
-
964
- $background_process_result = get_site_option( 'ig_es_contact_background_process_result', false );
965
-
966
- $response = array(
967
- 'response_html' => '',
968
- );
969
-
970
- if ( false !== $background_process_result ) {
971
- switch ( $background_process_result['action'] ) {
972
- case 'export_contact':
973
- $action_text = __( 'exported', 'email-subscribers' );
974
- break;
975
- default:
976
- $action_text = __( 'imported', 'email-subscribers' );
977
- break;
978
- }
979
- ob_start();
980
- $this->get_background_process_results_html( $background_process_result );
981
- $response_html = ob_get_clean();
982
- $response['response_html'] = $response_html;
983
- wp_send_json( $response );
984
- }
985
- }
986
-
987
- /**
988
- * Method to get background process result HTML
989
- *
990
- * @since 4.4.4
991
- */
992
- public function get_background_process_results_html( $background_process_result ) {
993
-
994
- if ( ! empty( $background_process_result ) ) {
995
- switch ( $background_process_result['action'] ) {
996
- case 'export_contact':
997
- $action_text = __( 'exported', 'email-subscribers' );
998
- break;
999
- default:
1000
- $action_text = __( 'imported', 'email-subscribers' );
1001
- break;
1002
- }
1003
- ?>
1004
- <div id="ig_es_contact_background_results" class="updated">
1005
- <p>
1006
- <?php echo esc_html__( 'Successfully', 'email-subscribers' ) . ' ' . esc_html( $action_text ) . ' ' . esc_html( $background_process_result['total_contacts_processed'] ) . ' ' . esc_html( _n( 'contact', 'contacts', $background_process_result['total_contacts_processed'], 'email-subscribers' ) ) . '.'; ?>
1007
- </p>
1008
- <?php
1009
- if ( 'export_contact' === $background_process_result['action'] ) {
1010
- $action_data = ! empty( $background_process_result['action_data'] ) ? $background_process_result['action_data'] : '';
1011
- if( ! empty( $action_data ) && ! empty( $action_data['csv_file_path' ] ) ) {
1012
- ?>
1013
- <p class="download-csv-wrapper">
1014
- <?php
1015
- echo esc_html__( 'CSV file has been generated. You can download it from ', 'email-subscribers' ) . '<a href="' . esc_url( admin_url( 'admin-ajax.php' ) ) . '?action=ig_es_download_csv&download_nonce=' . esc_attr( wp_create_nonce( 'ig_es_download_csv' ) ) . '">' . esc_html__( 'here', 'email-subscribers' ) . '</a>.';
1016
- ?>
1017
- </p>
1018
- <?php
1019
- }
1020
- } else if( 'import_contact' === $background_process_result['action'] ) {
1021
- $existing_contacts_count = ! empty( $background_process_result['existing_contacts_count'] ) ? $background_process_result['existing_contacts_count'] : 0;
1022
- $invalid_emails_count = ! empty( $background_process_result['invalid_emails_count'] ) ? $background_process_result['invalid_emails_count'] : 0;
1023
-
1024
- if( ! empty( $existing_contacts_count ) ) :
1025
- ?>
1026
- <p class="ig-es-existing-contacts-message">
1027
- <?php
1028
- echo sprintf( __( '%d contacts are already existed.', 'email-subscribers' ), $existing_contacts_count );
1029
- ?>
1030
- </p>
1031
- <?php
1032
- endif;
1033
-
1034
- if( ! empty( $invalid_emails_count ) ) :
1035
- ?>
1036
- <p class="ig-es-invalid-contacts-message">
1037
- <?php
1038
- echo sprintf( __( '%d contacts are invalid.', 'email-subscribers' ), $invalid_emails_count );;
1039
- ?>
1040
- </p>
1041
- <?php
1042
- endif;
1043
- ?>
1044
- <?php
1045
- delete_site_option( 'ig_es_contact_background_process_result' );
1046
- }
1047
- ?>
1048
- </div>
1049
- <?php
1050
- }
1051
- }
1052
- }
1053
-
1054
- }
1055
-
1056
- ES_Contact_Background_Process::get_instance();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
lite/includes/classes/class-es-contacts-table.php CHANGED
@@ -188,15 +188,17 @@ class ES_Contacts_Table extends WP_List_Table {
188
 
189
  ?>
190
 
191
- <h1 class="wp-heading-inline">
192
- <span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate"><?php
193
- _e( 'Audience', 'email-subscribers' ); ?>
194
- </span>
 
195
  <?php
196
- _e( ' > Contacts', 'email-subscribers' ); ?>
 
197
  <?php ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
198
  ?>
199
- </h1>
200
 
201
  <div class="my-4">
202
  <?php $this->get_contacts_reports() ?>
@@ -492,11 +494,17 @@ class ES_Contacts_Table extends WP_List_Table {
492
  <header class="ml-12 mr-8 wp-heading-inline">
493
  <div class="md:flex md:items-center md:justify-between justify-center">
494
  <div class="flex-1 min-w-0">
495
- <h1 class="text-2xl leading-7 font-bold text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
496
- <span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
497
- <a href="admin.php?page=es_subscribers"><?php _e('Audience ','email-subscribers'); ?></a></span> >
 
 
 
 
 
 
498
  <?php echo $title; ?>
499
- </h1>
500
  </div>
501
 
502
  <div class="py-2 flex md:mt-0 pb-2">
@@ -666,7 +674,7 @@ class ES_Contacts_Table extends WP_List_Table {
666
  <span class="my-2 mr-10 dashicons dashicons-admin-users"></span>
667
  </span>
668
  </div>
669
- <input id="ig-es-contact-first-name" class="ig-es-contact-first-name form-input block border-gray-400 w-full pl-10 pr-12 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" placeholder="Enter first name" name="contact_data[first_name]" value="<?php echo esc_attr( $first_name ); ?>" />
670
  </div>
671
  </div>
672
  </div>
@@ -686,7 +694,7 @@ class ES_Contacts_Table extends WP_List_Table {
686
  <span class="my-2 mr-10 dashicons dashicons-admin-users"></span>
687
  </span>
688
  </div>
689
- <input id="ig-es-contact-last-name" class="ig-es-contact-last-name form-input block border-gray-400 w-full pl-10 pr-12 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" placeholder="Enter last name" name="contact_data[last_name]" value="<?php echo esc_attr( $last_name ); ?>" />
690
  </div>
691
  </div>
692
  </div>
@@ -705,7 +713,7 @@ class ES_Contacts_Table extends WP_List_Table {
705
  <span class="inset-y-0 text-gray-400 sm:text-sm sm:leading-5">
706
  <span class="my-2 mr-10 dashicons dashicons-email-alt"></span></span>
707
  </div>
708
- <input id="email" class="form-input block border-gray-400 w-full pl-10 pr-12 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5"" id="email" name="contact_data[email]" value="<?php echo esc_attr( $email ); ?>" placeholder="Enter Email" />
709
  </div>
710
  </div>
711
  </div>
@@ -757,14 +765,14 @@ class ES_Contacts_Table extends WP_List_Table {
757
  <input type="hidden" name="contact_data[created_at]" value="<?php echo $created; ?>" />
758
  <input type="hidden" name="contact_data[guid]" value="<?php echo $guid; ?>" />
759
  <input type="hidden" name="submitted" value="submitted" />
760
- <input type="submit" name="submit" class="cursor-pointer px-4 my-2 py-2 mx-2 ig-es-primary-button hover:shadow-md" value="<?php if ( $is_new ) {
761
  _e( 'Save Contact', 'email-subscribers' );
762
  }
763
  else{
764
  _e( 'Save Changes', 'email-subscribers' );
765
  }
766
  ?>"/>
767
- <a href="admin.php?page=es_subscribers" class="cursor-pointer 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 ">Cancel</a>
768
  </div>
769
  </div>
770
  </form>
188
 
189
  ?>
190
 
191
+ <h2 class="wp-heading-inline">
192
+ <span class="text-base font-normal text-indigo-600 sm:leading-7 sm:truncate"><?php
193
+ _e( 'Audience <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 inline-block align-middle text-gray-900"><path d="M9 5l7 7-7 7"></path></svg>', 'email-subscribers' ); ?>
194
+ </span>
195
+ <span class="text-2xl font-medium text-gray-900 sm:leading-9 sm:truncate">
196
  <?php
197
+ _e( 'Contacts', 'email-subscribers' ); ?>
198
+ </span>
199
  <?php ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
200
  ?>
201
+ </h2>
202
 
203
  <div class="my-4">
204
  <?php $this->get_contacts_reports() ?>
494
  <header class="ml-12 mr-8 wp-heading-inline">
495
  <div class="md:flex md:items-center md:justify-between justify-center">
496
  <div class="flex-1 min-w-0">
497
+ <h2 class="text-2xl leading-7 text-gray-900 sm:leading-9 sm:truncate">
498
+ <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate">
499
+ <a href="admin.php?page=es_subscribers"><?php _e('Audience ','email-subscribers'); ?></a></span> <svg class="w-6 h-6 mt-2 inline-block" fill="currentColor" viewBox="0 0 24 24">
500
+ <path
501
+ fill-rule="evenodd"
502
+ d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
503
+ clip-rule="evenodd"
504
+ ></path>
505
+ </svg>
506
  <?php echo $title; ?>
507
+ </h2>
508
  </div>
509
 
510
  <div class="py-2 flex md:mt-0 pb-2">
674
  <span class="my-2 mr-10 dashicons dashicons-admin-users"></span>
675
  </span>
676
  </div>
677
+ <input id="ig-es-contact-first-name" class="ig-es-contact-first-name form-input block border-gray-400 w-full pl-10 pr-12 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" placeholder="<?php _e('Enter First Name', 'email-subscribers'); ?>" name="contact_data[first_name]" value="<?php echo esc_attr( $first_name ); ?>" />
678
  </div>
679
  </div>
680
  </div>
694
  <span class="my-2 mr-10 dashicons dashicons-admin-users"></span>
695
  </span>
696
  </div>
697
+ <input id="ig-es-contact-last-name" class="ig-es-contact-last-name form-input block border-gray-400 w-full pl-10 pr-12 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" placeholder="<?php _e('Enter Last Name', 'email-subscribers'); ?>" name="contact_data[last_name]" value="<?php echo esc_attr( $last_name ); ?>" />
698
  </div>
699
  </div>
700
  </div>
713
  <span class="inset-y-0 text-gray-400 sm:text-sm sm:leading-5">
714
  <span class="my-2 mr-10 dashicons dashicons-email-alt"></span></span>
715
  </div>
716
+ <input id="email" class="form-input block border-gray-400 w-full pl-10 pr-12 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5"" id="email" name="contact_data[email]" value="<?php echo esc_attr( $email ); ?>" placeholder="<?php _e('Enter Email', 'email-subscribers'); ?>" />
717
  </div>
718
  </div>
719
  </div>
765
  <input type="hidden" name="contact_data[created_at]" value="<?php echo $created; ?>" />
766
  <input type="hidden" name="contact_data[guid]" value="<?php echo $guid; ?>" />
767
  <input type="hidden" name="submitted" value="submitted" />
768
+ <input type="submit" name="submit" class="cursor-pointer align-middle px-4 my-2 py-2 mx-2 ig-es-primary-button hover:shadow-md" value="<?php if ( $is_new ) {
769
  _e( 'Save Contact', 'email-subscribers' );
770
  }
771
  else{
772
  _e( 'Save Changes', 'email-subscribers' );
773
  }
774
  ?>"/>
775
+ <a href="admin.php?page=es_subscribers" 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 ">Cancel</a>
776
  </div>
777
  </div>
778
  </form>
lite/includes/classes/class-es-cron.php CHANGED
@@ -504,7 +504,6 @@ class ES_Cron {
504
  }
505
 
506
  if ( $self ) {
507
-
508
  $total_emails_sent = ! empty( $response['total_emails_sent'] ) ? $response['total_emails_sent'] : 0;
509
  $status = ! empty( $response['status'] ) ? $response['status'] : 'ERROR';
510
  $total_emails_to_be_sent = ! empty( $response['es_remaining_email_count'] ) ? $response['es_remaining_email_count'] : 0;
@@ -558,5 +557,6 @@ class ES_Cron {
558
  $message_text = ! empty( $status_messages[ $message ] ) ? $status_messages[ $message ] : '';
559
 
560
  return $message_text;
 
561
  }
562
- }
504
  }
505
 
506
  if ( $self ) {
 
507
  $total_emails_sent = ! empty( $response['total_emails_sent'] ) ? $response['total_emails_sent'] : 0;
508
  $status = ! empty( $response['status'] ) ? $response['status'] : 'ERROR';
509
  $total_emails_to_be_sent = ! empty( $response['es_remaining_email_count'] ) ? $response['es_remaining_email_count'] : 0;
557
  $message_text = ! empty( $status_messages[ $message ] ) ? $status_messages[ $message ] : '';
558
 
559
  return $message_text;
560
+
561
  }
562
+ }
lite/includes/classes/class-es-export-subscribers.php CHANGED
@@ -15,10 +15,52 @@ class Export_Subscribers {
15
  */
16
  public function __construct() {
17
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
18
  add_filter( 'query_vars', array( $this, 'query_vars' ) );
19
  add_action( 'parse_request', array( $this, 'parse_request' ) );
20
  add_action( 'admin_menu', array( $this, 'plugin_menu' ) );
21
- add_action( 'init', array( $this, 'maybe_export_contact' ) );
22
  }
23
 
24
  public function plugin_menu() {
@@ -96,8 +138,8 @@ public function export_subscribers_page() {
96
  <div class="wrap ml-4">
97
  <header class="wp-heading-inline">
98
  <div class="mt-2">
99
- <h2 class="text-xl font-medium text-gray-800 sm:leading-9 sm:truncate"><h1 class="text-xl leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
100
- <span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate"> <a href="admin.php?page=es_subscribers"><?php _e( 'Audience', 'email-subscribers' ); ?> </a> </span> > <?php _e('Export Contacts', 'email-subscribers'); ?>
101
  <?php
102
  ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
103
  ?>
@@ -298,188 +340,5 @@ public function export_subscribers_page() {
298
  return $csv_output;
299
  }
300
 
301
- /**
302
- * Method to generate a csv file and return generated file info.
303
- *
304
- * @return array $file_info Generated CSV file information.
305
- *
306
- * @since 4.4.4
307
- */
308
- public function create_csv( $file_name = '' ) {
309
-
310
- $file_info = array();
311
-
312
- if( ! empty( $file_name ) ) {
313
- $getfield = '';
314
-
315
- $columns_header = $this->get_csv_headers();
316
-
317
- foreach ( $columns_header as $value ) {
318
- $getfield .= $value . ',';
319
- }
320
-
321
- $fields = substr_replace( $getfield, '', -1 );
322
-
323
- $fields .= $this->get_contact_csv_data( $columns_header, array() );
324
-
325
- $upload_dir = wp_upload_dir();
326
- $file_info['wp_upload_dir'] = $upload_dir['path'] . '/';
327
- $file_info['file_name'] = $file_name;
328
- $file_info['file_content'] = $fields;
329
-
330
- if ( isset( $upload_dir['error'] ) && ! empty( $upload_dir['error'] ) ) {
331
- $file_info['error'] = $upload_dir['error'];
332
- }
333
-
334
- return $file_info;
335
- }
336
- }
337
-
338
- /**
339
- * Export contact CSV data
340
- *
341
- * @param array $columns_header Column header.
342
- * @param array $data The data.
343
- * @return array $file_data
344
- */
345
- public function get_contact_csv_data( $columns_header, $data ) {
346
-
347
- $each_field = array_keys( $columns_header );
348
-
349
- $csv_data = '';
350
-
351
- foreach ( (array) $data as $row ) {
352
- $count_columns_header = count( $columns_header );
353
- for ( $i = 0; $i < $count_columns_header; $i++ ) {
354
- if ( 0 === $i ) {
355
- $csv_data .= "\n";
356
- }
357
-
358
- if ( array_key_exists( $each_field[ $i ], $row ) ) {
359
- $row_each_field = $row[ $each_field[ $i ] ];
360
- } else {
361
- $row_each_field = '';
362
- }
363
-
364
- $array = str_replace( array( "\n", "\n\r", "\r\n", "\r" ), "\t", $row_each_field );
365
-
366
- $array = str_getcsv( $array, ',', '"', '\\' );
367
-
368
- $str = ( $array && is_array( $array ) ) ? implode( ', ', $array ) : '';
369
-
370
- $str = addslashes( $str );
371
-
372
- $csv_data .= '"' . $str . '",';
373
- }
374
- $csv_data = substr_replace( $csv_data, '', -1 );
375
- }
376
-
377
- return $csv_data;
378
- }
379
-
380
- /**
381
- * Method to get headers for ES contact CSV file.
382
- *
383
- * @return array $column_header CSV Headers
384
- *
385
- * @since 4.4.4
386
- */
387
- public function get_csv_headers() {
388
-
389
- $csv_headers = apply_filters( 'ig_es_contact_csv_headers' ,
390
- array(
391
- __( 'First Name', 'email-subscribers' ),
392
- __( 'Last Name', 'email-subscribers' ),
393
- __( 'Email', 'email-subscribers' ),
394
- __( 'List', 'email-subscribers' ),
395
- __( 'Status', 'email-subscribers' ),
396
- __( 'Opt-In Type', 'email-subscribers' ),
397
- __( 'Created On', 'email-subscribers' )
398
- )
399
- );
400
-
401
- return $csv_headers;
402
-
403
- }
404
-
405
- /**
406
- * Method to initiate contact background export process
407
- *
408
- * @since 4.4.4
409
- */
410
- public function maybe_export_contact() {
411
-
412
- $report = ig_es_get_request_data( 'report' );
413
- $status = ig_es_get_request_data( 'status' );
414
-
415
- $can_access = ES_Common::ig_es_can_access( 'audience' );
416
-
417
- if ( $report && $status && $can_access ) {
418
-
419
- $status = trim( $status );
420
-
421
- $selected_list_id = 0;
422
-
423
- if ( 'select_list' === $status ) {
424
- $selected_list_id = ig_es_get_request_data( 'list_id', 0 );
425
-
426
- if ( 0 === $selected_list_id ) {
427
- $message = __( "Please Select List", "email-subscribers" );
428
- ES_Common::show_message( $message, 'error' );
429
- exit();
430
- }
431
- }
432
-
433
- $file_name = strtolower( $status ) . '-' . 'contacts-' . date('Y-m-d') . '-' . time() . '.csv';
434
-
435
- $export_file = $this->create_csv( $file_name );
436
-
437
- if( ! empty( $export_file ) && is_array( $export_file ) ) {
438
- // Check if there isn't any error e.g. file permission.
439
- if( empty( $export_file['error'] ) ) {
440
- // Create CSV file.
441
- $csv_folder = $export_file['wp_upload_dir'];
442
- $csvfilename = $csv_folder . $file_name;
443
- $fp = fopen( $csvfilename, 'w' ); // phpcs:ignore
444
-
445
- if ( false !== $fp ) {
446
- file_put_contents( $csvfilename, $export_file['file_content'] ); // phpcs:ignore
447
- fclose( $fp ); // phpcs:ignore
448
-
449
- $contact_background_process_data = array(
450
- 'action' => 'export_contact',
451
- 'contact_status' => $status,
452
- 'list_id' => $selected_list_id,
453
- 'export_file' => $export_file,
454
- );
455
-
456
- update_site_option( 'ig_es_contact_background_process_data', $contact_background_process_data );
457
-
458
- as_unschedule_action( 'ig_es_add_contact_to_csv' );
459
- as_unschedule_action( 'ig_es_import_contacts_from_csv' );
460
-
461
- as_schedule_single_action( time(), 'ig_es_add_contact_to_csv' );
462
-
463
- ES()->init_action_scheduler_queue_runner();
464
- } else {
465
- $error_message = __( 'Unable to generate CSV file. Please try again later.', 'email-subscribers' );
466
- }
467
- } else {
468
- $error_message = $export_file['error'];
469
- }
470
- } else {
471
- $error_message = __( 'No data available', 'email-subscribers' );
472
- }
473
-
474
- if( ! empty( $error_message ) ) {
475
- ES_Common::show_message( $error_message, 'error' );
476
- } else {
477
- $email_subscribers_page = admin_url( 'admin.php?page=es_subscribers&action=export' );
478
- wp_safe_redirect( $email_subscribers_page );
479
- }
480
- exit();
481
- }
482
- }
483
-
484
  }
485
 
15
  */
16
  public function __construct() {
17
 
18
+ $report = ig_es_get_request_data( 'report' );
19
+ $status = ig_es_get_request_data( 'status' );
20
+
21
+ $can_access = ES_Common::ig_es_can_access( 'audience' );
22
+
23
+ if ( $report && $status && $can_access ) {
24
+
25
+ $status = trim( $status );
26
+
27
+ $selected_list_id = 0;
28
+
29
+ if ( 'select_list' === $status ) {
30
+ $selected_list_id = ig_es_get_request_data( 'list_id', 0 );
31
+
32
+ if ( 0 === $selected_list_id ) {
33
+ $message = __( "Please Select List", "email-subscribers" );
34
+ ES_Common::show_message( $message, 'error' );
35
+ exit();
36
+ }
37
+ }
38
+
39
+ $csv = $this->generate_csv( $status, $selected_list_id );
40
+
41
+ $file_name = strtolower( $status ) . '-' . 'contacts.csv';
42
+
43
+ if ( empty( $csv ) ) {
44
+ $message = __( "No data available", 'email-subscribers' );
45
+ ES_Common::show_message( $message, 'error' );
46
+ exit();
47
+ } else {
48
+ header( "Pragma: public" );
49
+ header( "Expires: 0" );
50
+ header( "Cache-Control: must-revalidate, post-check=0, pre-check=0" );
51
+ header( "Cache-Control: private", false );
52
+ header( "Content-Type: application/octet-stream" );
53
+ header( "Content-Disposition: attachment; filename={$file_name};" );
54
+ header( "Content-Transfer-Encoding: binary" );
55
+
56
+ echo $csv;
57
+ exit;
58
+ }
59
+ }
60
+
61
  add_filter( 'query_vars', array( $this, 'query_vars' ) );
62
  add_action( 'parse_request', array( $this, 'parse_request' ) );
63
  add_action( 'admin_menu', array( $this, 'plugin_menu' ) );
 
64
  }
65
 
66
  public function plugin_menu() {
138
  <div class="wrap ml-4">
139
  <header class="wp-heading-inline">
140
  <div class="mt-2">
141
+ <h2 class="text-2xl font-medium text-gray-900 sm:leading-9 sm:truncate">
142
+ <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate"> <a href="admin.php?page=es_subscribers"><?php _e( 'Audience', 'email-subscribers' ); ?> </a> </span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg> <?php _e('Export Contacts', 'email-subscribers'); ?>
143
  <?php
144
  ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
145
  ?>
340
  return $csv_output;
341
  }
342
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
343
  }
344
 
lite/includes/classes/class-es-form-widget.php CHANGED
@@ -23,7 +23,7 @@ class ES_Form_Widget extends WP_Widget {
23
  echo $args['before_title'] . $title . $args['after_title'];
24
  }
25
 
26
- $form_id = isset( $instance['form_id'] ) ? esc_attr( $instance['form_id'] ) : '';
27
 
28
  $form_data = array();
29
  if ( ! empty( $form_id ) ) {
@@ -33,9 +33,9 @@ class ES_Form_Widget extends WP_Widget {
33
  $form_data = ES_Forms_Table::get_form_data_from_body( $form );
34
  }
35
 
 
36
 
37
- $data = array();
38
- $data['form_id'] = 0;
39
  $data['list'] = '';
40
  $data['name_visible'] = ( ! empty( $form_data['name_visible'] ) && 'yes' === $form_data['name_visible'] ) ? 'yes' : '';
41
  $data['name_required'] = ( ! empty( $form_data['name_required'] ) && 'yes' === $form_data['name_required'] ) ? 'yes' : '';
@@ -50,6 +50,7 @@ class ES_Form_Widget extends WP_Widget {
50
  $data['form_version'] = ( ! empty( $form_data['form_version'] ) ) ? $form_data['form_version'] : '';
51
  $data['gdpr_consent'] = ( ! empty( $form_data['gdpr_consent'] ) ) ? $form_data['gdpr_consent'] : 'no';
52
  $data['gdpr_consent_text'] = ( ! empty( $form_data['gdpr_consent_text'] ) ) ? $form_data['gdpr_consent_text'] : '';
 
53
 
54
  ES_Shortcode::render_form( $data );
55
 
23
  echo $args['before_title'] . $title . $args['after_title'];
24
  }
25
 
26
+ $form_id = isset( $instance['form_id'] ) ? esc_attr( $instance['form_id'] ) : 0;
27
 
28
  $form_data = array();
29
  if ( ! empty( $form_id ) ) {
33
  $form_data = ES_Forms_Table::get_form_data_from_body( $form );
34
  }
35
 
36
+ $data = array();
37
 
38
+ $data['form_id'] = $form_id;
 
39
  $data['list'] = '';
40
  $data['name_visible'] = ( ! empty( $form_data['name_visible'] ) && 'yes' === $form_data['name_visible'] ) ? 'yes' : '';
41
  $data['name_required'] = ( ! empty( $form_data['name_required'] ) && 'yes' === $form_data['name_required'] ) ? 'yes' : '';
50
  $data['form_version'] = ( ! empty( $form_data['form_version'] ) ) ? $form_data['form_version'] : '';
51
  $data['gdpr_consent'] = ( ! empty( $form_data['gdpr_consent'] ) ) ? $form_data['gdpr_consent'] : 'no';
52
  $data['gdpr_consent_text'] = ( ! empty( $form_data['gdpr_consent_text'] ) ) ? $form_data['gdpr_consent_text'] : '';
53
+ $data['captcha'] = ( ! empty( $form_data['captcha'] ) ) ? $form_data['captcha'] : 'no';
54
 
55
  ES_Shortcode::render_form( $data );
56
 
lite/includes/classes/class-es-forms-table.php CHANGED
@@ -7,7 +7,7 @@ if ( ! defined( 'ABSPATH' ) ) {
7
 
8
  if ( ! class_exists( 'WP_List_Table' ) ) {
9
  require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
10
- }
11
 
12
  class ES_Forms_Table extends WP_List_Table {
13
 
@@ -78,7 +78,14 @@ class ES_Forms_Table extends WP_List_Table {
78
  $form = ig_es_get_request_data( 'form' );
79
  echo $this->edit_form( absint( $form ) );
80
  } else { ?>
81
- <h1 class=" wp-heading-inline"><span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate"><?php _e( 'Forms', 'email-subscribers' ) ?><a href="admin.php?page=es_forms&action=new" class="pt-2 ig-es-title-button px-2 py-2 mx-2"><?php _e('Add New','email-subscribers'); ?></a></span></h1>
 
 
 
 
 
 
 
82
  <div id="poststuff" class="es-items-lists">
83
  <div id="post-body" class="metabox-holder column-1">
84
  <div id="post-body-content">
@@ -143,6 +150,8 @@ class ES_Forms_Table extends WP_List_Table {
143
  $form_data = ig_es_get_request_data( 'form_data', array(), false );
144
  $lists = ig_es_get_request_data( 'lists' );
145
 
 
 
146
  $form_data['lists'] = $lists;
147
 
148
  $validate_data = array(
@@ -174,6 +183,7 @@ class ES_Forms_Table extends WP_List_Table {
174
  global $wpdb;
175
 
176
  if ( $id ) {
 
177
  $form_data = array();
178
 
179
  $data = $wpdb->get_results( "SELECT * FROM " . IG_FORMS_TABLE . " WHERE id = $id", ARRAY_A );
@@ -188,6 +198,8 @@ class ES_Forms_Table extends WP_List_Table {
188
  $form_data = ig_es_get_request_data( 'form_data', array(), false );
189
  $lists = ig_es_get_request_data( 'lists' );
190
 
 
 
191
  $form_data['lists'] = $lists;
192
 
193
  $validate_data = array(
@@ -247,6 +259,7 @@ class ES_Forms_Table extends WP_List_Table {
247
  $form_data['lists'] = ! empty( $data['lists'] ) ? $data['lists'] : array();
248
  $form_data['af_id'] = ! empty( $data['af_id'] ) ? $data['af_id'] : 0;
249
  $form_data['desc'] = ! empty( $data['desc'] ) ? sanitize_text_field( $data['desc'] ) : '';
 
250
 
251
  $lists = ES()->lists_db->get_list_id_name_map();
252
  $nonce = wp_create_nonce( 'es_form' );
@@ -257,402 +270,405 @@ class ES_Forms_Table extends WP_List_Table {
257
  <header class="ml-12 mr-8 wp-heading-inline">
258
  <div class="md:flex md:items-center md:justify-between justify-center">
259
  <div class="flex-1 min-w-0">
260
- <h1 class="text-xl leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
261
- <span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
262
- <a href="admin.php?page=es_forms"><?php _e('Forms ','email-subscribers'); ?></a></span> >
263
- <?php
264
- if ( $is_new ) {
265
- _e( ' New Form', 'email-subscribers' );
266
- } else {
267
- _e( ' Edit Form', 'email-subscribers' );
268
- }
269
-
270
- ?>
271
- </h1>
 
272
  </div>
273
- </div>
274
- </header>
275
- <div class="ml-12 mr-8"><hr class="wp-header-end"></div>
276
- <div id="poststuff">
277
- <div id="post-body" class="metabox-holder column-1">
278
- <div id="post-body-content">
279
- <div class="meta-box-sortables ui-sortable bg-white shadow-md ml-12 mr-8 mt-4 rounded-lg">
280
- <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 $action; ?>&form=<?php echo $id; ?>&_wpnonce=<?php echo $nonce; ?>">
281
-
282
-
283
- <div class="flex flex-row border-b border-gray-100">
284
- <div class="flex w-1/5">
285
- <div class="ml-4 pt-6">
286
- <label for="tag-link"><span class="block ml-4 pt-1 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Form Name', 'email-subscribers' ); ?></span></label>
287
  </div>
288
- </div>
289
- <div class="flex">
290
- <div class="ml-16 mb-4 h-10 mr-4 mt-4">
291
- <div class="h-10 relative">
292
- <input id="ig_es_title" class="form-input block border-gray-400 w-full pl-3 pr-12 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" placeholder="Enter form name" name="form_data[name]" value="<?php echo stripslashes( $form_data['name'] ); ?>" size="30" maxlength="100"/>
293
  </div>
294
  </div>
295
  </div>
296
- </div>
297
- <div class="flex flex-row border-b border-gray-100">
298
- <div class="flex w-1/5">
299
- <div class="ml-4 pt-6">
300
- <label for="tag-link"><span class="block pt-1 ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Description', 'email-subscribers' ); ?></span></label>
301
  </div>
302
- </div>
303
- <div class="flex ">
304
- <div class="ml-16 mb-4 h-10 mr-4 mt-4">
305
- <div class="h-10 relative ">
306
- <input id="ig_es_title" class="form-input block border-gray-400 w-full pl-3 pr-12 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" placeholder="Enter description" name="form_data[desc]" id="ig_es_title" value="<?php echo stripslashes( $form_data['desc'] ); ?>" size="30" maxlength="100"/>
307
  </div>
308
  </div>
309
  </div>
310
- </div>
311
- <div class="flex flex-row border-b border-gray-100">
312
- <div class="flex w-1/5">
313
- <div class="ml-4 pt-4 mb-2">
314
- <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Form Fields', 'email-subscribers' ); ?></span></label>
315
  </div>
316
- </div>
317
- <div class="flex ">
318
- <div class="ml-16 mr-4 mt-4">
319
- <table class="ig-es-form-table">
320
- <tr class="form-field">
321
- <td class="pr-6 pb-8"><b class=" font-medium text-gray-500 pb-2"><?php _e( 'Field', 'email-subscribers' ); ?></b></td>
322
- <td class="pr-6 pb-8"><b class=" font-medium text-gray-500 pb-2"><?php _e( 'Show?', 'email-subscribers' ); ?></b></td>
323
- <td class="pr-6 pb-8"><b class=" font-medium text-gray-500 pb-2"><?php _e( 'Required?', 'email-subscribers' ); ?></b></td>
324
- <td class="pr-6 pb-8"><b class=" font-medium text-gray-500 pb-2"><?php _e( 'Label', 'email-subscribers' ); ?></b></td>
325
- <td class="pr-6 pb-8"><b class="font-medium text-gray-500 pb-2"><?php _e( 'Place Holder', 'email-subscribers' ); ?></b></td>
326
- </tr>
327
- <tr class="form-field ">
328
- <td class="pr-6 pb-8"><b class="text-gray-500 text-sm font-normal pb-2"><?php _e( 'Email', 'email-subscribers' ); ?></b></td>
329
- <td class="pr-6 pb-8">
330
- <input type="checkbox" class="form-checkbox opacity-0" name="form_data[email_visible]" value="yes" disabled="disabled" checked="checked" />
331
- </td>
332
-
333
-
334
- <td class="pr-6 pb-8">
335
- <input type="checkbox" class="form-checkbox opacity-0" name="form_data[email_required]" value="yes" disabled="disabled" checked="checked"></td>
336
-
337
- <td class="pr-6 pb-8">
338
- <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[email_label]" value="<?php echo $form_data['email_label']; ?>">
339
- </td>
340
- <td class="pr-6 pb-8">
341
- <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[email_place_holder]" value="<?php echo $form_data['email_place_holder']; ?>">
342
- </td>
343
- </tr>
344
  <tr class="form-field">
345
- <td class="pr-6 pb-8"><b class="text-gray-500 text-sm font-normal pb-2"><?php _e( 'Name', 'email-subscribers' ); ?></b></td>
346
-
347
- <td class="pr-6 pb-8">
348
- <input type="checkbox" class="form-checkbox es_visible" name="form_data[name_visible]" value="yes" <?php if ( $form_data['name_visible'] === 'yes' ) {
349
- echo 'checked="checked"';
350
- } ?> />
351
- </td>
 
352
  <td class="pr-6 pb-8">
353
- <input type="checkbox" class="form-checkbox es_required" name="form_data[name_required]" value="yes" <?php if ( $form_data['name_required'] === 'yes' ) {
354
- echo 'checked=checked';
355
- } ?>/>
356
  </td>
357
- <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 $form_data['name_label']; ?>" <?php if ( $form_data['name_required'] === 'yes' ) {
358
- echo 'disabled=disabled';
359
- } ?> ></td>
360
- <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 $form_data['name_place_holder']; ?>" <?php if ( $form_data['name_required'] === 'yes' ) {
361
- echo 'disabled=disabled';
362
- } ?> ></td>
363
- </tr>
364
- <tr class="form-field">
365
- <td class="pr-6 pb-6"><b class="text-gray-500 text-sm font-normal pb-2"><?php _e( 'Button', 'email-subscribers' ); ?></b></td>
366
- <td class="pr-6 pb-6"><input type="checkbox" class="form-checkbox" name="form_data[button_visible]" value="yes" disabled="disabled" checked="checked"></td>
367
- <td class="pr-6 pb-6"><input type="checkbox" class="form-checkbox" name="form_data[button_required]" value="yes" disabled="disabled" checked="checked"></td>
368
- <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 $form_data['button_label']; ?>"></td>
369
- </tr>
370
 
371
- </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
372
  </div>
373
  </div>
374
- </div>
375
- <div class="flex flex-row border-b border-gray-100">
376
- <div class="flex w-1/5">
377
- <div class="ml-4 pt-4 mb-2">
378
- <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Lists', 'email-subscribers' ); ?></span></label>
379
- <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php _e( 'Contacts will be added into selected list(s)', 'email-subscribers' ); ?></p>
380
  </div>
381
- </div>
382
- <div class="flex">
383
- <div class="ml-16 mb-6 mr-4 mt-4">
384
- <?php
385
 
386
- if ( count( $lists ) > 0 ) {
387
 
388
- echo ES_Shortcode::prepare_lists_checkboxes( $lists, array_keys( $lists ), 3, (array) $form_data['lists'] );
389
 
390
- } else {
391
- $create_list_link = admin_url( 'admin.php?page=es_lists&action=new' );
392
- ?>
393
- <span><b class="text-sm font-normal text-gray-600 pb-2"><?php _e( sprintf( 'List not found. Please <a href="%s">create your first list</a>.', $create_list_link ) ); ?></b></span>
394
- <?php } ?>
 
395
  </div>
396
  </div>
397
- </div>
398
 
399
- <div class="flex flex-row border-b border-gray-100">
400
- <div class="flex w-1/5">
401
- <div class="ml-4 pt-4 mb-2">
402
- <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Allow contact to choose list(s)', 'email-subscribers' ); ?></span></label>
403
- <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-4"><?php _e( 'Allow contacts to choose list(s) in which they want to subscribe.', 'email-subscribers' ); ?></p>
 
404
  </div>
405
- </div>
406
- <div class="flex ">
407
- <div class="ml-16 mb-4 mr-4 mt-12">
408
- <label for="allow_contact" class=" inline-flex items-center cursor-pointer">
409
- <span class="relative">
410
- <input id="allow_contact" type="checkbox" class=" absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[list_visible]" value="yes" <?php if ( $form_data['list_visible'] === 'yes' ) {
411
- echo 'checked="checked"';
412
- }
413
 
414
- ?> />
415
 
416
- <span class="relative es-mail-toggle-line block w-10 h-6 bg-gray-300 rounded-full shadow-inner"></span>
417
- <span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-4 h-4 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline "></span>
418
- </span>
419
 
420
- </label>
421
 
 
422
  </div>
423
  </div>
424
- </div>
425
 
426
- <div class="flex flex-row border-b border-gray-100">
427
- <div class="flex w-1/5">
428
- <div class="ml-4 pt-4 mb-2">
429
- <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Show GDPR consent checkbox', 'email-subscribers' ); ?></span></label>
430
- <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php _e( 'Show consent checkbox to get the consent of a contact before adding them to list(s)', 'email-subscribers' ); ?></p>
 
 
 
 
 
 
431
  </div>
432
- </div>
433
- <div class="flex ">
434
- <div class="ml-16 mb-2 mr-4 mt-6">
435
- <table class="ig_es_form_table">
436
- <tr>
437
- <td>
438
- <label for="gdpr_consent" class=" inline-flex items-center cursor-pointer">
439
- <span class="relative">
440
- <input id="gdpr_consent" type="checkbox" class="absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[gdpr_consent]" value="yes" <?php if ( $form_data['gdpr_consent'] === 'yes' ) {
441
- echo 'checked="checked"';
442
- }
443
- ?> />
444
-
445
- <span class="relative es-mail-toggle-line block w-10 h-6 bg-gray-300 rounded-full shadow-inner"></span>
446
- <span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-4 h-4 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline "></span>
447
- </span>
448
- </label>
449
- </td>
450
- </tr>
451
- <tr>
452
- <td>
453
- <textarea class="form-textarea" rows="2" cols="50" name="form_data[gdpr_consent_text]"><?php echo $form_data['gdpr_consent_text']; ?></textarea>
454
- <p class="italic text-xs text-gray-400 mt-2 leading-snug pb-4"><?php _e( 'Consent text will show up at subscription form next to consent checkbox.', 'email-subscribers' ); ?></p>
455
- </td>
456
- </tr>
457
- </table>
458
  </div>
459
  </div>
460
- </div>
461
- <input type="hidden" name="form_data[af_id]" value="<?php echo $form_data['af_id']; ?>"/>
462
- <input type="hidden" name="submitted" value="submitted"/>
463
- <?php if ( count( $lists ) > 0 ) { ?>
464
- <p class="submit"><input type="submit" name="submit" id="ig_es_campaign_post_notification_submit_button" class="cursor-pointer ig-es-primary-button px-4 py-2 ml-6 mr-2" value="<?php if ( $is_new ) {
465
- _e( 'Save Form', 'email-subscribers' );
466
- }
467
- else{
468
- _e( 'Save Changes', 'email-subscribers' );
 
 
 
 
 
 
 
 
469
  }
470
-
471
- ?>"/>
472
- <a href="admin.php?page=es_forms" class="cursor-pointer 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 ">Cancel</a></p>
473
- <?php } else {
474
- $lists_page_url = admin_url( 'admin.php?page=es_lists' );
475
- $message = __( sprintf( 'List(s) not found. Please create a first list from <a href="%s">here</a>', $lists_page_url ), 'email-subscribers' );
476
- $status = 'error';
477
- ES_Common::show_message( $message, $status );
478
- }
479
-
480
- if ( ! ES()->is_starter() ) {
481
-
482
- $url = 'https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=es_form_captcha&utm_campaign=es_upsale';
483
  ?>
484
- <div style=" background-image: linear-gradient(-100deg, rgba(250, 247, 133, 0.4), rgba(250, 247, 133, 0.8) 95%, rgba(250, 247, 133, 0.2)); padding: 10px; width: 35%; border-radius: 1em 0 1em 0; "><?php echo sprintf( __( 'Secure your form and avoid spam signups with Email Subscribers Starter Plan <a target="_blank" style="font-weight: bold; cursor:pointer; text-decoration:none" href="%s">Get started</a>',
485
- 'email-subscribers' ), $url ) ?></div>
486
- <?php } ?>
487
- </form>
488
  </div>
489
  </div>
490
  </div>
491
- </div>
492
 
493
 
494
- <?php
495
 
496
- }
497
 
498
- public function save_form( $id, $data ) {
499
 
500
- global $wpdb;
501
 
502
- $form_data = self::prepare_form_data( $data );
503
 
504
- if ( ! empty( $id ) ) {
505
- $form_data['updated_at'] = ig_get_current_date_time();
506
 
507
- // We don't want to change the created_at date for update
508
- unset( $form_data['created_at'] );
509
- $return = $wpdb->update( IG_FORMS_TABLE, $form_data, array( 'id' => $id ) );
510
- } else {
511
- $return = $wpdb->insert( IG_FORMS_TABLE, $form_data );
512
- }
513
 
514
- return $return;
515
- }
516
 
517
- public static function prepare_form_data( $data ) {
518
-
519
- $form_data = array();
520
- $name = ! empty( $data['name'] ) ? sanitize_text_field( $data['name'] ) : '';
521
- $desc = ! empty( $data['desc'] ) ? sanitize_text_field( $data['desc'] ) : '';
522
- $email_label = ! empty( $data['email_label'] ) ? sanitize_text_field( $data['email_label'] ) : '';
523
- $email_place_holder = ! empty( $data['email_place_holder'] ) ? sanitize_text_field( $data['email_place_holder'] ) : '';
524
- $name_label = ! empty( $data['name_label'] ) ? sanitize_text_field( $data['name_label'] ) : '';
525
- $name_place_holder = ! empty( $data['name_place_holder'] ) ? sanitize_text_field( $data['name_place_holder'] ) : '';
526
- $button_label = ! empty( $data['button_label'] ) ? sanitize_text_field( $data['button_label'] ) : '';
527
- $name_visible = ( ! empty( $data['name_visible'] ) && $data['name_visible'] === 'yes' ) ? true : false;
528
- $name_required = ( ! empty( $data['name_required'] ) && $data['name_required'] === 'yes' ) ? true : false;
529
- $list_visible = ( ! empty( $data['list_visible'] ) && $data['list_visible'] === 'yes' ) ? true : false;
530
- $list_required = true;
531
- $list_ids = ! empty( $data['lists'] ) ? $data['lists'] : array();
532
- $af_id = ! empty( $data['af_id'] ) ? $data['af_id'] : 0;
533
- $gdpr_consent = ! empty( $data['gdpr_consent'] ) ? sanitize_text_field( $data['gdpr_consent'] ) : "no";
534
- $gdpr_consent_text = ! empty( $data['gdpr_consent_text'] ) ? wp_kses_post( $data['gdpr_consent_text'] ) : "";
535
-
536
- $body = array(
537
- array(
538
- 'type' => 'text',
539
- 'name' => 'Name',
540
- 'id' => 'name',
541
- 'params' => array(
542
- 'label' => $name_label,
543
- 'place_holder' => $name_place_holder,
544
- 'show' => $name_visible,
545
- 'required' => $name_required
 
 
 
 
546
  ),
547
 
548
- 'position' => 1
549
- ),
550
-
551
- array(
552
- 'type' => 'text',
553
- 'name' => 'Email',
554
- 'id' => 'email',
555
- 'params' => array(
556
- 'label' => $email_label,
557
- 'place_holder' => $email_place_holder,
558
- 'show' => true,
559
- 'required' => true
560
  ),
561
 
562
- 'position' => 2
563
- ),
564
-
565
- array(
566
- 'type' => 'checkbox',
567
- 'name' => 'Lists',
568
- 'id' => 'lists',
569
- 'params' => array(
570
- 'label' => 'Lists',
571
- 'show' => $list_visible,
572
- 'required' => $list_required,
573
- 'values' => $list_ids
574
  ),
575
 
576
- 'position' => 3
577
- ),
578
-
579
- array(
580
- 'type' => 'submit',
581
- 'name' => 'submit',
582
- 'id' => 'submit',
583
- 'params' => array(
584
- 'label' => $button_label,
585
- 'show' => true,
586
- 'required' => true
587
  ),
588
 
589
- 'position' => 4
590
- ),
591
-
592
- );
593
-
594
- $settings = array(
595
- 'lists' => $list_ids,
596
- 'desc' => $desc,
597
- 'form_version' => ES()->forms_db->version,
598
- 'gdpr' => array(
599
- 'consent' => $gdpr_consent,
600
- 'consent_text' => $gdpr_consent_text
601
- )
602
- );
603
-
604
- $form_data['name'] = $name;
605
- $form_data['body'] = maybe_serialize( $body );
606
- $form_data['settings'] = maybe_serialize( $settings );
607
- $form_data['styles'] = null;
608
- $form_data['created_at'] = ig_get_current_date_time();
609
- $form_data['updated_at'] = null;
610
- $form_data['deleted_at'] = null;
611
- $form_data['af_id'] = $af_id;
612
-
613
- return $form_data;
614
- }
615
 
616
- public static function get_form_data_from_body( $data ) {
 
 
 
 
 
 
 
 
617
 
618
- $name = ! empty( $data['name'] ) ? $data['name'] : '';
619
- $id = ! empty( $data['id'] ) ? $data['id'] : '';
620
- $af_id = ! empty( $data['af_id'] ) ? $data['af_id'] : '';
621
- $body_data = maybe_unserialize( $data['body'] );
622
- $settings_data = maybe_unserialize( $data['settings'] );
623
 
624
- $desc = ! empty( $settings_data['desc'] ) ? $settings_data['desc'] : '';
625
- $form_version = ! empty( $settings_data['form_version'] ) ? $settings_data['form_version'] : '0.1';
 
 
 
 
 
 
626
 
627
- $gdpr_consent = "no";
628
- $gdpr_consent_text = "";
629
- if ( ! empty( $settings_data['gdpr'] ) ) {
630
- $gdpr_consent = ! empty( $settings_data['gdpr']['consent'] ) ? $settings_data['gdpr']['consent'] : "no";
631
- $gdpr_consent_text = ! empty( $settings_data['gdpr']['consent_text'] ) ? $settings_data['gdpr']['consent_text'] : "";
632
  }
633
 
634
- $form_data = array( 'form_id' => $id, 'name' => $name, 'af_id' => $af_id, 'desc' => $desc, 'form_version' => $form_version, 'gdpr_consent' => $gdpr_consent, 'gdpr_consent_text' => $gdpr_consent_text );
635
-
636
- foreach ( $body_data as $d ) {
637
- if ( $d['id'] === 'name' ) {
638
- $form_data['name_visible'] = ( $d['params']['show'] === true ) ? 'yes' : '';
639
- $form_data['name_required'] = ( $d['params']['required'] === true ) ? 'yes' : '';
640
- $form_data['name_label'] = ! empty( $d['params']['label'] ) ? $d['params']['label'] : '';
641
- $form_data['name_place_holder'] = ! empty( $d['params']['place_holder'] ) ? $d['params']['place_holder'] : '';
642
- } elseif ( $d['id'] === 'lists' ) {
643
- $form_data['list_visible'] = ( $d['params']['show'] === true ) ? 'yes' : '';
644
- $form_data['list_required'] = ( $d['params']['required'] === true ) ? 'yes' : '';
645
- $form_data['lists'] = ! empty( $d['params']['values'] ) ? $d['params']['values'] : array();
646
- } elseif ( $d['id'] === 'email' ) {
647
- $form_data['email_label'] = ! empty( $d['params']['label'] ) ? $d['params']['label'] : '';
648
- $form_data['email_place_holder'] = ! empty( $d['params']['place_holder'] ) ? $d['params']['place_holder'] : '';
649
- } elseif ( $d['id'] === 'submit' ) {
650
- $form_data['button_label'] = ! empty( $d['params']['label'] ) ? $d['params']['label'] : '';
 
 
651
  }
652
- }
653
 
654
- return $form_data;
655
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
656
 
657
  /**
658
  * Retrieve lists data from the database
@@ -857,7 +873,6 @@ class ES_Forms_Table extends WP_List_Table {
857
 
858
  $this->_column_headers = $this->get_column_info();
859
 
860
-
861
  /** Process bulk action */
862
  $this->process_bulk_action();
863
 
@@ -935,4 +950,4 @@ class ES_Forms_Table extends WP_List_Table {
935
  public function no_items() {
936
  _e( 'No Forms avaliable.', 'email-subscribers' );
937
  }
938
- }
7
 
8
  if ( ! class_exists( 'WP_List_Table' ) ) {
9
  require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
10
+ }
11
 
12
  class ES_Forms_Table extends WP_List_Table {
13
 
78
  $form = ig_es_get_request_data( 'form' );
79
  echo $this->edit_form( absint( $form ) );
80
  } else { ?>
81
+ <h1 class=" wp-heading-inline">
82
+ <span class="text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate">
83
+ <?php _e( 'Forms', 'email-subscribers' ) ?>
84
+ <a href="admin.php?page=es_forms&action=new" class="pt-2 ig-es-title-button px-2 py-2 mx-2">
85
+ <?php _e('Add New','email-subscribers'); ?>
86
+ </a>
87
+ </span>
88
+ </h1>
89
  <div id="poststuff" class="es-items-lists">
90
  <div id="post-body" class="metabox-holder column-1">
91
  <div id="post-body-content">
150
  $form_data = ig_es_get_request_data( 'form_data', array(), false );
151
  $lists = ig_es_get_request_data( 'lists' );
152
 
153
+ $form_data['captcha'] = ! empty($form_data['captcha']) ? $form_data['captcha'] : 'no';
154
+
155
  $form_data['lists'] = $lists;
156
 
157
  $validate_data = array(
183
  global $wpdb;
184
 
185
  if ( $id ) {
186
+
187
  $form_data = array();
188
 
189
  $data = $wpdb->get_results( "SELECT * FROM " . IG_FORMS_TABLE . " WHERE id = $id", ARRAY_A );
198
  $form_data = ig_es_get_request_data( 'form_data', array(), false );
199
  $lists = ig_es_get_request_data( 'lists' );
200
 
201
+ $form_data['captcha'] = ! empty($form_data['captcha']) ? $form_data['captcha'] : 'no';
202
+
203
  $form_data['lists'] = $lists;
204
 
205
  $validate_data = array(
259
  $form_data['lists'] = ! empty( $data['lists'] ) ? $data['lists'] : array();
260
  $form_data['af_id'] = ! empty( $data['af_id'] ) ? $data['af_id'] : 0;
261
  $form_data['desc'] = ! empty( $data['desc'] ) ? sanitize_text_field( $data['desc'] ) : '';
262
+ $form_data['captcha'] = ES_Common::get_captcha_setting( 0, $data);
263
 
264
  $lists = ES()->lists_db->get_list_id_name_map();
265
  $nonce = wp_create_nonce( 'es_form' );
270
  <header class="ml-12 mr-8 wp-heading-inline">
271
  <div class="md:flex md:items-center md:justify-between justify-center">
272
  <div class="flex-1 min-w-0">
273
+ <h1 class="text-2xl leading-7 text-gray-900 sm:leading-9 sm:truncate">
274
+ <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate">
275
+ <a href="admin.php?page=es_forms"><?php _e('Forms ','email-subscribers'); ?></a></span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg>
276
+ <?php
277
+ if ( $is_new ) {
278
+ _e( ' New Form', 'email-subscribers' );
279
+ } else {
280
+ _e( ' Edit Form', 'email-subscribers' );
281
+ }
282
+
283
+ ?>
284
+ </h1>
285
+ </div>
286
  </div>
287
+ </header>
288
+ <div class="ml-12 mr-8"><hr class="wp-header-end"></div>
289
+ <div id="poststuff">
290
+ <div id="post-body" class="metabox-holder column-1">
291
+ <div id="post-body-content">
292
+ <div class="meta-box-sortables ui-sortable bg-white shadow-md ml-12 mr-8 mt-4 rounded-lg">
293
+ <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 $action; ?>&form=<?php echo $id; ?>&_wpnonce=<?php echo $nonce; ?>">
294
+
295
+
296
+ <div class="flex flex-row border-b border-gray-100">
297
+ <div class="flex w-1/5">
298
+ <div class="ml-4 pt-6">
299
+ <label for="tag-link"><span class="block ml-4 pt-1 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Form Name', 'email-subscribers' ); ?></span></label>
300
+ </div>
301
  </div>
302
+ <div class="flex">
303
+ <div class="ml-16 mb-4 h-10 mr-4 mt-4">
304
+ <div class="h-10 relative">
305
+ <input id="ig_es_title" class="form-input block border-gray-400 w-full pl-3 pr-12 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" placeholder="Enter form name" name="form_data[name]" value="<?php echo stripslashes( $form_data['name'] ); ?>" size="30" maxlength="100"/>
306
+ </div>
307
  </div>
308
  </div>
309
  </div>
310
+ <div class="flex flex-row border-b border-gray-100">
311
+ <div class="flex w-1/5">
312
+ <div class="ml-4 pt-6">
313
+ <label for="tag-link"><span class="block pt-1 ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Description', 'email-subscribers' ); ?></span></label>
314
+ </div>
315
  </div>
316
+ <div class="flex ">
317
+ <div class="ml-16 mb-4 h-10 mr-4 mt-4">
318
+ <div class="h-10 relative ">
319
+ <input id="ig_es_title" class="form-input block border-gray-400 w-full pl-3 pr-12 shadow-sm focus:bg-gray-100 sm:text-sm sm:leading-5" placeholder="Enter description" name="form_data[desc]" id="ig_es_title" value="<?php echo stripslashes( $form_data['desc'] ); ?>" size="30" maxlength="100"/>
320
+ </div>
321
  </div>
322
  </div>
323
  </div>
324
+ <div class="flex flex-row border-b border-gray-100">
325
+ <div class="flex w-1/5">
326
+ <div class="ml-4 pt-4 mb-2">
327
+ <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Form Fields', 'email-subscribers' ); ?></span></label>
328
+ </div>
329
  </div>
330
+ <div class="flex ">
331
+ <div class="ml-16 mr-4 mt-4">
332
+ <table class="ig-es-form-table">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
333
  <tr class="form-field">
334
+ <td class="pr-6 pb-8"><b class=" font-medium text-gray-500 pb-2"><?php _e( 'Field', 'email-subscribers' ); ?></b></td>
335
+ <td class="pr-6 pb-8"><b class=" font-medium text-gray-500 pb-2"><?php _e( 'Show?', 'email-subscribers' ); ?></b></td>
336
+ <td class="pr-6 pb-8"><b class=" font-medium text-gray-500 pb-2"><?php _e( 'Required?', 'email-subscribers' ); ?></b></td>
337
+ <td class="pr-6 pb-8"><b class=" font-medium text-gray-500 pb-2"><?php _e( 'Label', 'email-subscribers' ); ?></b></td>
338
+ <td class="pr-6 pb-8"><b class="font-medium text-gray-500 pb-2"><?php _e( 'Place Holder', 'email-subscribers' ); ?></b></td>
339
+ </tr>
340
+ <tr class="form-field ">
341
+ <td class="pr-6 pb-8"><b class="text-gray-500 text-sm font-normal pb-2"><?php _e( 'Email', 'email-subscribers' ); ?></b></td>
342
  <td class="pr-6 pb-8">
343
+ <input type="checkbox" class="form-checkbox opacity-0" name="form_data[email_visible]" value="yes" disabled="disabled" checked="checked" />
 
 
344
  </td>
 
 
 
 
 
 
 
 
 
 
 
 
 
345
 
346
+
347
+ <td class="pr-6 pb-8">
348
+ <input type="checkbox" class="form-checkbox opacity-0" name="form_data[email_required]" value="yes" disabled="disabled" checked="checked"></td>
349
+
350
+ <td class="pr-6 pb-8">
351
+ <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[email_label]" value="<?php echo $form_data['email_label']; ?>">
352
+ </td>
353
+ <td class="pr-6 pb-8">
354
+ <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[email_place_holder]" value="<?php echo $form_data['email_place_holder']; ?>">
355
+ </td>
356
+ </tr>
357
+ <tr class="form-field">
358
+ <td class="pr-6 pb-8"><b class="text-gray-500 text-sm font-normal pb-2"><?php _e( 'Name', 'email-subscribers' ); ?></b></td>
359
+
360
+ <td class="pr-6 pb-8">
361
+ <input type="checkbox" class="form-checkbox es_visible" name="form_data[name_visible]" value="yes" <?php if ( $form_data['name_visible'] === 'yes' ) {
362
+ echo 'checked="checked"';
363
+ } ?> />
364
+ </td>
365
+ <td class="pr-6 pb-8">
366
+ <input type="checkbox" class="form-checkbox es_required" name="form_data[name_required]" value="yes" <?php if ( $form_data['name_required'] === 'yes' ) {
367
+ echo 'checked=checked';
368
+ } ?>/>
369
+ </td>
370
+ <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 $form_data['name_label']; ?>" <?php if ( $form_data['name_required'] === 'yes' ) {
371
+ echo 'disabled=disabled';
372
+ } ?> ></td>
373
+ <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 $form_data['name_place_holder']; ?>" <?php if ( $form_data['name_required'] === 'yes' ) {
374
+ echo 'disabled=disabled';
375
+ } ?> ></td>
376
+ </tr>
377
+ <tr class="form-field">
378
+ <td class="pr-6 pb-6"><b class="text-gray-500 text-sm font-normal pb-2"><?php _e( 'Button', 'email-subscribers' ); ?></b></td>
379
+ <td class="pr-6 pb-6"><input type="checkbox" class="form-checkbox" name="form_data[button_visible]" value="yes" disabled="disabled" checked="checked"></td>
380
+ <td class="pr-6 pb-6"><input type="checkbox" class="form-checkbox" name="form_data[button_required]" value="yes" disabled="disabled" checked="checked"></td>
381
+ <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 $form_data['button_label']; ?>"></td>
382
+ </tr>
383
+
384
+ </table>
385
+ </div>
386
  </div>
387
  </div>
388
+ <div class="flex flex-row border-b border-gray-100">
389
+ <div class="flex w-1/5">
390
+ <div class="ml-4 pt-4 mb-2">
391
+ <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Lists', 'email-subscribers' ); ?></span></label>
392
+ <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php _e( 'Contacts will be added into selected list(s)', 'email-subscribers' ); ?></p>
393
+ </div>
394
  </div>
395
+ <div class="flex">
396
+ <div class="ml-16 mb-6 mr-4 mt-4">
397
+ <?php
 
398
 
399
+ if ( count( $lists ) > 0 ) {
400
 
401
+ echo ES_Shortcode::prepare_lists_checkboxes( $lists, array_keys( $lists ), 3, (array) $form_data['lists'] );
402
 
403
+ } else {
404
+ $create_list_link = admin_url( 'admin.php?page=es_lists&action=new' );
405
+ ?>
406
+ <span><b class="text-sm font-normal text-gray-600 pb-2"><?php _e( sprintf( 'List not found. Please <a href="%s">create your first list</a>.', $create_list_link ) ); ?></b></span>
407
+ <?php } ?>
408
+ </div>
409
  </div>
410
  </div>
 
411
 
412
+ <div class="flex flex-row border-b border-gray-100">
413
+ <div class="flex w-1/5">
414
+ <div class="ml-4 pt-4 mb-2">
415
+ <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Allow contact to choose list(s)', 'email-subscribers' ); ?></span></label>
416
+ <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-4"><?php _e( 'Allow contacts to choose list(s) in which they want to subscribe.', 'email-subscribers' ); ?></p>
417
+ </div>
418
  </div>
419
+ <div class="flex ">
420
+ <div class="ml-16 mb-4 mr-4 mt-12">
421
+ <label for="allow_contact" class=" inline-flex items-center cursor-pointer">
422
+ <span class="relative">
423
+ <input id="allow_contact" type="checkbox" class=" absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[list_visible]" value="yes" <?php if ( $form_data['list_visible'] === 'yes' ) {
424
+ echo 'checked="checked"';
425
+ }
 
426
 
427
+ ?> />
428
 
429
+ <span class="relative es-mail-toggle-line block w-10 h-6 bg-gray-300 rounded-full shadow-inner"></span>
430
+ <span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-4 h-4 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline "></span>
431
+ </span>
432
 
433
+ </label>
434
 
435
+ </div>
436
  </div>
437
  </div>
 
438
 
439
+
440
+ <?php do_action('ig_es_add_additional_options', $form_data);?>
441
+
442
+
443
+
444
+ <div class="flex flex-row border-b border-gray-100">
445
+ <div class="flex w-1/5">
446
+ <div class="ml-4 pt-4 mb-2">
447
+ <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Show GDPR consent checkbox', 'email-subscribers' ); ?></span></label>
448
+ <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-8"><?php _e( 'Show consent checkbox to get the consent of a contact before adding them to list(s)', 'email-subscribers' ); ?></p>
449
+ </div>
450
  </div>
451
+ <div class="flex ">
452
+ <div class="ml-16 mb-2 mr-4 mt-6">
453
+ <table class="ig_es_form_table">
454
+ <tr>
455
+ <td>
456
+ <label for="gdpr_consent" class=" inline-flex items-center cursor-pointer">
457
+ <span class="relative">
458
+ <input id="gdpr_consent" type="checkbox" class="absolute es-check-toggle opacity-0 w-0 h-0" name="form_data[gdpr_consent]" value="yes" <?php if ( $form_data['gdpr_consent'] === 'yes' ) {
459
+ echo 'checked="checked"';
460
+ }
461
+ ?> />
462
+
463
+ <span class="relative es-mail-toggle-line block w-10 h-6 bg-gray-300 rounded-full shadow-inner"></span>
464
+ <span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-4 h-4 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline "></span>
465
+ </span>
466
+ </label>
467
+ </td>
468
+ </tr>
469
+ <tr>
470
+ <td>
471
+ <textarea class="form-textarea" rows="2" cols="50" name="form_data[gdpr_consent_text]"><?php echo $form_data['gdpr_consent_text']; ?></textarea>
472
+ <p class="italic text-xs text-gray-400 mt-2 leading-snug pb-4"><?php _e( 'Consent text will show up at subscription form next to consent checkbox.', 'email-subscribers' ); ?></p>
473
+ </td>
474
+ </tr>
475
+ </table>
476
+ </div>
477
  </div>
478
  </div>
479
+ <input type="hidden" name="form_data[af_id]" value="<?php echo $form_data['af_id']; ?>"/>
480
+ <input type="hidden" name="submitted" value="submitted"/>
481
+ <?php if ( count( $lists ) > 0 ) { ?>
482
+ <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 if ( $is_new ) {
483
+ _e( 'Save Form', 'email-subscribers' );
484
+ }
485
+ else{
486
+ _e( 'Save Changes', 'email-subscribers' );
487
+ }
488
+
489
+ ?>"/>
490
+ <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 ">Cancel</a></p>
491
+ <?php } else {
492
+ $lists_page_url = admin_url( 'admin.php?page=es_lists' );
493
+ $message = __( sprintf( 'List(s) not found. Please create a first list from <a href="%s">here</a>', $lists_page_url ), 'email-subscribers' );
494
+ $status = 'error';
495
+ ES_Common::show_message( $message, $status );
496
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
497
  ?>
498
+ </form>
499
+ </div>
 
 
500
  </div>
501
  </div>
502
  </div>
 
503
 
504
 
505
+ <?php
506
 
507
+ }
508
 
509
+ public function save_form( $id, $data ) {
510
 
511
+ global $wpdb;
512
 
513
+ $form_data = self::prepare_form_data( $data );
514
 
515
+ if ( ! empty( $id ) ) {
516
+ $form_data['updated_at'] = ig_get_current_date_time();
517
 
518
+ // We don't want to change the created_at date for update
519
+ unset( $form_data['created_at'] );
520
+ $return = $wpdb->update( IG_FORMS_TABLE, $form_data, array( 'id' => $id ) );
521
+ } else {
522
+ $return = $wpdb->insert( IG_FORMS_TABLE, $form_data );
523
+ }
524
 
525
+ return $return;
526
+ }
527
 
528
+ public static function prepare_form_data( $data ) {
529
+
530
+ $form_data = array();
531
+ $name = ! empty( $data['name'] ) ? sanitize_text_field( $data['name'] ) : '';
532
+ $desc = ! empty( $data['desc'] ) ? sanitize_text_field( $data['desc'] ) : '';
533
+ $email_label = ! empty( $data['email_label'] ) ? sanitize_text_field( $data['email_label'] ) : '';
534
+ $email_place_holder = ! empty( $data['email_place_holder'] ) ? sanitize_text_field( $data['email_place_holder'] ) : '';
535
+ $name_label = ! empty( $data['name_label'] ) ? sanitize_text_field( $data['name_label'] ) : '';
536
+ $name_place_holder = ! empty( $data['name_place_holder'] ) ? sanitize_text_field( $data['name_place_holder'] ) : '';
537
+ $button_label = ! empty( $data['button_label'] ) ? sanitize_text_field( $data['button_label'] ) : '';
538
+ $name_visible = ( ! empty( $data['name_visible'] ) && $data['name_visible'] === 'yes' ) ? true : false;
539
+ $name_required = ( ! empty( $data['name_required'] ) && $data['name_required'] === 'yes' ) ? true : false;
540
+ $list_visible = ( ! empty( $data['list_visible'] ) && $data['list_visible'] === 'yes' ) ? true : false;
541
+ $list_required = true;
542
+ $list_ids = ! empty( $data['lists'] ) ? $data['lists'] : array();
543
+ $af_id = ! empty( $data['af_id'] ) ? $data['af_id'] : 0;
544
+ $gdpr_consent = ! empty( $data['gdpr_consent'] ) ? sanitize_text_field( $data['gdpr_consent'] ) : "no";
545
+ $gdpr_consent_text = ! empty( $data['gdpr_consent_text'] ) ? wp_kses_post( $data['gdpr_consent_text'] ) : "";
546
+ $captcha = ! empty( $data['captcha'] ) ? ES_Common::get_captcha_setting(null, $data) : "no";
547
+
548
+ $body = array(
549
+ array(
550
+ 'type' => 'text',
551
+ 'name' => 'Name',
552
+ 'id' => 'name',
553
+ 'params' => array(
554
+ 'label' => $name_label,
555
+ 'place_holder' => $name_place_holder,
556
+ 'show' => $name_visible,
557
+ 'required' => $name_required
558
+ ),
559
+
560
+ 'position' => 1
561
  ),
562
 
563
+ array(
564
+ 'type' => 'text',
565
+ 'name' => 'Email',
566
+ 'id' => 'email',
567
+ 'params' => array(
568
+ 'label' => $email_label,
569
+ 'place_holder' => $email_place_holder,
570
+ 'show' => true,
571
+ 'required' => true
572
+ ),
573
+
574
+ 'position' => 2
575
  ),
576
 
577
+ array(
578
+ 'type' => 'checkbox',
579
+ 'name' => 'Lists',
580
+ 'id' => 'lists',
581
+ 'params' => array(
582
+ 'label' => 'Lists',
583
+ 'show' => $list_visible,
584
+ 'required' => $list_required,
585
+ 'values' => $list_ids
586
+ ),
587
+
588
+ 'position' => 3
589
  ),
590
 
591
+ array(
592
+ 'type' => 'submit',
593
+ 'name' => 'submit',
594
+ 'id' => 'submit',
595
+ 'params' => array(
596
+ 'label' => $button_label,
597
+ 'show' => true,
598
+ 'required' => true
599
+ ),
600
+
601
+ 'position' => 4
602
  ),
603
 
604
+ );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
605
 
606
+ $settings = array(
607
+ 'lists' => $list_ids,
608
+ 'desc' => $desc,
609
+ 'form_version' => ES()->forms_db->version,
610
+ 'captcha' => $captcha,
611
+ 'gdpr' => array(
612
+ 'consent' => $gdpr_consent,
613
+ 'consent_text' => $gdpr_consent_text
614
+ )
615
 
616
+ );
 
 
 
 
617
 
618
+ $form_data['name'] = $name;
619
+ $form_data['body'] = maybe_serialize( $body );
620
+ $form_data['settings'] = maybe_serialize( $settings );
621
+ $form_data['styles'] = null;
622
+ $form_data['created_at'] = ig_get_current_date_time();
623
+ $form_data['updated_at'] = null;
624
+ $form_data['deleted_at'] = null;
625
+ $form_data['af_id'] = $af_id;
626
 
627
+ return $form_data;
 
 
 
 
628
  }
629
 
630
+ public static function get_form_data_from_body( $data ) {
631
+
632
+ $name = ! empty( $data['name'] ) ? $data['name'] : '';
633
+ $id = ! empty( $data['id'] ) ? $data['id'] : '';
634
+ $af_id = ! empty( $data['af_id'] ) ? $data['af_id'] : '';
635
+ $body_data = maybe_unserialize( $data['body'] );
636
+ $settings_data = maybe_unserialize( $data['settings'] );
637
+
638
+ $desc = ! empty( $settings_data['desc'] ) ? $settings_data['desc'] : '';
639
+ $form_version = ! empty( $settings_data['form_version'] ) ? $settings_data['form_version'] : '0.1';
640
+
641
+ $gdpr_consent = "no";
642
+ $gdpr_consent_text = "";
643
+
644
+ $captcha = ES_Common::get_captcha_setting( $id , $settings_data);
645
+
646
+ if ( ! empty( $settings_data['gdpr'] ) ) {
647
+ $gdpr_consent = ! empty( $settings_data['gdpr']['consent'] ) ? $settings_data['gdpr']['consent'] : "no";
648
+ $gdpr_consent_text = ! empty( $settings_data['gdpr']['consent_text'] ) ? $settings_data['gdpr']['consent_text'] : "";
649
  }
 
650
 
651
+ $form_data = array( 'form_id' => $id, 'name' => $name, 'af_id' => $af_id, 'desc' => $desc, 'form_version' => $form_version, 'gdpr_consent' => $gdpr_consent, 'gdpr_consent_text' => $gdpr_consent_text, 'captcha' => $captcha );
652
+
653
+ foreach ( $body_data as $d ) {
654
+ if ( $d['id'] === 'name' ) {
655
+ $form_data['name_visible'] = ( $d['params']['show'] === true ) ? 'yes' : '';
656
+ $form_data['name_required'] = ( $d['params']['required'] === true ) ? 'yes' : '';
657
+ $form_data['name_label'] = ! empty( $d['params']['label'] ) ? $d['params']['label'] : '';
658
+ $form_data['name_place_holder'] = ! empty( $d['params']['place_holder'] ) ? $d['params']['place_holder'] : '';
659
+ } elseif ( $d['id'] === 'lists' ) {
660
+ $form_data['list_visible'] = ( $d['params']['show'] === true ) ? 'yes' : '';
661
+ $form_data['list_required'] = ( $d['params']['required'] === true ) ? 'yes' : '';
662
+ $form_data['lists'] = ! empty( $d['params']['values'] ) ? $d['params']['values'] : array();
663
+ } elseif ( $d['id'] === 'email' ) {
664
+ $form_data['email_label'] = ! empty( $d['params']['label'] ) ? $d['params']['label'] : '';
665
+ $form_data['email_place_holder'] = ! empty( $d['params']['place_holder'] ) ? $d['params']['place_holder'] : '';
666
+ } elseif ( $d['id'] === 'submit' ) {
667
+ $form_data['button_label'] = ! empty( $d['params']['label'] ) ? $d['params']['label'] : '';
668
+ }
669
+ }
670
+ return $form_data;
671
+ }
672
 
673
  /**
674
  * Retrieve lists data from the database
873
 
874
  $this->_column_headers = $this->get_column_info();
875
 
 
876
  /** Process bulk action */
877
  $this->process_bulk_action();
878
 
950
  public function no_items() {
951
  _e( 'No Forms avaliable.', 'email-subscribers' );
952
  }
953
+ }
lite/includes/classes/class-es-handle-post-notification.php CHANGED
@@ -173,9 +173,9 @@ class ES_Handle_Post_Notification {
173
  public static function prepare_body( $es_templ_body, $post_id, $email_template_id ) {
174
  global $post;
175
  $post = get_post( $post_id );
176
- $post_date = $post->post_modified;
177
  $es_templ_body = str_replace( '{{DATE}}', $post_date, $es_templ_body );
178
-
179
  $post_title = get_the_title( $post );
180
  $es_templ_body = str_replace( '{{POSTTITLE}}', $post_title, $es_templ_body );
181
  $post_link = get_permalink( $post_id );
173
  public static function prepare_body( $es_templ_body, $post_id, $email_template_id ) {
174
  global $post;
175
  $post = get_post( $post_id );
176
+ $post_date = ES_Common::convert_date_to_wp_date( $post->post_modified );
177
  $es_templ_body = str_replace( '{{DATE}}', $post_date, $es_templ_body );
178
+
179
  $post_title = get_the_title( $post );
180
  $es_templ_body = str_replace( '{{POSTTITLE}}', $post_title, $es_templ_body );
181
  $post_link = get_permalink( $post_id );
lite/includes/classes/class-es-ig-redirect.php CHANGED
@@ -26,10 +26,10 @@ if ( ! class_exists( 'ES_IG_Redirect' ) ) {
26
 
27
  if ( 'create_campaign' === $action ) {
28
  $redirect_url = admin_url( 'edit.php?post_type=ig_campaign' );
29
- $info = __( 'Create Onsite Campaigns Using <a href="https://wordpress.org/plugins/icegram">Icegram</a>', 'email_subscribers' );
30
  } elseif ( 'create_template' === $action ) {
31
  $redirect_url = admin_url( 'edit.php?ig_campaign&page=icegram-gallery' );
32
- $info = __( 'Create Popups using <a href="https://wordpress.org/plugins/icegram">Icegram</a>', 'email_subscribers' );
33
  }
34
 
35
  $icegram_plugin = 'icegram/icegram.php';
@@ -70,9 +70,9 @@ if ( ! class_exists( 'ES_IG_Redirect' ) ) {
70
 
71
  <?php
72
  if ( in_array( $icegram_plugin, $inactive_plugins ) ) {
73
- ?> <a href="<?php echo $ig_activate_url ?>"><button type="button" class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 bg-white text-sm leading-5 font-medium text-white bg-indigo-600 hover:bg-indigo-500 focus:outline-none focus:shadow-outline-blue transition ease-in-out duration-150"> <?php _e( 'Activate Icegram','email_subscribers' );
74
  } else {
75
- ?> <a href="<?php echo $ig_install_url ?>"><button type="button" class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 bg-white text-sm leading-5 font-medium text-white bg-indigo-600 hover:bg-indigo-500 focus:outline-none focus:shadow-outline-blue transition ease-in-out duration-150"> <?php _e( 'Install Icegram','email_subscribers' );
76
  } ?>
77
  </button></a>
78
  </span>
26
 
27
  if ( 'create_campaign' === $action ) {
28
  $redirect_url = admin_url( 'edit.php?post_type=ig_campaign' );
29
+ $info = __( 'Create Onsite Campaigns Using <a href="https://wordpress.org/plugins/icegram">Icegram</a>', 'email-subscribers' );
30
  } elseif ( 'create_template' === $action ) {
31
  $redirect_url = admin_url( 'edit.php?ig_campaign&page=icegram-gallery' );
32
+ $info = __( 'Create Popups using <a href="https://wordpress.org/plugins/icegram">Icegram</a>', 'email-subscribers' );
33
  }
34
 
35
  $icegram_plugin = 'icegram/icegram.php';
70
 
71
  <?php
72
  if ( in_array( $icegram_plugin, $inactive_plugins ) ) {
73
+ ?> <a href="<?php echo $ig_activate_url ?>"><button type="button" class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 bg-white text-sm leading-5 font-medium text-white bg-indigo-600 hover:bg-indigo-500 focus:outline-none focus:shadow-outline-blue transition ease-in-out duration-150"> <?php _e( 'Activate Icegram','email-subscribers' );
74
  } else {
75
+ ?> <a href="<?php echo $ig_install_url ?>"><button type="button" class="inline-flex justify-center w-full rounded-md border border-transparent px-4 py-2 bg-white text-sm leading-5 font-medium text-white bg-indigo-600 hover:bg-indigo-500 focus:outline-none focus:shadow-outline-blue transition ease-in-out duration-150"> <?php _e( 'Install Icegram','email-subscribers' );
76
  } ?>
77
  </button></a>
78
  </span>
lite/includes/classes/class-es-import-subscribers.php CHANGED
@@ -12,7 +12,6 @@ class ES_Import_Subscribers {
12
  * @since 4.0.0
13
  */
14
  public function __construct() {
15
- add_action( 'init', array( &$this, 'maybe_start_import' ) );
16
  }
17
 
18
  /**
@@ -21,13 +20,212 @@ class ES_Import_Subscribers {
21
  * @since 4.0,0
22
  *
23
  * @modify 4.3.1
24
- *
25
  * @modfiy 4.4.4 Moved importing code section to maybe_start_import method.
26
  */
27
  public function import_callback() {
28
 
29
  require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
30
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
31
  $this->prepare_import_subscriber_form();
32
 
33
  }
@@ -108,16 +306,16 @@ class ES_Import_Subscribers {
108
 
109
  <div class="wrap max-w-full mt-1 font-sans">
110
  <header class="ml-12 wp-heading-inline">
111
-
112
- <div class="mt-2">
113
- <h2 class="text-xl font-medium text-gray-800 sm:leading-9 sm:truncate"><h1 class="text-xl leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
114
- <span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate"> <a href="admin.php?page=es_subscribers"><?php _e( 'Audience', 'email-subscribers' ); ?> </a> </span> > <?php _e('Import Contacts', 'email-subscribers'); ?>
115
  <?php
116
  ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
117
  ?>
118
  </div>
119
  </h2>
120
-
121
  </header>
122
 
123
  <div class="ml-12 mr-8"><hr class="wp-header-end"></div>
@@ -125,188 +323,57 @@ class ES_Import_Subscribers {
125
  </div>
126
 
127
  <?php
128
- }
129
 
130
  /**
131
- * Start import process after validating sumitted data
132
- *
133
- * @since 4.4.4
 
 
 
 
 
134
  */
135
- public function maybe_start_import() {
136
- $action = ig_es_get_request_data( 'action' );
137
-
138
- if( 'import' !== $action ) {
139
- return;
140
- }
141
-
142
- $submit = ig_es_get_post_data( 'submit' );
143
- if ( $submit ) {
144
- $import_contacts_nonce = ig_es_get_post_data( 'import_contacts' );
145
- if ( ! isset( $_POST['import_contacts'] ) || ! wp_verify_nonce( sanitize_key( $import_contacts_nonce ), 'import-contacts' ) ) {
146
- $message = __( "Sorry, you do not have permission to import contacts.", 'email-subscribers' );
147
- ES_Common::show_message( $message, 'error' );
148
- }
149
-
150
- if ( isset( $_FILES["file"] ) ) {
151
-
152
- if ( is_uploaded_file( $_FILES["file"]["tmp_name"] ) ) {
153
-
154
- $tmp_file = $_FILES["file"]["tmp_name"];
155
- $file = $_FILES['file']['name'];
156
-
157
- $ext = strtolower( substr( $file, strrpos( $file, "." ), ( strlen( $file ) - strrpos( $file, "." ) ) ) );
158
-
159
- if ( $ext == ".csv" ) {
160
- $max_upload_size = $this->get_max_upload_size();
161
- $file_size = $_FILES['file']['size'];
162
-
163
- // Check if CSV file size is less than or equal to max upload size.
164
- if( $file_size <= $max_upload_size ) {
165
- if ( ! ini_get( "auto_detect_line_endings" ) ) {
166
- ini_set( "auto_detect_line_endings", '1' );
167
- }
168
-
169
- $statuses = ES_Common::get_statuses_key_name_map();
170
- $es_email_status = ig_es_get_post_data( 'es_email_status' );
171
-
172
- $status = '';
173
- if ( in_array( $es_email_status, array_keys( $statuses ) ) ) {
174
- $status = $es_email_status;
175
- }
176
-
177
- if ( ! empty( $status ) ) {
178
-
179
- $lists = ES()->lists_db->get_id_name_map();
180
-
181
- $list_id = ig_es_get_post_data( 'list_id' );
182
-
183
- if ( ! in_array( $list_id, array_keys( $lists ) ) ) {
184
- $list_id = '';
185
- }
186
-
187
- if ( ! empty( $list_id ) ) {
188
-
189
- $uploaded_file = $_FILES['file'];
190
- $upload_overrides = array( 'test_form' => false );
191
-
192
- if ( ! function_exists( 'wp_handle_upload' ) ) {
193
- require_once( ABSPATH . 'wp-admin/includes/file.php' );
194
- }
195
-
196
- // Whitelist CSV file type to allowed file types during upload.
197
- add_filter( 'site_option_upload_filetypes', array( $this, 'whitelist_csv_file_type' ) );
198
-
199
- $import_file = wp_handle_upload( $uploaded_file, $upload_overrides );
200
-
201
- // Remove CSV file type from allowed file types for upload after uploading the file.
202
- remove_filter( 'site_option_upload_filetypes', array( $this, 'whitelist_csv_file_type' ) );
203
-
204
- if ( $import_file && ! isset( $import_file['error'] ) ) {
205
-
206
- $file_pointer = file( $import_file['file'] );
207
- if ( is_array( $file_pointer ) && ! empty( $file_pointer ) ) {
208
- $total_contacts_to_process = count( $file_pointer ) - 1;
209
-
210
- if( ! empty( $total_contacts_to_process ) ) {
211
- $contact_background_process_data = array(
212
- 'action' => 'import_contact',
213
- 'contact_status' => $status,
214
- 'list_id' => $list_id,
215
- 'import_file' => $import_file,
216
- 'total_contacts_to_process' => $total_contacts_to_process,
217
- );
218
-
219
- update_site_option( 'ig_es_contact_background_process_data', $contact_background_process_data );
220
-
221
- as_unschedule_action( 'ig_es_add_contact_to_csv' );
222
- as_unschedule_action( 'ig_es_import_contacts_from_csv' );
223
-
224
- as_schedule_single_action( time(), 'ig_es_import_contacts_from_csv' );
225
-
226
- ES()->init_action_scheduler_queue_runner();
227
-
228
- $email_subscribers_import_page = admin_url( 'admin.php?page=es_subscribers&action=import' );
229
- wp_safe_redirect( $email_subscribers_import_page );
230
- exit();
231
- } else {
232
- $message = __( 'There are no contacts to import in the uploaded CSV file. Please add some contacts and try again later.', 'email-subscribers' );
233
- ES_Common::show_message( $message, 'error' );
234
- }
235
-
236
- } else {
237
- $message = __( 'Unable to import from uploaded file. Please try again later.', 'email-subscribers' );
238
- ES_Common::show_message( $message, 'error' );
239
- }
240
-
241
- } else {
242
- $message = $import_file['error'];
243
- ES_Common::show_message( $message, 'error' );
244
- }
245
-
246
- } else {
247
- $message = __( "Error: Please Select List", 'email-subscribers' );
248
- ES_Common::show_message( $message, 'error' );
249
- }
250
- } else {
251
- $message = __( "Error: Please select status", 'email-subscribers' );
252
- ES_Common::show_message( $message, 'error' );
253
- }
254
-
255
- } else {
256
- $message = sprintf( __( 'The file you are trying to upload is larger than %s. Please upload a smaller file.', 'email-subscribers' ), esc_html( size_format( $max_upload_size ) ) );
257
- ES_Common::show_message( $message, 'error' );
258
- }
259
- } else {
260
- $message = __( "Error: Please Upload only CSV File", 'email-subscribers' );
261
- ES_Common::show_message( $message, 'error' );
262
- }
263
-
264
- } else {
265
- if( ! empty( $_FILES['file']['error'] ) ) {
266
- switch( $_FILES['file']['error'] ) {
267
- case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini
268
- $message = sprintf( __( 'The file you are trying to upload is larger than %s. Please upload a smaller file.', 'email-subscribers' ), esc_html( size_format( $max_upload_size ) ) );
269
- break;
270
- default: //a default error, just in case! :)
271
- $message = __( 'There was a problem with your upload.', 'email-subscribers' );
272
- break;
273
- }
274
  } else {
275
- $message = __( "Error: Please Upload File", 'email-subscribers' );
276
  }
277
-
278
- ES_Common::show_message( $message, 'error' );
279
  }
280
-
281
- } else {
282
- $message = __( "Error: Please Upload File", 'email-subscribers' );
283
- ES_Common::show_message( $message, 'error' );
284
  }
 
285
  }
286
 
287
- }
288
-
289
- /**
290
- * Method to whitelist CSV file type during upload
291
- *
292
- * @param string $allowed_file_types Allowed file types in import.
293
- *
294
- * @return string $allowed_file_types
295
- *
296
- * @since 4.4.6
297
- */
298
- public function whitelist_csv_file_type( $allowed_file_types = '' ) {
299
 
300
- $allowed_file_types = rtrim( $allowed_file_types ) . ' csv';
301
 
302
- return $allowed_file_types;
303
  }
304
-
305
  /**
306
  * Method to get max upload size
307
- *
308
- * @return int $max_upload_size
309
- *
310
  * @since 4.4.6
311
  */
312
  public function get_max_upload_size() {
12
  * @since 4.0.0
13
  */
14
  public function __construct() {
 
15
  }
16
 
17
  /**
20
  * @since 4.0,0
21
  *
22
  * @modify 4.3.1
23
+ *
24
  * @modfiy 4.4.4 Moved importing code section to maybe_start_import method.
25
  */
26
  public function import_callback() {
27
 
28
  require_once( ABSPATH . 'wp-admin/includes/upgrade.php' );
29
 
30
+ $submit = ig_es_get_post_data( 'submit' );
31
+ if ( $submit ) {
32
+ $import_contacts_nonce = ig_es_get_post_data( 'import_contacts' );
33
+ if ( ! isset( $_POST['import_contacts'] ) || ! wp_verify_nonce( sanitize_key( $import_contacts_nonce ), 'import-contacts' ) ) {
34
+ $message = __( "Sorry, you do not have permission to import contacts.", 'email-subscribers' );
35
+ ES_Common::show_message( $message, 'error' );
36
+ }
37
+
38
+ if ( isset( $_FILES["file"] ) ) {
39
+
40
+ $max_upload_size = $this->get_max_upload_size();
41
+ if ( is_uploaded_file( $_FILES["file"]["tmp_name"] ) ) {
42
+
43
+ $tmp_file = $_FILES["file"]["tmp_name"];
44
+ $file = $_FILES['file']['name'];
45
+
46
+ $ext = strtolower( substr( $file, strrpos( $file, "." ), ( strlen( $file ) - strrpos( $file, "." ) ) ) );
47
+
48
+ if ( $ext == ".csv" ) {
49
+ $file_size = $_FILES['file']['size'];
50
+
51
+ // Check if CSV file size is less than or equal to max upload size.
52
+ if( $file_size <= $max_upload_size ) {
53
+ if ( ! ini_get( "auto_detect_line_endings" ) ) {
54
+ ini_set( "auto_detect_line_endings", '1' );
55
+ }
56
+
57
+ $statuses = ES_Common::get_statuses_key_name_map();
58
+ $es_email_status = ig_es_get_post_data( 'es_email_status' );
59
+
60
+ $status = '';
61
+ if ( in_array( $es_email_status, array_keys( $statuses ) ) ) {
62
+ $status = $es_email_status;
63
+ }
64
+
65
+ if ( ! empty( $status ) ) {
66
+
67
+ $lists = ES()->lists_db->get_id_name_map();
68
+
69
+ $list_id = ig_es_get_post_data( 'list_id' );
70
+
71
+ if ( ! in_array( $list_id, array_keys( $lists ) ) ) {
72
+ $list_id = '';
73
+ }
74
+
75
+ if ( ! empty( $list_id ) ) {
76
+
77
+ $delimiter = $this->get_delimiter( $tmp_file );
78
+
79
+ $handle = fopen( $tmp_file, 'r' );
80
+
81
+ // Get Headers
82
+ $headers = array_map( 'trim', fgetcsv( $handle, 0, $delimiter ) );
83
+
84
+ $existing_contacts_email_id_map = ES()->contacts_db->get_email_id_map();
85
+
86
+ $existing_contacts = array();
87
+ if ( count( $existing_contacts_email_id_map ) > 0 ) {
88
+ $existing_contacts = array_keys( $existing_contacts_email_id_map );
89
+ $existing_contacts = array_map( 'strtolower', $existing_contacts );
90
+ }
91
+
92
+ $invalid_emails_count = $imported_subscribers_count = $existing_contacts_count = 0;
93
+ $emails = array();
94
+
95
+ $values = $place_holders = $contacts_data = array();
96
+ $current_date_time = ig_get_current_date_time();
97
+
98
+ $headers_column_count = count( $headers );
99
+ while ( ( $data = fgetcsv( $handle, 0, $delimiter ) ) !== false ) {
100
+
101
+ $data = array_map( 'trim', $data );
102
+ $data_column_count = count( $data );
103
+
104
+ // Verify if number of headers columns are equal to number of data columns.
105
+ if( $headers_column_count !== $data_column_count ) {
106
+ $invalid_emails_count ++;
107
+ continue;
108
+ }
109
+
110
+ $data = array_combine( $headers, $data );
111
+
112
+ $email = isset( $data['Email'] ) ? strtolower( sanitize_email( trim( $data['Email'] ) ) ) : '';
113
+
114
+ if ( empty( $email ) || ! filter_var( $email, FILTER_VALIDATE_EMAIL )) {
115
+ $invalid_emails_count ++;
116
+ continue;
117
+ }
118
+
119
+ if ( ! in_array( $email, $existing_contacts ) ) {
120
+
121
+ // Convert emoji characters to equivalent HTML entities to avoid WordPress sanitization error in SQL query while bulk inserting contacts.
122
+ $name = isset( $data['Name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field(trim( $data['Name'] ) ) ) : '';
123
+ $first_name = isset( $data['First Name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field( trim( $data['First Name'] ) ) ) : '';
124
+ $last_name = isset( $data['Last Name'] ) ? ES_Common::handle_emoji_characters( sanitize_text_field( trim( $data['Last Name'] ) ) ) : '';
125
+
126
+ // If we don't get the first_name & last_name, consider Name field.
127
+ // If name empty, get the name from Email
128
+ if ( empty( $first_name ) && empty( $last_name ) ) {
129
+
130
+ if ( empty( $name ) ) {
131
+ $name = ES_Common::get_name_from_email( $email );
132
+ }
133
+
134
+ $names = ES_Common::prepare_first_name_last_name( $name );
135
+ $first_name = sanitize_text_field( $names['first_name'] );
136
+ $last_name = sanitize_text_field( $names['last_name'] );
137
+ }
138
+
139
+ $guid = ES_Common::generate_guid();
140
+
141
+ $contacts_data[ $imported_subscribers_count ]['first_name'] = $first_name;
142
+ $contacts_data[ $imported_subscribers_count ]['last_name'] = $last_name;
143
+ $contacts_data[ $imported_subscribers_count ]['email'] = $email;
144
+ $contacts_data[ $imported_subscribers_count ]['source'] = 'import';
145
+ $contacts_data[ $imported_subscribers_count ]['status'] = 'verified';
146
+ $contacts_data[ $imported_subscribers_count ]['hash'] = $guid;
147
+ $contacts_data[ $imported_subscribers_count ]['created_at'] = $current_date_time;
148
+
149
+ $existing_contacts[] = $email;
150
+
151
+ $emails[] = $email;
152
+
153
+ $imported_subscribers_count ++;
154
+ } else {
155
+ $existing_contacts_count ++;
156
+ }
157
+ }
158
+
159
+ $message = '';
160
+ $response_status = 'error';
161
+ if ( count( $emails ) > 0 ) {
162
+
163
+ $response_status = 'success';
164
+
165
+ ES()->contacts_db->bulk_insert( $contacts_data );
166
+
167
+ $contact_ids = ES()->contacts_db->get_contact_ids_by_emails( $emails );
168
+ if ( count( $contact_ids ) > 0 ) {
169
+ ES()->lists_contacts_db->remove_contacts_from_lists( $contact_ids, $list_id );
170
+ ES()->lists_contacts_db->do_import_contacts_into_list( $list_id, $contact_ids, $status, 1, $current_date_time );
171
+ }
172
+
173
+ $message = sprintf( __( 'Total %d contacts have been imported successfully!', 'email-subscribers' ), $imported_subscribers_count );
174
+
175
+ }
176
+
177
+ if ( $existing_contacts_count > 0 ) {
178
+ $message .= " ";
179
+ $message .= sprintf( __( '%d contact(s) are already exists.', 'email-subscribers' ), $existing_contacts_count );
180
+ }
181
+
182
+ if ( $invalid_emails_count > 0 ) {
183
+ $message .= " ";
184
+ $message .= sprintf( __( '%d contact(s) are invalid.', 'email-subscribers' ), $invalid_emails_count );
185
+ }
186
+
187
+ fclose( $handle );
188
+
189
+ ES_Common::show_message( $message, $response_status );
190
+
191
+ } else {
192
+ $message = __( "Error: Please Select List", 'email-subscribers' );
193
+ ES_Common::show_message( $message, 'error' );
194
+ }
195
+ } else {
196
+ $message = __( "Error: Please select status", 'email-subscribers' );
197
+ ES_Common::show_message( $message, 'error' );
198
+ }
199
+ } else {
200
+ $message = sprintf( __( 'The file you are trying to upload is larger than %s. Please upload a smaller file.', 'email-subscribers' ), esc_html( size_format( $max_upload_size ) ) );
201
+ ES_Common::show_message( $message, 'error' );
202
+ }
203
+ } else {
204
+ $message = __( "Error: Please Upload only CSV File", 'email-subscribers' );
205
+ ES_Common::show_message( $message, 'error' );
206
+ }
207
+ } else {
208
+ if( ! empty( $_FILES['file']['error'] ) ) {
209
+ switch( $_FILES['file']['error'] ) {
210
+ case 1: //uploaded file exceeds the upload_max_filesize directive in php.ini
211
+ $message = sprintf( __( 'The file you are trying to upload is larger than %s. Please upload a smaller file.', 'email-subscribers' ), esc_html( size_format( $max_upload_size ) ) );
212
+ break;
213
+ default: //a default error, just in case! :)
214
+ $message = __( 'There was a problem with your upload.', 'email-subscribers' );
215
+ break;
216
+ }
217
+ } else {
218
+ $message = __( 'Error: Please Upload File', 'email-subscribers' );
219
+ }
220
+
221
+ ES_Common::show_message( $message, 'error' );
222
+ }
223
+ } else {
224
+ $message = __( "Error: Please Upload File", 'email-subscribers' );
225
+ ES_Common::show_message( $message, 'error' );
226
+ }
227
+ }
228
+
229
  $this->prepare_import_subscriber_form();
230
 
231
  }
306
 
307
  <div class="wrap max-w-full mt-1 font-sans">
308
  <header class="ml-12 wp-heading-inline">
309
+
310
+ <div class="mt-2">
311
+ <h2 class="text-2xl font-medium text-gray-800 sm:leading-9 sm:truncate">
312
+ <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate"> <a href="admin.php?page=es_subscribers"><?php _e( 'Audience', 'email-subscribers' ); ?> </a> </span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg> <?php _e('Import Contacts', 'email-subscribers'); ?>
313
  <?php
314
  ES_Common::prepare_main_header_navigation( $audience_tab_main_navigation );
315
  ?>
316
  </div>
317
  </h2>
318
+
319
  </header>
320
 
321
  <div class="ml-12 mr-8"><hr class="wp-header-end"></div>
323
  </div>
324
 
325
  <?php
326
+ }
327
 
328
  /**
329
+ * Get CSV file delimiter
330
+ *
331
+ * @param $file
332
+ * @param int $check_lines
333
+ *
334
+ * @return mixed
335
+ *
336
+ * @since 4.3.1
337
  */
338
+ public function get_delimiter( $file, $check_lines = 2 ) {
339
+
340
+ $file = new SplFileObject( $file );
341
+
342
+ $delimiters = array( ',', '\t', ';', '|', ':' );
343
+ $results = array();
344
+ $i = 0;
345
+ while ( $file->valid() && $i <= $check_lines ) {
346
+ $line = $file->fgets();
347
+ foreach ( $delimiters as $delimiter ) {
348
+ $regExp = '/[' . $delimiter . ']/';
349
+ $fields = preg_split( $regExp, $line );
350
+ if ( count( $fields ) > 1 ) {
351
+ if ( ! empty( $results[ $delimiter ] ) ) {
352
+ $results[ $delimiter ] ++;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
353
  } else {
354
+ $results[ $delimiter ] = 1;
355
  }
 
 
356
  }
 
 
 
 
357
  }
358
+ $i ++;
359
  }
360
 
361
+ if ( count( $results ) > 0 ) {
362
+
363
+ $results = array_keys( $results, max( $results ) );
364
+
365
+ return $results[0];
366
+ }
 
 
 
 
 
 
367
 
368
+ return ',';
369
 
 
370
  }
371
+
372
  /**
373
  * Method to get max upload size
374
+ *
375
+ * @return int $max_upload_size
376
+ *
377
  * @since 4.4.6
378
  */
379
  public function get_max_upload_size() {
lite/includes/classes/class-es-lists-table.php CHANGED
@@ -73,8 +73,8 @@ class ES_Lists_Table extends WP_List_Table {
73
  echo $this->edit_list( absint( $list ) );
74
  } else { ?>
75
 
76
- <h1 class=" wp-heading-inline"><span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate"><a href="admin.php?page=es_subscribers"><?php _e( 'Audience', 'email-subscribers' ); ?> </a>
77
- </span> > <?php _e('Lists', 'email-subscribers'); ?> <a href="admin.php?page=es_lists&action=new" class="pt-2 ig-es-title-button px-2 py-2 mx-2"><?php _e('Add New','email-subscribers'); ?></a></h1>
78
  <br>
79
 
80
  <div id="poststuff" class="es-items-lists es-lists-table">
@@ -249,10 +249,11 @@ class ES_Lists_Table extends WP_List_Table {
249
  <header class="ml-12 mr-8 wp-heading-inline">
250
  <div class="md:flex md:items-center md:justify-between justify-center">
251
  <div class="flex-1 min-w-0">
252
- <h1 class="text-xl leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
253
- <span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
254
- <a href="admin.php?page=es_subscribers"><?php _e('Audience ','email-subscribers'); ?></a></span> >
255
- <a href="admin.php?page=es_lists&action=manage-lists"><?php _e(' Lists ','email-subscribers'); ?></a> >
 
256
  <?php
257
  if ( $is_new ) {
258
  _e( 'Add New', 'email-subscribers' );
@@ -261,7 +262,7 @@ class ES_Lists_Table extends WP_List_Table {
261
  }
262
 
263
  ?>
264
- </h1>
265
  </div>
266
  </div>
267
  </header>
@@ -290,7 +291,7 @@ class ES_Lists_Table extends WP_List_Table {
290
  </div>
291
 
292
  <input type="hidden" name="submitted" value="submitted"/>
293
- <input type="submit" name="submit" id="submit" class="cursor-pointer ig-es-primary-button px-4 py-2 my-4 ml-6 mr-2" value="<?php if ( $is_new ) {
294
  _e( 'Save List', 'email-subscribers' );
295
  }
296
  else{
@@ -298,7 +299,7 @@ class ES_Lists_Table extends WP_List_Table {
298
  }
299
 
300
  ?>"/><!-- <?php submit_button(); ?> -->
301
- <a href="admin.php?page=es_lists&action=manage-lists" class="cursor-pointer 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 ">Cancel</a>
302
  </form>
303
  </div>
304
  </div>
73
  echo $this->edit_list( absint( $list ) );
74
  } else { ?>
75
 
76
+ <h1 class=" wp-heading-inline "><span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate"><a href="admin.php?page=es_subscribers"><?php _e( 'Audience', 'email-subscribers' ); ?> </a>
77
+ </span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg><span class="text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate"> <?php _e('Lists', 'email-subscribers'); ?></span> <a href="admin.php?page=es_lists&action=new" class="pt-2 ig-es-title-button px-2 py-2 mx-2"><?php _e('Add New','email-subscribers'); ?></a></h1>
78
  <br>
79
 
80
  <div id="poststuff" class="es-items-lists es-lists-table">
249
  <header class="ml-12 mr-8 wp-heading-inline">
250
  <div class="md:flex md:items-center md:justify-between justify-center">
251
  <div class="flex-1 min-w-0">
252
+ <h2 class="text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate">
253
+ <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate">
254
+ <a href="admin.php?page=es_subscribers"><?php _e('Audience ','email-subscribers'); ?></a></span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-3 h-3 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg>
255
+ <a class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate" href="admin.php?page=es_lists&action=manage-lists"><?php _e(' Lists ','email-subscribers'); ?></a> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-3 h-3 mt-1 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg>
256
+
257
  <?php
258
  if ( $is_new ) {
259
  _e( 'Add New', 'email-subscribers' );
262
  }
263
 
264
  ?>
265
+ </h2>
266
  </div>
267
  </div>
268
  </header>
291
  </div>
292
 
293
  <input type="hidden" name="submitted" value="submitted"/>
294
+ <input type="submit" name="submit" id="submit" class="cursor-pointer align-middle ig-es-primary-button px-4 py-2 my-4 ml-6 mr-2" value="<?php if ( $is_new ) {
295
  _e( 'Save List', 'email-subscribers' );
296
  }
297
  else{
299
  }
300
 
301
  ?>"/><!-- <?php submit_button(); ?> -->
302
+ <a href="admin.php?page=es_lists&action=manage-lists" 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 ">Cancel</a>
303
  </form>
304
  </div>
305
  </div>
lite/includes/classes/class-es-mailer.php CHANGED
@@ -131,12 +131,14 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
131
 
132
  if ( ! $this->limits_set ) {
133
 
134
- @set_time_limit( IG_ES_CRON_INTERVAL + 30 );
 
 
135
 
136
  // Set 95% of max_execution_time as a max limit. We can reduce it as well
137
  $max_time = (int) ( @ini_get( 'max_execution_time' ) * 0.95 );
138
- if ( $max_time == 0 || $max_time > IG_ES_CRON_INTERVAL ) {
139
- $max_time = (int) ( IG_ES_CRON_INTERVAL * 0.95 );
140
  }
141
 
142
  $this->time_limit = $this->time_start + $max_time;
@@ -557,6 +559,20 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
557
  $message_id = ! empty( $merge_tags['message_id'] ) ? $merge_tags['message_id'] : 0;
558
  $campaign_id = ! empty( $merge_tags['campaign_id'] ) ? $merge_tags['campaign_id'] : 0;
559
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
560
  $subject = $this->prepare_subject( $subject );
561
 
562
  $content = $this->prepare_content( $content, $merge_tags, $nl2br );
@@ -597,7 +613,7 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
597
 
598
  do_action( 'ig_es_before_message_send', $contact_id, $campaign_id, $message_id );
599
 
600
- $message = $this->build_message( $subject, $content, $email, $merge_tags, $nl2br );
601
 
602
  //object | WP_Error
603
  $send_response = $this->mailer->send( $message );
@@ -633,17 +649,36 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
633
  * @param $body
634
  * @param $email
635
  * @param array $merge_tags
 
636
  *
637
  * @return ES_Message
638
  *
639
  * @since 4.3.2
 
 
640
  */
641
- public function build_message( $subject, $body, $email, $merge_tags = array(), $nl2br = false ) {
642
 
643
  $message = new ES_Message();
644
 
645
- $sender_name = $this->get_from_name();
646
- $sender_email = $this->get_from_email();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
647
 
648
  $subject = html_entity_decode( $subject, ENT_QUOTES, get_bloginfo( 'charset' ) );
649
 
@@ -853,7 +888,7 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
853
 
854
  $subscribe_link = $this->get_subscribe_link( $link_data );
855
  $unsubscribe_link = $this->get_unsubscribe_link( $link_data );
856
-
857
  $content = str_replace( "{{NAME}}", $name, $content );
858
  $content = str_replace( "{{FIRSTNAME}}", $first_name, $content );
859
  $content = str_replace( "{{LASTNAME}}", $last_name, $content );
@@ -1047,7 +1082,7 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
1047
  public function can_track_clicks( $contact_id = 0, $campaign_id = 0 ) {
1048
  $is_track_clicks = false;
1049
 
1050
- return apply_filters( 'ig_es_track_clicks', $is_track_clicks, $contact_id, $campaign_id );
1051
  }
1052
 
1053
  /**
@@ -1066,7 +1101,7 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
1066
 
1067
  $is_track_email_opens = get_option( 'ig_es_track_email_opens', 'yes' );
1068
 
1069
- $is_track_email_opens = apply_filters( 'ig_es_track_open', $is_track_email_opens, $contact_id, $campaign_id );
1070
 
1071
  if ( 'yes' === $is_track_email_opens ) {
1072
  return true;
@@ -1258,4 +1293,4 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
1258
  return $max_count;
1259
  }
1260
  }
1261
- }
131
 
132
  if ( ! $this->limits_set ) {
133
 
134
+ $cron_interval = ES()->cron->get_cron_interval();
135
+
136
+ @set_time_limit( $cron_interval );
137
 
138
  // Set 95% of max_execution_time as a max limit. We can reduce it as well
139
  $max_time = (int) ( @ini_get( 'max_execution_time' ) * 0.95 );
140
+ if ( $max_time == 0 || $max_time > $cron_interval ) {
141
+ $max_time = (int) ( $cron_interval * 0.95 );
142
  }
143
 
144
  $this->time_limit = $this->time_start + $max_time;
559
  $message_id = ! empty( $merge_tags['message_id'] ) ? $merge_tags['message_id'] : 0;
560
  $campaign_id = ! empty( $merge_tags['campaign_id'] ) ? $merge_tags['campaign_id'] : 0;
561
 
562
+ $sender_data = array();
563
+ if( ! empty( $campaign_id ) ) {
564
+ $campaign = ES()->campaigns_db->get( $campaign_id );
565
+ if( ! empty( $campaign ) ) {
566
+ $campaign_type = $campaign['type'];
567
+ if( 'newsletter' === $campaign_type ) {
568
+ $from_name = ! empty( $campaign['from_name'] ) ? $campaign['from_name'] : '';
569
+ $from_email = ! empty( $campaign['from_email'] ) ? $campaign['from_email'] : '';
570
+ $sender_data['from_name'] = $from_name;
571
+ $sender_data['from_email'] = $from_email;
572
+ }
573
+ }
574
+ }
575
+
576
  $subject = $this->prepare_subject( $subject );
577
 
578
  $content = $this->prepare_content( $content, $merge_tags, $nl2br );
613
 
614
  do_action( 'ig_es_before_message_send', $contact_id, $campaign_id, $message_id );
615
 
616
+ $message = $this->build_message( $subject, $content, $email, $merge_tags, $nl2br, $sender_data );
617
 
618
  //object | WP_Error
619
  $send_response = $this->mailer->send( $message );
649
  * @param $body
650
  * @param $email
651
  * @param array $merge_tags
652
+ * @param array $sender_data
653
  *
654
  * @return ES_Message
655
  *
656
  * @since 4.3.2
657
+ *
658
+ * @since 4.4.7 Added sender data.
659
  */
660
+ public function build_message( $subject, $body, $email, $merge_tags = array(), $nl2br = false, $sender_data = array() ) {
661
 
662
  $message = new ES_Message();
663
 
664
+ $sender_name = '';
665
+ $sender_email = '';
666
+ // If sender data is passed .i.g. set in the campaign then use it.
667
+ if( ! empty( $sender_data ) ) {
668
+ $sender_name = ! empty( $sender_data['from_name'] ) ? $sender_data['from_name'] : '';
669
+ $sender_email = ! empty( $sender_data['from_email'] ) ? $sender_data['from_email'] : '';
670
+ }
671
+
672
+ // If sender name is not passed then fetch it from ES settings.
673
+ if( empty( $sender_name ) ) {
674
+ $sender_name = $this->get_from_name();
675
+ }
676
+
677
+ // If sender email is not passed then fetch it from ES settings.
678
+ if( empty( $sender_email ) ) {
679
+ $sender_email = $this->get_from_email();
680
+ }
681
+
682
 
683
  $subject = html_entity_decode( $subject, ENT_QUOTES, get_bloginfo( 'charset' ) );
684
 
888
 
889
  $subscribe_link = $this->get_subscribe_link( $link_data );
890
  $unsubscribe_link = $this->get_unsubscribe_link( $link_data );
891
+
892
  $content = str_replace( "{{NAME}}", $name, $content );
893
  $content = str_replace( "{{FIRSTNAME}}", $first_name, $content );
894
  $content = str_replace( "{{LASTNAME}}", $last_name, $content );
1082
  public function can_track_clicks( $contact_id = 0, $campaign_id = 0 ) {
1083
  $is_track_clicks = false;
1084
 
1085
+ return apply_filters( 'ig_es_track_clicks', $is_track_clicks, $contact_id, $campaign_id, $this->link_data );
1086
  }
1087
 
1088
  /**
1101
 
1102
  $is_track_email_opens = get_option( 'ig_es_track_email_opens', 'yes' );
1103
 
1104
+ $is_track_email_opens = apply_filters( 'ig_es_track_open', $is_track_email_opens, $contact_id, $campaign_id, $this->link_data );
1105
 
1106
  if ( 'yes' === $is_track_email_opens ) {
1107
  return true;
1293
  return $max_count;
1294
  }
1295
  }
1296
+ }
lite/includes/classes/class-es-newsletters.php CHANGED
@@ -22,72 +22,140 @@ class ES_Newsletters {
22
  // class constructor
23
  public function __construct() {
24
  add_filter( 'ig_es_refresh_newsletter_content', array( $this, 'refresh_newsletter_content' ), 10, 2 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
25
  }
26
 
27
  public static function set_screen( $status, $option, $value ) {
28
  return $value;
29
  }
30
 
31
- public function es_newsletters_settings_callback() {
32
-
 
 
 
 
33
 
34
- $submitted = ig_es_get_request_data( 'submitted' );
35
- $preview = ig_es_get_request_data( 'es_broadcast_preview' );
36
  $broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
37
- if ( 'preview' !== $preview ) {
38
- if ( 'submitted' === $submitted ) {
39
-
40
- // $email_sent_type = __('Active', 'email-subscribers');
41
- $list_id = ! empty( $broadcast_data['list_ids'] ) ? $broadcast_data['list_ids'] : '';
42
- $template_id = ! empty( $broadcast_data['template_id'] ) ? $broadcast_data['template_id'] : '';
43
- $subject = ! empty( $broadcast_data['subject'] ) ? $broadcast_data['subject'] : '';
44
- // $template_id = ig_es_get_request_data( 'ig_es_broadcast_base_template_id' );
45
- if ( empty( $broadcast_data['body'] ) ) {
46
- // if ( empty( $template_id) ) {
47
- $message = __( 'Please add message body or select template', 'email-subscribers' );
48
- ES_Common::show_message( $message, 'error' );
49
- } elseif ( empty( $list_id ) ) {
50
- $message = __( 'Please select list.', 'email-subscribers' );
51
- ES_Common::show_message( $message, 'error' );
52
- } elseif ( empty( $subject ) ) {
53
- $message = __( 'Please add the subject', 'email-subscribers' );
54
- ES_Common::show_message( $message, 'error' );
55
- } else {
56
- $broadcast_data['base_template_id'] = $template_id;
57
- $broadcast_data['list_ids'] = $list_id;
58
- $broadcast_data['status'] = 1;
59
- $meta = ! empty( $broadcast_data['meta'] ) ? $broadcast_data['meta'] : array();
60
- $meta['pre_header'] = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
61
- $broadcast_data['meta'] = maybe_serialize( $meta );
62
- self::es_send_email_callback( $broadcast_data );
63
-
64
- $reports_url = admin_url( 'admin.php?page=es_reports' );
65
- $message = __( sprintf( 'A new broadcast has been created successfully! Contacts from selected list will be notified within an hour. Want to notify now? <a href="%s" target="_blank">Click here</a>', $reports_url ), 'email-subscribers' );
66
-
67
- ES_Common::show_message( $message, 'success' );
68
 
69
- do_action( 'ig_es_broadcast_created' );
70
- $broadcast_data = array();
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
71
  }
72
 
 
 
 
 
73
  }
74
 
75
- $this->prepare_newsletter_settings_form( $broadcast_data );
76
- } elseif ( 'preview' === $preview ) {
77
- // $broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
78
- if ( empty( $broadcast_data['body'] ) ) {
79
- $message = __( 'Please add message content', 'email-subscribers' );
80
- ES_Common::show_message( $message, 'error' );
81
- $this->prepare_newsletter_settings_form( $broadcast_data );
82
- } else {
83
- //content validation
84
- $template_data['content'] = ! empty( $broadcast_data['body'] ) ? $broadcast_data['body'] : '';
85
- $template_data['template_id'] = ! empty( $broadcast_data['template_id'] ) ? $broadcast_data['template_id'] : '';
86
- $this->es_broadcast_preview_callback( $template_data );
87
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
88
  }
 
89
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
90
  }
 
 
91
  }
92
 
93
  /**
@@ -97,87 +165,331 @@ class ES_Newsletters {
97
  *
98
  * @since 4.4.2 Added $broadcast_data param
99
  */
100
- public function prepare_newsletter_settings_form( $broadcast_data = array() ) {
101
  $newsletter_data = array();
102
- $templates = ES_Common::prepare_templates_dropdown_options( 'newsletter' );
103
- $lists = ES_Common::prepare_list_dropdown_options();
104
- $from_email = ES_Common::get_ig_option( 'from_email' );
105
 
106
- $broadcast_name = ! empty( $broadcast_data['name'] ) ? $broadcast_data['name'] : '';
 
 
 
 
 
 
 
107
  $broadcast_email = ! empty( $broadcast_data['from_email'] ) ? $broadcast_data['from_email'] : $from_email;
108
  $broadcast_subject = ! empty( $broadcast_data['subject'] ) ? $broadcast_data['subject'] : '';
109
  $broadcast_pre_header = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
110
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
111
  ?>
112
 
113
- <div class="wrap">
114
- <h2 class="wp-heading-inline"><?php _e( 'Campaigns > Broadcast', 'email-subscribers' ); ?>
115
- <a href="admin.php?page=es_campaigns" class="page-title-action"><?php _e( 'Campaigns', 'email-subscribers' ) ?></a>
116
- <a href="edit.php?post_type=es_template" class="page-title-action es-imp-button"><?php _e( 'Manage Templates', 'email-subscribers' ) ?></a>
117
- </h2>
118
- <div class="es-form" style="width: 100%;">
119
- <form method="post" action="#">
120
- <div class="es_newsletters_settings_wrapper">
121
- <div class="es_campaign_name_wrapper ">
122
- <input placeholder="Add Broadcast name" type="text" class="es_newsletter_name" name="broadcast_data[name]" value="<?php echo esc_attr( $broadcast_name ); ?>">
123
- <input id="ig_es_campaign_submit_button" class="es_primary_btn" type="submit" name="submit" value="Send Broadcast">
124
- <input type="hidden" name="submitted" value="submitted">
125
- </div>
126
- <div class="es_settings_left_pan">
127
- <div class="es_settings_field">
128
- <label><?php _e( 'From Email', 'email-subscribers' ) ?><br/><input type="email" name="broadcast_data[from_email]" value="<?php echo esc_attr( $broadcast_email ); ?>"/></label>
129
- </div>
130
- <div class="es_settings_field">
131
- <label><?php _e( 'Design template', 'email-subscribers' ) ?><br/><select name="broadcast_data[template_id]" id="base_template_id"><?php echo $templates ?></select></label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
132
  </div>
133
- <div class="es_settings_field"><label><?php _e( 'Subject', 'email-subscribers' ) ?>
134
- <spam class="required">*</spam>
135
- <br/><input type="text" id="ig_es_broadcast_subject" name="broadcast_data[subject]" placeholder="" value="<?php echo esc_attr( $broadcast_subject ); ?>"/></label></div>
136
- <!-- <div class="es_settings_field"><label><?php _e( 'Pre Header', 'email-subscribers' ) ?><br/><input placeholder="<?php _e( 'Add Pre header', 'email-subscribers' ); ?>" type="text" name="broadcast_data[pre_header]" value="<?php echo esc_attr( $broadcast_pre_header ); ?>"/></label></div> -->
137
- <div class="es_settings_field">
138
- <label><?php _e( 'Body', 'email-subscribers' ); ?></label>
139
- <?php
140
- $body = ! empty( $broadcast_data['body'] ) ? $broadcast_data['body'] : '';
141
- $editor_args = array(
142
- 'textarea_name' => 'broadcast_data[body]',
143
- 'textarea_rows' => 40,
144
- 'editor_class' => 'wp-editor-content',
145
- 'media_buttons' => true,
146
- 'tinymce' => true,
147
- 'quicktags' => true,
148
- 'editor_class' => 'wp-editor-boradcast'
149
- );
150
- wp_editor( $body, 'edit-es-boradcast-body', $editor_args ); ?>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
151
  </div>
152
- <?php do_action( 'ig_es_after_broadcast_left_pan_settings' ); ?>
153
  </div>
154
- <div class="es_settings_right_pan">
155
- <div class="es_settings_field">
156
- <label><?php _e( 'Recipients', 'email-subscribers' ) ?><br/><select name="broadcast_data[list_ids]" id="ig_es_broadcast_list_ids"><?php echo $lists ?></select></label>
157
- <span class="helper" id="ig_es_total_contacts"></span>
158
- </div>
159
- <hr>
160
- <div class="es_settings_field">
161
- <label>
162
- <input class="es_secondary_btn" type="submit" id="ig_es_preview_broadcast" value="<?php _e( 'Preview this email in browser', 'email-subscribers' ) ?>">
163
- <input type="hidden" name="es_broadcast_preview" id="es_broadcast_preview">
164
- </label>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
165
 
166
  </div>
167
- <?php do_action( 'ig_es_after_broadcast_right_pan_settings' ); ?>
168
  </div>
169
-
170
  </div>
171
- </form>
172
- </div>
173
- <div clas="es-preview" style="float: right;width: 19%;">
174
- <div class="es-templ-img"></div>
175
- </div>
176
  </div>
177
 
178
  <?php
179
-
180
-
181
  }
182
 
183
  public static function es_send_email_callback( $data ) {
@@ -187,22 +499,25 @@ class ES_Newsletters {
187
  $title = get_the_title( $data['base_template_id'] );
188
 
189
  $data['type'] = 'newsletter';
190
- $data['name'] = ! empty( $data['name'] ) ? $data['name'] : $data['subject'];
191
  $data['slug'] = sanitize_title( sanitize_text_field( $data['name'] ) );
192
 
193
  $data = apply_filters( 'ig_es_broadcast_data', $data );
194
 
195
  if ( ! empty( $data['body'] ) ) {
196
 
197
- $campaign_id = ES()->campaigns_db->save_campaign( $data );
 
 
198
 
199
- $data['body'] = ES_Common::es_process_template_body( $data['body'], $data['base_template_id'], $campaign_id );
200
 
201
- $subscribers = ES()->contacts_db->get_active_contacts_by_list_id( $list_id );
 
202
 
203
- if ( ! empty( $subscribers ) && count( $subscribers ) > 0 ) {
204
- $guid = ES_Common::generate_guid( 6 );
205
- $data = array(
206
  'hash' => $guid,
207
  'campaign_id' => $campaign_id,
208
  'subject' => $data['subject'],
@@ -216,14 +531,28 @@ class ES_Newsletters {
216
  'meta' => maybe_serialize( array( 'type' => 'newsletter' ) )
217
  );
218
 
219
- $last_report_id = ES_DB_Mailing_Queue::add_notification( $data );
220
-
221
- $delivery_data = array();
222
- $delivery_data['hash'] = $guid;
223
- $delivery_data['subscribers'] = $subscribers;
224
- $delivery_data['campaign_id'] = $campaign_id;
225
- $delivery_data['mailing_queue_id'] = $last_report_id;
226
- ES_DB_Sending_Queue::do_batch_insert( $delivery_data );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
227
  }
228
  }
229
 
@@ -252,16 +581,39 @@ class ES_Newsletters {
252
  public function es_broadcast_preview_callback( $template_data ) {
253
 
254
  $template_id = $template_data['template_id'];
 
255
  if ( ! empty( $template_data['content'] ) ) {
256
  $current_user = wp_get_current_user();
257
  $username = $current_user->user_login;
258
  $useremail = $current_user->user_email;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
259
 
260
  $es_template_body = $template_data['content'];
261
 
262
- $es_template_body = ES_Common::es_process_template_body( $es_template_body, $template_id );
263
  $es_template_body = str_replace( '{{NAME}}', $username, $es_template_body );
264
  $es_template_body = str_replace( '{{EMAIL}}', $useremail, $es_template_body );
 
 
265
 
266
  if ( has_post_thumbnail( $template_id ) ) {
267
  $image_array = wp_get_attachment_image_src( get_post_thumbnail_id( $template_id ), 'full' );
@@ -272,42 +624,253 @@ class ES_Newsletters {
272
 
273
  $html = '';
274
  $html .= '<style type="text/css">
275
- .es-sidebar {
276
- width: 23%;
277
- background-color: rgb(230, 230, 230);
278
- padding:15px;
279
- border-right: 1px solid #bdbdbd;
280
- }
281
- .es-preview {
282
- float: left;
283
- padding:15px;
284
- width: 70%;
285
- background-color:#FFF;
286
- font-size:16px;
287
- }
288
- </style>
289
- <div class="wrap">
290
- <div class="tool-box">
291
- <div class="es-main" style="display:flex;">
292
- <div class="es-sidebar">
293
- <h2 style="margin-bottom:1em;">
294
- Template Preview <a class="add-new-h2" target="_blank" href="' . admin_url() . 'admin.php?page=es-general-information">Help</a>
295
- </h2>
296
- <p>
297
- This is how your email may look.<br><br>Note: Different email services (like gmail, yahoo etc) display email content differently. So there could be a slight variation on how your customer will view the email content. </p>
298
- </div>
299
- <div class="es-preview">' . $es_template_body . '</div>
300
- <div style="clear:both;"></div>
301
- </div>
302
- <div style="clear:both;"></div>
303
- </div>
304
- </div>';
305
  echo apply_filters( 'the_content', $html );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
306
  } else {
307
- echo 'Please publish it or save it as a draft';
308
  }
309
 
310
  }
311
 
 
 
 
 
 
 
 
 
312
 
313
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
22
  // class constructor
23
  public function __construct() {
24
  add_filter( 'ig_es_refresh_newsletter_content', array( $this, 'refresh_newsletter_content' ), 10, 2 );
25
+
26
+ // Ajax handler for drafting broadcast
27
+ add_action( 'wp_ajax_ig_es_draft_broadcast', array( $this, 'draft_broadcast' ) );
28
+
29
+ // Ajax handler for broadcast preview
30
+ add_action( 'wp_ajax_ig_es_preview_broadcast', array( $this, 'preview_broadcast' ) );
31
+
32
+ add_action( 'wp_ajax_ig_es_trigger_broadcast_processing', array( $this, 'trigger_broadcast_processing' ) );
33
+
34
+ add_action( 'admin_init', array( $this, 'process_broadcast_submission' ) );
35
+
36
+ // Add tracking fields data
37
+ add_filter( 'ig_es_broadcast_data', array( $this, 'add_tracking_fields_data' ) );
38
+
39
+ if ( ! ES()->is_pro() ) {
40
+ //Add scheduler data
41
+ add_filter( 'ig_es_broadcast_data', array( &$this, 'es_add_broadcast_scheduler_data' ), 10, 2 );
42
+ }
43
+
44
+ // Check campaign wise open tracking is enabled.
45
+ add_filter( 'ig_es_track_open', array( $this, 'is_open_tracking_enabled' ), 10, 4 );
46
  }
47
 
48
  public static function set_screen( $status, $option, $value ) {
49
  return $value;
50
  }
51
 
52
+ /**
53
+ * Method to process broadcast submission.
54
+ *
55
+ * @since 4.4.7
56
+ */
57
+ public function process_broadcast_submission() {
58
 
59
+ global $wpdb;
60
+ $submitted = ig_es_get_request_data( 'ig_es_broadcast_submitted' );
61
  $broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
62
 
63
+ if ( 'submitted' === $submitted ) {
64
+ $list_id = ! empty( $broadcast_data['list_ids'] ) ? $broadcast_data['list_ids'] : '';
65
+ $template_id = ! empty( $broadcast_data['template_id'] ) ? $broadcast_data['template_id'] : '';
66
+ $subject = ! empty( $broadcast_data['subject'] ) ? $broadcast_data['subject'] : '';
67
+
68
+ // Check if user has added required data for creating broadcast.
69
+ if ( ! empty( $broadcast_data['subject'] ) && ! empty( $broadcast_data['body'] ) && ! empty( $list_id ) && ! empty( $subject ) ) {
70
+ $broadcast_data['base_template_id'] = $template_id;
71
+ $broadcast_data['list_ids'] = $list_id;
72
+ $broadcast_data['status'] = IG_ES_CAMPAIGN_STATUS_SCHEDULED;
73
+ $meta = ! empty( $broadcast_data['meta'] ) ? $broadcast_data['meta'] : array();
74
+ $meta['scheduling_option'] = ! empty( $broadcast_data['scheduling_option'] ) ? $broadcast_data['scheduling_option'] : 'schedule_now';
75
+ $meta['es_schedule_date'] = ! empty( $broadcast_data['es_schedule_date'] ) ? $broadcast_data['es_schedule_date'] : '';
76
+ $meta['es_schedule_time'] = ! empty( $broadcast_data['es_schedule_time'] ) ? $broadcast_data['es_schedule_time'] : '';
77
+ $meta['pre_header'] = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
78
+ $broadcast_data['meta'] = maybe_serialize( $meta );
79
+
80
+ self::es_send_email_callback( $broadcast_data );
81
+
82
+ if ( 'schedule_now' === $meta['scheduling_option'] ) {
83
+ ES()->init_action_scheduler_queue_runner( 'ig_es_trigger_broadcast_processing' );
84
  }
85
 
86
+ $campaign_url = admin_url( 'admin.php?page=es_campaigns&action=broadcast_created' );
87
+
88
+ wp_safe_redirect( $campaign_url );
89
+ exit();
90
  }
91
 
92
+ }
93
+ }
 
 
 
 
 
 
 
 
 
 
94
 
95
+ public function es_newsletters_settings_callback() {
96
+
97
+ global $wpdb;
98
+
99
+ $broadcast_id = ig_es_get_request_data( 'list' );
100
+ $submitted = ig_es_get_request_data( 'ig_es_broadcast_submitted' );
101
+ $broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
102
+ $message_data = array();
103
+
104
+ if ( 'submitted' === $submitted ) {
105
+
106
+ // If form is submitted then broadcast id is sent in $broadcast_data array.
107
+ $broadcast_id = ! empty( $broadcast_data['id'] ) ? $broadcast_data['id'] : '';
108
+ $list_id = ! empty( $broadcast_data['list_ids'] ) ? $broadcast_data['list_ids'] : '';
109
+ $template_id = ! empty( $broadcast_data['template_id'] ) ? $broadcast_data['template_id'] : '';
110
+ $subject = ! empty( $broadcast_data['subject'] ) ? $broadcast_data['subject'] : '';
111
+
112
+ if ( empty( $broadcast_data['subject'] ) ) {
113
+ $message = __( 'Please add a broadcast subject.', 'email-subscribers' );
114
+ $message_data = array(
115
+ 'message' => $message,
116
+ 'type' => 'error',
117
+ );
118
+ } elseif ( empty( $broadcast_data['body'] ) ) {
119
+ // if ( empty( $template_id) ) {
120
+ $message = __( 'Please add message body or select template', 'email-subscribers' );
121
+ $message_data = array(
122
+ 'message' => $message,
123
+ 'type' => 'error',
124
+ );
125
+ } elseif ( empty( $list_id ) ) {
126
+ $message = __( 'Please select list.', 'email-subscribers' );
127
+ $message_data = array(
128
+ 'message' => $message,
129
+ 'type' => 'error',
130
+ );
131
+ } elseif ( empty( $subject ) ) {
132
+ $message = __( 'Please add the subject', 'email-subscribers' );
133
+ $message_data = array(
134
+ 'message' => $message,
135
+ 'type' => 'error',
136
+ );
137
  }
138
+ }
139
 
140
+ if ( ! empty( $broadcast_id ) ) {
141
+
142
+ $broadcasts = $wpdb->get_results( "SELECT * FROM " . IG_CAMPAIGNS_TABLE . " WHERE id = $broadcast_id LIMIT 0, 1", ARRAY_A );
143
+ $broadcast = array_shift( $broadcasts );
144
+ $broadcast_data = array(
145
+ 'id' => $broadcast['id'],
146
+ 'name' => $broadcast['name'],
147
+ 'subject' => $broadcast['subject'],
148
+ 'from_name' => $broadcast['from_name'],
149
+ 'from_email' => $broadcast['from_email'],
150
+ 'body' => $broadcast['body'],
151
+ 'list_ids' => $broadcast['list_ids'],
152
+ 'template_id' => $broadcast['base_template_id'],
153
+ 'status' => $broadcast['status'],
154
+ 'meta' => maybe_unserialize( $broadcast['meta'] ),
155
+ );
156
  }
157
+
158
+ $this->prepare_newsletter_settings_form( $broadcast_data, $message_data );
159
  }
160
 
161
  /**
165
  *
166
  * @since 4.4.2 Added $broadcast_data param
167
  */
168
+ public function prepare_newsletter_settings_form( $broadcast_data = array(), $message_data = array() ) {
169
  $newsletter_data = array();
 
 
 
170
 
171
+ $template_id = ! empty( $broadcast_data['template_id'] ) ? $broadcast_data['template_id'] : '';
172
+ $list_ids = ! empty( $broadcast_data['list_ids'] ) ? $broadcast_data['list_ids'] : '';
173
+ $templates = ES_Common::prepare_templates_dropdown_options( 'newsletter', $template_id );
174
+ $lists = ES_Common::prepare_list_dropdown_options( $list_ids );
175
+ $from_email = ES_Common::get_ig_option( 'from_email' );
176
+
177
+ $broadcast_id = ! empty( $broadcast_data['id'] ) ? $broadcast_data['id'] : '';
178
+ $broadcast_from_name = ! empty( $broadcast_data['from_name'] ) ? $broadcast_data['from_name'] : get_option( 'ig_es_from_name' );
179
  $broadcast_email = ! empty( $broadcast_data['from_email'] ) ? $broadcast_data['from_email'] : $from_email;
180
  $broadcast_subject = ! empty( $broadcast_data['subject'] ) ? $broadcast_data['subject'] : '';
181
  $broadcast_pre_header = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
182
+ $broadcast_status = ! empty( $broadcast_data['status'] ) ? (int) $broadcast_data['status'] : 0;
183
+
184
+ // Flag to check if broadcast is not being send or already sent.
185
+ $is_broadcast_processing = false;
186
+
187
+ if ( ! empty( $broadcast_status ) ) {
188
+
189
+ $broadcast_allowed_edit_statuses = array(
190
+ IG_ES_CAMPAIGN_STATUS_ACTIVE,
191
+ IG_ES_CAMPAIGN_STATUS_IN_ACTIVE,
192
+ IG_ES_CAMPAIGN_STATUS_SCHEDULED
193
+ );
194
+
195
+ if ( ! in_array( $broadcast_status, $broadcast_allowed_edit_statuses ) ) {
196
+ $is_broadcast_processing = true;
197
+ }
198
+
199
+ $scheduling_disabled_message = '';
200
+ if ( IG_ES_CAMPAIGN_STATUS_QUEUED === $broadcast_status ) {
201
+ $scheduling_disabled_message = __( 'Scheduling is disabled for this broadcast since it is being sent.', 'email-subscribers' );
202
+ } elseif ( IG_ES_CAMPAIGN_STATUS_FINISHED === $broadcast_status ) {
203
+ $scheduling_disabled_message = __( 'Scheduling is disabled for this broadcast since it has been sent already.', 'email-subscribers' );
204
+ }
205
+
206
+ if ( ! empty( $scheduling_disabled_message ) ) {
207
+ $message_data = array(
208
+ 'message' => $scheduling_disabled_message,
209
+ 'type' => 'error',
210
+ );
211
+ }
212
+ }
213
+
214
  ?>
215
 
216
+ <div class="font-sans wrap">
217
+ <?php
218
+ if ( ! empty( $message_data ) ) {
219
+ $message = $message_data['message'];
220
+ $type = $message_data['type'];
221
+ ES_Common::show_message( $message, $type );
222
+ }
223
+ ?>
224
+ <form action="#" method="POST" id="broadcast_form">
225
+ <input type="hidden" id="broadcast_id" name="broadcast_data[id]" value="<?php echo esc_attr( $broadcast_id ); ?>"/>
226
+ <input type="hidden" id="broadcast_status" name="broadcast_data[status]" value="<?php echo esc_attr( $broadcast_status ); ?>"/>
227
+ <fieldset class="block es_fieldset">
228
+ <div class="mx-auto wp-heading-inline max-w-7xl sm:px-6 lg:px-3">
229
+ <header class="mx-auto max-w-7xl sm:px-6 lg:px-4">
230
+ <div class="pb-2 md:flex md:items-center md:justify-between">
231
+ <div class="flex md:3/5 lg:w-7/12 xl:w-3/5">
232
+ <div class="flex min-w-0 md:w-3/5 lg:w-1/2">
233
+ <span class="pt-1.5 text-base font-normal leading-7 sm:leading-9 sm:truncate text-indigo-600"><a href="admin.php?page=es_campaigns"><?php echo esc_html__( 'Campaigns', 'email-subscribers' ); ?></a></span>
234
+ <svg class="w-6 h-6 mx-1 mt-4" fill="currentColor" viewBox="0 0 24 24">
235
+ <path
236
+ fill-rule="evenodd"
237
+ d="M7.293 14.707a1 1 0 010-1.414L10.586 10 7.293 6.707a1 1 0 011.414-1.414l4 4a1 1 0 010 1.414l-4 4a1 1 0 01-1.414 0z"
238
+ clip-rule="evenodd"
239
+ ></path>
240
+ </svg>
241
+
242
+ <h2 class="pt-1 text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate"> <?php echo esc_html__( 'Broadcast', 'email-subscribers' ); ?>
243
+ </h2>
244
+ </div>
245
+ <div class="flex pt-3 md:-mr-8 lg:-mr-16 xl:mr-0 md:ml-8 lg:ml-16 xl:ml-20">
246
+ <ul id="progressbar" class="overflow-hidden">
247
+ <li id="content_menu" class="relative float-left px-1 pb-2 text-center list-none cursor-pointer active ">
248
+ <span class="mt-1 text-base font-medium tracking-wide text-gray-400 active"><?php echo esc_html__( 'Content', 'email-subscribers' ); ?></span>
249
+ </li>
250
+ <li id="summary_menu" class="relative float-left px-1 pb-2 ml-5 text-center list-none cursor-pointer hover:border-2 ">
251
+ <span class="mt-1 text-base font-medium tracking-wide text-gray-400"><?php echo esc_html__( 'Summary', 'email-subscribers' ); ?></span>
252
+ </li>
253
+ </ul>
254
+ </div>
255
+ </div>
256
+ <div class="flex mt-4 md:mt-0 md:ml-2 xl:ml-4">
257
+
258
+ <div id="broadcast_button" class="inline-block text-left ">
259
+ <button type="button"
260
+ class="inline-flex justify-center w-full py-2 text-sm font-medium leading-5 text-indigo-600 transition duration-150 ease-in-out border border-indigo-500 rounded-md cursor-pointer select-none next_btn hover:text-indigo-500 hover:shadow-md focus:outline-none focus:shadow-outline-indigo focus:shadow-lg hover:border-indigo-600 md:px-2 lg:px-3 xl:px-4"><?php echo esc_html__( 'Next',
261
+ 'email-subscribers' ); ?>
262
+ <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 20 20" class="w-3 h-3 my-1 ml-2 -mr-1 text-indigo-600">
263
+ <path d="M9 5l7 7-7 7"></path>
264
+ </svg>
265
+ </button>
266
+ </div>
267
+
268
+ <div id="broadcast_button1" class="flex hidden mt-4 md:mt-0 md:ml-2 xl:ml-4">
269
+ <span>
270
+ <div class="relative inline-block text-left">
271
+ <span>
272
+ <button type="button"
273
+ class="inline-flex justify-center w-full py-2 text-sm font-medium leading-5 text-indigo-600 transition duration-150 ease-in-out border border-indigo-500 rounded-md cursor-pointer select-none pre_btn md:px-1 lg:px-3 xl:px-4 hover:text-indigo-500 hover:border-indigo-600 hover:shadow-md focus:outline-none focus:shadow-outline-indigo focus:shadow-lg ">
274
+ <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" viewBox="0 0 20 20" class="w-3 h-3 my-1 mr-1"><path d="M15 19l-7-7 7-7"></path></svg><?php echo esc_html__( 'Previous', 'email-subscribers' ); ?>
275
+ </button>
276
+ </span>
277
+ </div>
278
+ </span>
279
+ </div>
280
+
281
+ <span class="md:ml-2 xl:ml-3">
282
+ <button type="button" class="inline-flex items-center w-full py-2 text-sm font-medium leading-5 text-gray-700 transition duration-150 ease-in-out bg-white border border-gray-300 rounded-md ig_es_draft_broadcast md:px-2 lg:px-3 xl:px-4 hover:bg-gray-50 focus:outline-none focus:shadow-outline focus:border-blue-300">
283
+ <?php echo esc_html__( 'Save Draft', 'email-subscribers' ); ?>
284
+ </button>
285
+ </span>
286
+
287
+ <span id="broadcast_button2" class="hidden md:ml-2 xl:ml-3">
288
+ <div class="relative inline-block text-left">
289
+ <span>
290
+ <?php
291
+ // If broadcast is sent or being sent then don't allow scheduling to conflicts.
292
+ if ( ! $is_broadcast_processing ) {
293
+ ?>
294
+ <button type="submit" id="ig_es_broadcast_submitted" name="ig_es_broadcast_submitted" class="inline-flex justify-center py-2 text-sm font-medium leading-5 text-white transition duration-150 ease-in-out bg-indigo-600 border border-transparent rounded-md md:px-2 lg:px-3 xl:px-4 hover:bg-indigo-500 hover:text-white"
295
+ value="submitted">
296
+ <?php if ( ES()->is_pro() ) {
297
+ echo esc_html__( 'Schedule', 'email-subscribers' );
298
+ } else {
299
+ echo esc_html__( 'Send', 'email-subscribers' );
300
+ }
301
+ }
302
+ ?>
303
+ </button>
304
+
305
+ </span>
306
+ </div>
307
+ </span>
308
+
309
+ </div>
310
  </div>
311
+ </header>
312
+ </div>
313
+ <div class="mx-auto max-w-7xl sm:px-8 lg:px-7">
314
+ <hr class="wp-header-end">
315
+ </div>
316
+ <div class="px-4 mx-auto my-4 es_broadcast_first max-w-7xl sm:px-6 lg:px-3">
317
+ <div class="sm:px-6 lg:px-4">
318
+ <div class="py-4 bg-white rounded-lg shadow-md md:flex">
319
+ <div class="broadcast_main_content pl-2">
320
+ <div class="block px-4 py-2">
321
+ <label for="ig_es_broadcast_subject" class="text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Subject', 'email-subscribers' ); ?></label>
322
+ <input id="ig_es_broadcast_subject" class="block w-full mt-1 text-sm leading-5 border-gray-400 rounded-md shadow-sm form-input" name="broadcast_data[subject]" value="<?php echo esc_attr( $broadcast_subject ); ?>"/>
323
+ </div>
324
+ <div class="block px-4 py-2">
325
+ <label for="from_name" class="text-sm font-medium leading-5 text-gray-700 "><?php echo esc_html__( 'From Name', 'email-subscribers' ); ?></label>
326
+ <input id="from_name" class="block w-full mt-1 text-sm leading-5 border-gray-400 rounded-md shadow-sm form-input" name="broadcast_data[from_name]" value="<?php echo esc_attr( $broadcast_from_name ); ?>"/>
327
+ </div>
328
+ <div class="block px-4 py-2">
329
+ <label for="from_email" class="text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'From Email', 'email-subscribers' ); ?></label>
330
+ <input id="from_email" class="block w-full mt-1 text-sm leading-5 border-gray-400 rounded-md shadow-sm form-input" name="broadcast_data[from_email]" value="<?php echo esc_attr( $broadcast_email ); ?>"/>
331
+ </div>
332
+
333
+ <div class="w-full px-4 pt-1 pb-2 mt-1">
334
+ <label for="message" class="text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Message', 'email-subscribers' ); ?></label>
335
+ <?php
336
+ $body = ! empty( $broadcast_data['body'] ) ? $broadcast_data['body'] : '';
337
+ $editor_args = array(
338
+ 'textarea_name' => 'broadcast_data[body]',
339
+ 'textarea_rows' => 40,
340
+ 'media_buttons' => true,
341
+ 'tinymce' => true,
342
+ 'quicktags' => true,
343
+ 'editor_class' => 'wp-editor-boradcast',
344
+ );
345
+ wp_editor( $body, 'edit-es-boradcast-body', $editor_args );
346
+ ?>
347
+ </div>
348
+ <?php do_action( 'ig_es_after_broadcast_left_pan_settings', $broadcast_data ); ?>
349
+ </div>
350
+ <div class="broadcast_side_content ml-2 mr-4 bg-gray-100 rounded-md">
351
+ <div class="block mt-0.5 mx-4 py-2">
352
+ <label for="template" class="text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Design Template', 'email-subscribers' ); ?></label>
353
+ <select class="block w-full h-8 mt-1 text-sm rounded-md cursor-pointer h-9 form-select" name="broadcast_data[template_id]" id="base_template_id">
354
+ <?php echo $templates ?>
355
+ </select>
356
+ </div>
357
+ <div class="block py-2 mx-4 ">
358
+ <label for="recipients" class="text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Recipients', 'email-subscribers' ); ?></label>
359
+ <select class="block w-full h-8 mt-1 text-sm rounded-md cursor-pointer h-9 form-select" name="broadcast_data[list_ids]" id="ig_es_broadcast_list_ids">
360
+ <?php echo $lists ?>
361
+ </select>
362
+
363
+ <div class="block mt-1">
364
+ <span id="ig_es_total_contacts"></span>
365
+ </div>
366
+ </div>
367
+
368
+ <div class="block py-2 mx-4">
369
+ <span class="block pt-2 text-sm font-medium leading-5 text-gray-700 border-t border-gray-200"><?php echo esc_html__( 'Preview', 'email-subscribers' ); ?></span>
370
+ <div class="py-2">
371
+ <input type="radio" name="preview_option" class="form-radio" id="preview_in_popup" value="preview_in_popup" checked>
372
+ <label for="preview_in_popup" class="text-sm font-normal text-gray-600"><?php echo esc_html__( 'Browser', 'email-subscribers' ); ?>
373
+ </label>
374
+ <br>
375
+ </div>
376
+
377
+ <!--
378
+ <label class=" text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Preview', 'email-subscribers' ); ?></label>
379
+ <button type="button" id="es_preview_template"
380
+ class="rounded-md border text-indigo-600 border-indigo-500 text-sm leading-5 font-medium transition ease-in-out duration-150 select-none inline-flex justify-center hover:text-indigo-500 hover:border-indigo-600 hover:shadow-md focus:outline-none focus:shadow-outline-indigo focus:shadow-lg px-3 py-1.5 mx-2">
381
+ <?php echo esc_html__( 'In Browser', 'email-subscribers' ); ?>
382
+ </button> -->
383
+
384
+ <img class="es-loader inline-flex align-middle" src="<?php echo ES_PLUGIN_URL ?>lite/public/images/spinner.gif" style="display:none;"/>
385
+
386
+ <div class="hidden" id="preview_template">
387
+ <div class="fixed top-0 left-0 z-50 flex items-center justify-center w-full h-full" style="background-color: rgba(0,0,0,.5);">
388
+ <div class="absolute h-auto p-4 ml-16 mr-4 text-left bg-white rounded shadow-xl z-80 md:max-w-5xl md:p-6 lg:p-8 ">
389
+ <h3 class="text-2xl text-center"><?php echo esc_html__( 'Template Preview', 'email-subscribers' ); ?></h3>
390
+ <p class="m-4 text-center"><?php echo esc_html__( 'There could be a slight variation on how your customer will view the email content.', 'email-subscribers' ); ?></p>
391
+ <div class="m-4 list-decimal broadcast_preview_container">
392
+ </div>
393
+ <div class="flex justify-center mt-8">
394
+ <button id="close_template" class="px-4 py-2 text-sm font-medium tracking-wide text-gray-700 border rounded select-none no-outline focus:outline-none focus:shadow-outline-red hover:border-red-400 active:shadow-lg "><?php echo esc_html__( 'Close', 'email-subscribers' ); ?></button>
395
+ </div>
396
+ </div>
397
+ </div>
398
+ </div>
399
+
400
+ <?php do_action( 'ig_es_after_broadcast_content_left_pan_settings', $broadcast_data ); ?>
401
+
402
+ <button id="es_test_email_btn" type="button"
403
+ class="rounded-md border text-indigo-600 border-indigo-500 text-sm leading-5 font-medium transition ease-in-out duration-150 select-none inline-flex justify-center hover:text-indigo-500 hover:border-indigo-600 hover:shadow-md focus:outline-none focus:shadow-outline-indigo focus:shadow-lg mt-1 px-4 py-2">
404
+ <span><?php echo esc_html__( 'Preview', 'email-subscribers' ); ?></span>
405
+ </button>
406
+ <img class="es-loader inline-flex align-middle pl-2 h-5 w-7" src="<?php echo ES_PLUGIN_URL ?>lite/admin/images/spinner-2x.gif" style="display:none;"/>
407
+ <br/><span class="es-send-success es-icon" style="display:none;"><?php _e( 'Email Sent Successfully ', 'email-subscribers' ) ?></span>
408
+ <br/><span class="es-send-error es-icon" style="display:none;"><?php _e( 'Something went wrong. Please try again later', 'email-subscribers' ) ?></span>
409
+ </div>
410
+ </div>
411
  </div>
 
412
  </div>
413
+ </fieldset>
414
+
415
+ <fieldset class="es_fieldset">
416
+
417
+ <div class="hidden px-4 mx-auto my-4 es_broadcast_second max-w-7xl sm:px-6 lg:px-3">
418
+ <?php
419
+ $inline_preview_data = $this->get_broadcast_inline_preview_data( $broadcast_data );
420
+ ?>
421
+ <div class="max-w-7xl sm:px-6 lg:px-4">
422
+ <div class="py-4 bg-white rounded-lg shadow md:flex">
423
+ <div class="broadcast_main_content pt-3 pl-2">
424
+ <div class="block pb-2 mx-4">
425
+ <span class="text-sm font-medium text-gray-500"><?php echo esc_html__( 'Email Content Preview', 'email-subscribers' ); ?></span>
426
+ </div>
427
+
428
+ <div class="block pb-2 mx-4 mt-4 inline_broadcast_preview_container">
429
+ <div class="block">
430
+ <span class="text-2xl font-normal text-gray-600 broadcast_preview_subject"><?php echo ! empty( $broadcast_data['subject'] ) ? esc_html( $broadcast_data['subject'] ) : ''; ?></span>
431
+ </div>
432
+ <div class="block mt-3">
433
+ <span class="text-sm font-bold text-gray-800 broadcast_preview_contact_name"><?php echo ! empty( $inline_preview_data['contact_name'] ) ? $inline_preview_data['contact_name'] : ''; ?></span>
434
+ <span class="pl-1 text-sm font-medium text-gray-700 broadcast_preview_contact_email"><?php echo ! empty( $inline_preview_data['contact_email'] ) ? "&lt;" . $inline_preview_data['contact_email'] . "&gt;" : ''; ?></span>
435
+ </div>
436
+ <div class="block mt-3 broadcast_preview_content">
437
+ <?php
438
+ if ( ! empty( $broadcast_data['body'] ) ) {
439
+ $template_data['content'] = ! empty( $broadcast_data['body'] ) ? $broadcast_data['body'] : '';
440
+ $template_data['template_id'] = ! empty( $broadcast_data['template_id'] ) ? $broadcast_data['template_id'] : '';
441
+ $tempate_html = '';
442
+ ob_start();
443
+ $this->es_broadcast_preview_callback( $template_data );
444
+ $tempate_html = ob_get_clean();
445
+ echo $tempate_html;
446
+ }
447
+ ?>
448
+ </div>
449
+ </div>
450
+
451
+ </div>
452
+
453
+ <div class="broadcast_side_content ml-2 mr-4 bg-gray-100 rounded-md">
454
+ <div id="ig_es_total_recipients" class="block mt-1.5 mx-4 py-2 border-b border-gray-200">
455
+
456
+ </div>
457
+
458
+ <?php do_action( 'ig_es_after_broadcast_right_pan_settings', $broadcast_data ); ?>
459
+
460
+ <div class="block w-full px-4 py-2">
461
+ <?php
462
+ $enable_open_tracking = ! empty( $broadcast_data['meta']['enable_open_tracking'] ) ? $broadcast_data['meta']['enable_open_tracking'] : get_option( 'ig_es_track_email_opens', 'yes' );
463
+ ?>
464
+ <div class="flex w-full pt-2 border-t border-gray-200">
465
+ <div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'Open Tracking', 'email-subscribers' ); ?>
466
+ </div>
467
+ <div>
468
+ <label for="enable_open_tracking" class="inline-flex items-center cursor-pointer ">
469
+ <span class="relative">
470
+ <input id="enable_open_tracking" type="checkbox" class="absolute w-0 h-0 opacity-0 es-check-toggle"
471
+ name="broadcast_data[meta][enable_open_tracking]" value="yes" <?php checked( $enable_open_tracking, 'yes' ); ?>/>
472
+ <span class="block w-8 h-5 bg-gray-300 rounded-full shadow-inner es-mail-toggle-line"></span>
473
+ <span class="absolute inset-y-0 left-0 block w-3 h-3 mt-1 ml-1 transition-all duration-300 ease-in-out bg-white rounded-full shadow es-mail-toggle-dot focus-within:shadow-outline"></span>
474
+ </span>
475
+ </label>
476
+ </div>
477
+ </div>
478
+ <?php do_action( 'ig_es_after_broadcast_tracking_options_settings', $broadcast_data ); ?>
479
+ </div>
480
+
481
+ <?php do_action( 'ig_es_broadcast_scheduling_options_settings', $broadcast_data ); ?>
482
+ </div>
483
 
484
  </div>
 
485
  </div>
 
486
  </div>
487
+
488
+ </fieldset>
489
+ </form>
 
 
490
  </div>
491
 
492
  <?php
 
 
493
  }
494
 
495
  public static function es_send_email_callback( $data ) {
499
  $title = get_the_title( $data['base_template_id'] );
500
 
501
  $data['type'] = 'newsletter';
502
+ $data['name'] = $data['subject'];
503
  $data['slug'] = sanitize_title( sanitize_text_field( $data['name'] ) );
504
 
505
  $data = apply_filters( 'ig_es_broadcast_data', $data );
506
 
507
  if ( ! empty( $data['body'] ) ) {
508
 
509
+ $campaign_id = ! empty( $data['id'] ) ? $data['id'] : 0;
510
+
511
+ if ( ! empty( $campaign_id ) ) {
512
 
513
+ ES()->campaigns_db->save_campaign( $data, $campaign_id );
514
 
515
+ $notification = ES_DB_Mailing_Queue::get_notification_by_campaign_id( $campaign_id );
516
+ $data['body'] = ES_Common::es_process_template_body( $data['body'], $data['base_template_id'], $campaign_id );
517
 
518
+ $subscribers = ES()->contacts_db->get_active_contacts_by_list_id( $list_id );
519
+ $guid = ES_Common::generate_guid( 6 );
520
+ $data = array(
521
  'hash' => $guid,
522
  'campaign_id' => $campaign_id,
523
  'subject' => $data['subject'],
531
  'meta' => maybe_serialize( array( 'type' => 'newsletter' ) )
532
  );
533
 
534
+ if ( empty( $notification ) ) {
535
+ $last_report_id = ES_DB_Mailing_Queue::add_notification( $data );
536
+ if ( ! empty( $subscribers ) && count( $subscribers ) > 0 ) {
537
+ $delivery_data = array();
538
+ $delivery_data['hash'] = $guid;
539
+ $delivery_data['subscribers'] = $subscribers;
540
+ $delivery_data['campaign_id'] = $campaign_id;
541
+ $delivery_data['mailing_queue_id'] = $last_report_id;
542
+ ES_DB_Sending_Queue::do_batch_insert( $delivery_data );
543
+ }
544
+ } else {
545
+ $notification_id = $notification['id'];
546
+ $notification_status = $notification['status'];
547
+ // Check if notification is not sending or already sent then only update the notification.
548
+ if ( ! in_array( $notification_status, array( 'Sending', 'Sent' ), true ) ) {
549
+ // Don't update this data.
550
+ $data['hash'] = $notification['hash'];
551
+ $data['campaign_id'] = $notification['campaign_id'];
552
+ $data['created_at'] = $notification['created_at'];
553
+ $notification = ES_DB_Mailing_Queue::update_notification( $notification_id, $data );
554
+ }
555
+ }
556
  }
557
  }
558
 
581
  public function es_broadcast_preview_callback( $template_data ) {
582
 
583
  $template_id = $template_data['template_id'];
584
+ $campaign_id = ! empty( $template_data['campaign_id'] ) ? $template_data['campaign_id'] : 0;
585
  if ( ! empty( $template_data['content'] ) ) {
586
  $current_user = wp_get_current_user();
587
  $username = $current_user->user_login;
588
  $useremail = $current_user->user_email;
589
+ $display_name = $current_user->display_name;
590
+
591
+ $contact_id = ES()->contacts_db->get_contact_id_by_email( $useremail );
592
+ $first_name = '';
593
+ $last_name = '';
594
+
595
+ // Use details from contacts data if present else fetch it from wp profile.
596
+ if ( ! empty( $contact_id ) ) {
597
+ $contact_data = ES()->contacts_db->get_by_id( $contact_id );
598
+ $first_name = $contact_data['first_name'];
599
+ $last_name = $contact_data['last_name'];
600
+ } elseif ( ! empty( $display_name ) ) {
601
+ $contact_details = explode( ' ', $display_name );
602
+ $first_name = $contact_details[0];
603
+ // Check if last name is set.
604
+ if ( ! empty( $contact_details[1] ) ) {
605
+ $last_name = $contact_details[1];
606
+ }
607
+ }
608
+ //$first_name =
609
 
610
  $es_template_body = $template_data['content'];
611
 
612
+ $es_template_body = ES_Common::es_process_template_body( $es_template_body, $template_id, $campaign_id );
613
  $es_template_body = str_replace( '{{NAME}}', $username, $es_template_body );
614
  $es_template_body = str_replace( '{{EMAIL}}', $useremail, $es_template_body );
615
+ $es_template_body = str_replace( '{{FIRSTNAME}}', $first_name, $es_template_body );
616
+ $es_template_body = str_replace( '{{LASTNAME}}', $last_name, $es_template_body );
617
 
618
  if ( has_post_thumbnail( $template_id ) ) {
619
  $image_array = wp_get_attachment_image_src( get_post_thumbnail_id( $template_id ), 'full' );
624
 
625
  $html = '';
626
  $html .= '<style type="text/css">
627
+ .es-preview {
628
+ background-color:#FFF;
629
+ font-size:16px;
630
+ }
631
+ </style>
632
+ <div class="wrap">
633
+ <div class="tool-box">
634
+ <div class="es-main" style="display:flex;">
635
+ <div class="es-preview broadcast-preview">' . $es_template_body . '</div>
636
+ <div style="clear:both;"></div>
637
+ </div>
638
+ <div style="clear:both;"></div>
639
+ </div>
640
+ </div>';
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
641
  echo apply_filters( 'the_content', $html );
642
+ }
643
+
644
+ }
645
+
646
+ /**
647
+ * Method to draft a broadcast
648
+ *
649
+ * @return $response Broadcast response.
650
+ *
651
+ * @since 4.4.7
652
+ */
653
+ public function draft_broadcast() {
654
+
655
+ check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
656
+
657
+ $response = array();
658
+
659
+ $broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
660
+
661
+ $broadcast_id = ! empty( $broadcast_data['id'] ) ? $broadcast_data['id'] : null;
662
+ $is_updating = ! empty( $broadcast_id ) ? true : false;
663
+ $list_id = ! empty( $broadcast_data['list_ids'] ) ? $broadcast_data['list_ids'] : '';
664
+ $template_id = ! empty( $broadcast_data['template_id'] ) ? $broadcast_data['template_id'] : '';
665
+ $subject = ! empty( $broadcast_data['subject'] ) ? $broadcast_data['subject'] : '';
666
+
667
+ $broadcast_data['base_template_id'] = $template_id;
668
+ $broadcast_data['list_ids'] = $list_id;
669
+ $broadcast_data['status'] = ! empty( $broadcast_data['status'] ) ? 1 : 0;
670
+ $meta = ! empty( $broadcast_data['meta'] ) ? $broadcast_data['meta'] : array();
671
+ $meta['pre_header'] = ! empty( $broadcast_data['pre_header'] ) ? $broadcast_data['pre_header'] : '';
672
+ $broadcast_data['meta'] = maybe_serialize( $meta );
673
+
674
+ $broadcast_data['type'] = 'newsletter';
675
+ $broadcast_data['name'] = $broadcast_data['subject'];
676
+ $broadcast_data['slug'] = sanitize_title( sanitize_text_field( $broadcast_data['name'] ) );
677
+
678
+ $broadcast_data = apply_filters( 'ig_es_broadcast_data', $broadcast_data );
679
+
680
+ $result = ES()->campaigns_db->save_campaign( $broadcast_data, $broadcast_id );
681
+
682
+ if ( ! empty( $result ) ) {
683
+ if ( ! $is_updating ) {
684
+ // In case of insert, result is broadcast id.
685
+ $response['broadcast_id'] = $result;
686
+ } else {
687
+ // In case of update, only update flag is returned.
688
+ $response['broadcast_id'] = $broadcast_id;
689
+ }
690
+ wp_send_json_success( $response );
691
  } else {
692
+ wp_send_json_error();
693
  }
694
 
695
  }
696
 
697
+ /**
698
+ * Method to get preview HTML for broadcast
699
+ *
700
+ * @return $response
701
+ *
702
+ * @since 4.4.7
703
+ */
704
+ public function preview_broadcast() {
705
 
706
+ check_ajax_referer( 'ig-es-admin-ajax-nonce', 'security' );
707
+
708
+ $response = array();
709
+
710
+ $preview_type = ig_es_get_request_data( 'preview_type' );
711
+ $broadcast_data = ig_es_get_request_data( 'broadcast_data', array(), false );
712
+
713
+ $template_data['content'] = ! empty( $broadcast_data['body'] ) ? $broadcast_data['body'] : '';
714
+ $template_data['template_id'] = ! empty( $broadcast_data['template_id'] ) ? $broadcast_data['template_id'] : '';
715
+ $template_data['campaign_id'] = ! empty( $broadcast_data['id'] ) ? $broadcast_data['id'] : 0;
716
+
717
+ $tempate_html = '';
718
+ ob_start();
719
+ $this->es_broadcast_preview_callback( $template_data );
720
+ $tempate_html = ob_get_clean();
721
+ $response['template_html'] = $tempate_html;
722
+
723
+ if ( 'inline' === $preview_type ) {
724
+ $inline_preview_data = $this->get_broadcast_inline_preview_data( $broadcast_data );
725
+ $response = array_merge( $response, $inline_preview_data );
726
+ }
727
+
728
+ if ( ! empty( $response ) ) {
729
+ wp_send_json_success( $response );
730
+ } else {
731
+ wp_send_json_error();
732
+ }
733
+
734
+ }
735
+
736
+ /**
737
+ * Method to get broadcast inline preview data.
738
+ *
739
+ * @param array $broadcast_data Broadcast data.
740
+ *
741
+ * @return array $preview_data
742
+ *
743
+ * @since 4.4.7
744
+ */
745
+ public function get_broadcast_inline_preview_data( $broadcast_data = array() ) {
746
+ $list_id = ! empty( $broadcast_data['list_ids'] ) ? $broadcast_data['list_ids'] : 0;
747
+ $preview_data = array();
748
+ $first_name = '';
749
+ $last_name = '';
750
+ $email = '';
751
+
752
+ if ( ! empty( $list_id ) ) {
753
+ $subscribed_contacts = ES()->lists_contacts_db->get_subscribed_contacts_from_list( $list_id );
754
+ if ( ! empty( $subscribed_contacts ) ) {
755
+ $subscribed_contact = array_shift( $subscribed_contacts );
756
+ $contact_id = ! empty( $subscribed_contact['contact_id'] ) ? $subscribed_contact['contact_id'] : 0;
757
+ if ( ! empty( $contact_id ) ) {
758
+ $subscriber_data = ES()->contacts_db->get_by_id( $contact_id );
759
+ if ( ! empty( $subscriber_data ) ) {
760
+ $first_name = ! empty( $subscriber_data['first_name'] ) ? $subscriber_data['first_name'] : '';
761
+ $last_name = ! empty( $subscriber_data['last_name'] ) ? $subscriber_data['first_name'] : '';
762
+ $email = ! empty( $subscriber_data['email'] ) ? $subscriber_data['email'] : '';
763
+ }
764
+ }
765
+ }
766
+ }
767
+
768
+ $preview_data['broadcast_subject'] = ! empty( $broadcast_data['subject'] ) ? esc_html( $broadcast_data['subject'] ) : '';
769
+ $preview_data['contact_name'] = esc_html( $first_name . ' ' . $last_name );
770
+ $preview_data['contact_email'] = esc_html( $email );
771
+
772
+ return $preview_data;
773
+ }
774
+
775
+ /**
776
+ * Method to trigger immediate processing of broadcast with "Send Now" option.
777
+ *
778
+ * @return void
779
+ *
780
+ * @since 4.4.7
781
+ */
782
+ public function trigger_broadcast_processing() {
783
+
784
+ // Start processing of broadcast which are scheduled for current date time.
785
+ do_action( 'ig_es_cron_worker' );
786
+ }
787
+
788
+ /**
789
+ * Function to add values of checkbox fields incase they are not checked.
790
+ *
791
+ * @param array $broadcast_data
792
+ *
793
+ * @return array $broadcast_data
794
+ *
795
+ * @since 4.4.7
796
+ *
797
+ */
798
+ public function add_tracking_fields_data( $broadcast_data = array() ) {
799
+
800
+ $broadcast_meta = ! empty( $broadcast_data['meta'] ) ? maybe_unserialize( $broadcast_data['meta'] ) : array();
801
+
802
+ if ( empty( $broadcast_meta['enable_open_tracking'] ) ) {
803
+ $broadcast_meta['enable_open_tracking'] = 'no';
804
+ }
805
+
806
+ $broadcast_data['meta'] = maybe_serialize( $broadcast_meta );
807
+
808
+ return $broadcast_data;
809
+ }
810
+
811
+ /**
812
+ * Add required broadcast schedule date/time data
813
+ *
814
+ * @param array $data
815
+ *
816
+ * @return array $data
817
+ *
818
+ * @since 4.4.7
819
+ */
820
+ public function es_add_broadcast_scheduler_data( $data ) {
821
+
822
+ $scheduling_option = ! empty( $data['scheduling_option'] ) ? $data['scheduling_option'] : 'schedule_now';
823
+
824
+ $schedule_str = '';
825
+
826
+ if ( 'schedule_now' === $scheduling_option ) {
827
+ // Get time without GMT offset, as we are adding later on.
828
+ $schedule_str = current_time( 'timestamp', false );
829
+ }
830
+
831
+ if ( ! empty( $schedule_str ) ) {
832
+ $gmt_offset_option = get_option( 'gmt_offset' );
833
+ $gmt_offset = ( ! empty( $gmt_offset_option ) ) ? $gmt_offset_option : 0;
834
+ $schedule_date = date( 'Y-m-d H:i:s', $schedule_str - ( $gmt_offset * HOUR_IN_SECONDS ) );
835
+
836
+ $data['start_at'] = $schedule_date;
837
+ $meta = ! empty( $data['meta'] ) ? maybe_unserialize( $data['meta'] ) : array();
838
+ $meta['type'] = 'one_time';
839
+ $meta['date'] = $schedule_date;
840
+ $data['meta'] = maybe_serialize( $meta );
841
+ }
842
+
843
+ return $data;
844
+ }
845
+
846
+ /**
847
+ * Method to check if open tracking is enabled broadcast wise.
848
+ *
849
+ * @param bool $is_track_email_opens Is open tracking enabled.
850
+ * @param int $contact_id Contact ID.
851
+ * @param int $campaign_id Campaign ID.
852
+ * @param array $link_data Link data.
853
+ *
854
+ * @return bool $is_track_email_opens Is open tracking enabled.
855
+ *
856
+ * @since 4.4.7
857
+ *
858
+ */
859
+ public function is_open_tracking_enabled( $is_track_email_opens, $contact_id, $campaign_id, $link_data ) {
860
+ if ( ! empty( $link_data ) ) {
861
+ $campaign_id = ! empty( $link_data['campaign_id'] ) ? $link_data['campaign_id'] : 0;
862
+ if ( ! empty( $campaign_id ) ) {
863
+ $campaign = ES()->campaigns_db->get( $campaign_id );
864
+ if ( ! empty( $campaign ) ) {
865
+ $campaign_type = $campaign['type'];
866
+ if ( 'newsletter' === $campaign_type ) {
867
+ $campaign_meta = maybe_unserialize( $campaign['meta'] );
868
+ $is_track_email_opens = ! empty( $campaign_meta['enable_open_tracking'] ) ? $campaign_meta['enable_open_tracking'] : $is_track_email_opens;
869
+ }
870
+ }
871
+ }
872
+ }
873
+
874
+ return $is_track_email_opens;
875
+ }
876
+ }
lite/includes/classes/class-es-old-widget.php CHANGED
@@ -28,10 +28,10 @@ class ES_Old_Widget extends WP_Widget {
28
 
29
  $name = strtolower( $display_name ) != 'no' ? 'yes' : '';
30
 
31
- $list = ES()->lists_db->get_list_by_name($subscribers_group);
32
- if(!empty($list)) {
33
- $list_id = $list['id'];
34
- }
35
 
36
  $data['name_visible'] = $name;
37
  $data['list_visible'] = 'no';
28
 
29
  $name = strtolower( $display_name ) != 'no' ? 'yes' : '';
30
 
31
+ $list = ES()->lists_db->get_list_by_name( $subscribers_group );
32
+ if ( ! empty( $list ) ) {
33
+ $list_id = $list['id'];
34
+ }
35
 
36
  $data['name_visible'] = $name;
37
  $data['list_visible'] = 'no';
lite/includes/classes/class-es-post-notifications.php CHANGED
@@ -257,8 +257,10 @@ class ES_Post_Notifications_Table {
257
  <header class="ml-12 mr-8 wp-heading-inline">
258
  <div class="sm:grid sm:grid-cols lg:grid lg:grid-cols-2 max-w-full">
259
  <div class="mt-2">
260
- <h2 class="text-xl font-medium text-gray-800 sm:leading-9 sm:truncate"><h1 class="text-xl leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate">
261
- <span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate"> <a href="admin.php?page=es_campaigns"><?php _e('Campaigns ','email-subscribers'); ?></a></span> > <?php echo $heading; ?>
 
 
262
  </h2>
263
  </div>
264
  <div class="py-2 md:mt-0">
@@ -267,7 +269,7 @@ class ES_Post_Notifications_Table {
267
  <?php if ( $action === 'edit' ) { ?>
268
  <a href="admin.php?page=es_notifications&action=new" class="ig-es-title-button px-4 py-2 mx-2"><?php _e( 'Add New', 'email-subscribers' ) ?></a>
269
  <?php } ?>
270
- <a href="edit.php?post_type=es_template" class="ig-es-imp-button mx-2 px-4 py-2"><?php _e( 'Manage Templates', 'email-subscribers' ) ?></a>
271
  </div>
272
  </div>
273
  </div>
@@ -363,7 +365,7 @@ class ES_Post_Notifications_Table {
363
  </tbody>
364
  </table>
365
  <div>
366
- <p class="submit"><input type="submit" name="submit" id="ig_es_campaign_post_notification_submit_button" class="cursor-pointer ig-es-primary-button px-4 py-2 ml-6 mr-2" value="<?php if ( $is_new ) {
367
  _e( 'Save Campaign', 'email-subscribers' );
368
  }
369
  else{
@@ -371,7 +373,7 @@ class ES_Post_Notifications_Table {
371
  }
372
 
373
  ?>"/>
374
- <a href="admin.php?page=es_campaigns" class="cursor-pointer 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 ">Cancel</a></p>
375
  </div>
376
 
377
  </form>
257
  <header class="ml-12 mr-8 wp-heading-inline">
258
  <div class="sm:grid sm:grid-cols lg:grid lg:grid-cols-2 max-w-full">
259
  <div class="mt-2">
260
+ <h2 class="text-2xl font-medium mt-2 text-gray-900 sm:leading-9 sm:truncate">
261
+ <span class="text-base font-normal leading-7 text-indigo-600 sm:leading-9 sm:truncate"> <a href="admin.php?page=es_campaigns"><?php _e('Campaigns ','email-subscribers'); ?></a></span> <svg fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" stroke="currentColor" viewBox="0 0 24 24" class="w-4 h-4 inline-block align-middle"><path d="M9 5l7 7-7 7"></path></svg>
262
+
263
+ <?php echo $heading; ?>
264
  </h2>
265
  </div>
266
  <div class="py-2 md:mt-0">
269
  <?php if ( $action === 'edit' ) { ?>
270
  <a href="admin.php?page=es_notifications&action=new" class="ig-es-title-button px-4 py-2 mx-2"><?php _e( 'Add New', 'email-subscribers' ) ?></a>
271
  <?php } ?>
272
+ <a href="edit.php?post_type=es_template" class="ig-es-imp-button px-4 py-2"><?php _e( 'Manage Templates', 'email-subscribers' ) ?></a>
273
  </div>
274
  </div>
275
  </div>
365
  </tbody>
366
  </table>
367
  <div>
368
+ <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 if ( $is_new ) {
369
  _e( 'Save Campaign', 'email-subscribers' );
370
  }
371
  else{
373
  }
374
 
375
  ?>"/>
376
+ <a href="admin.php?page=es_campaigns" 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 ">Cancel</a></p>
377
  </div>
378
 
379
  </form>
lite/includes/classes/class-es-queue.php CHANGED
@@ -595,7 +595,7 @@ if ( ! class_exists( 'ES_Queue' ) ) {
595
  */
596
  public function process_campaigns() {
597
 
598
-
599
  if ( ES()->cron->should_unlock() ) {
600
  ES()->cron->unlock();
601
  }
@@ -623,6 +623,16 @@ if ( ! class_exists( 'ES_Queue' ) ) {
623
  $campaign_id = isset( $notification['campaign_id'] ) ? $notification['campaign_id'] : 0;
624
 
625
  if ( ! is_null( $notification_guid ) ) {
 
 
 
 
 
 
 
 
 
 
626
  ES_DB_Mailing_Queue::update_sent_status( $notification_guid, 'Sending' );
627
 
628
  // Get subscribers from the sending_queue table based on fetched guid
@@ -655,6 +665,10 @@ if ( ! class_exists( 'ES_Queue' ) ) {
655
  if ( $total_remaining_emails == 0 ) {
656
  ES_DB_Mailing_Queue::update_sent_status( $notification_guid, 'Sent' );
657
 
 
 
 
 
658
  // Send Cron Email to admins
659
  ES()->mailer->send_cron_admin_email( $notification_guid );
660
  }
@@ -669,6 +683,7 @@ if ( ! class_exists( 'ES_Queue' ) ) {
669
  $response['status'] = 'SUCCESS';
670
  // update last cron run time
671
  update_option( 'ig_es_last_cron_run', time() );
 
672
  } else {
673
  $response['es_remaining_email_count'] = 0;
674
  $response['message'] = 'EMAILS_NOT_FOUND';
595
  */
596
  public function process_campaigns() {
597
 
598
+
599
  if ( ES()->cron->should_unlock() ) {
600
  ES()->cron->unlock();
601
  }
623
  $campaign_id = isset( $notification['campaign_id'] ) ? $notification['campaign_id'] : 0;
624
 
625
  if ( ! is_null( $notification_guid ) ) {
626
+
627
+ $campaign_type = '';
628
+ if( ! empty( $campaign_id ) ) {
629
+ $campaign_type = ES()->campaigns_db->get_campaign_type_by_id( $campaign_id );
630
+ }
631
+
632
+ if( 'newsletter' === $campaign_type ) {
633
+ ES()->campaigns_db->update_status( $campaign_id, IG_ES_CAMPAIGN_STATUS_QUEUED );
634
+ }
635
+
636
  ES_DB_Mailing_Queue::update_sent_status( $notification_guid, 'Sending' );
637
 
638
  // Get subscribers from the sending_queue table based on fetched guid
665
  if ( $total_remaining_emails == 0 ) {
666
  ES_DB_Mailing_Queue::update_sent_status( $notification_guid, 'Sent' );
667
 
668
+ if( 'newsletter' === $campaign_type ) {
669
+ ES()->campaigns_db->update_status( $campaign_id, IG_ES_CAMPAIGN_STATUS_FINISHED );
670
+ }
671
+
672
  // Send Cron Email to admins
673
  ES()->mailer->send_cron_admin_email( $notification_guid );
674
  }
683
  $response['status'] = 'SUCCESS';
684
  // update last cron run time
685
  update_option( 'ig_es_last_cron_run', time() );
686
+
687
  } else {
688
  $response['es_remaining_email_count'] = 0;
689
  $response['message'] = 'EMAILS_NOT_FOUND';
lite/includes/classes/class-es-reports-table.php CHANGED
@@ -21,6 +21,7 @@ class ES_Reports_Table extends WP_List_Table {
21
  'ajax' => false, //does this table support ajax?,
22
  'screen' => 'es_reports'
23
  ) );
 
24
  }
25
 
26
  public function es_reports_callback() {
@@ -33,12 +34,12 @@ class ES_Reports_Table extends WP_List_Table {
33
  ?>
34
 
35
  <div class="wrap">
36
- <h1 class="wp-heading-inline"><span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate"><?php _e( 'Reports', 'email-subscribers' ); ?></span></h1>
37
  <?php
38
  $emails_to_be_sent = ES_DB_Sending_Queue::get_total_emails_to_be_sent();
39
  if ( $emails_to_be_sent > 0 ) {
40
  $cron_url = ES()->cron->url( true );
41
- $content = sprintf( __( "<a href='%s' target='_blank' class='ig-es-imp-button px-4 py-2'>Send Queued Emails Now</a>", 'email-subscribers' ), $cron_url );
42
  } else {
43
  $content = sprintf( __( "<span class='ig-es-send-queue-emails button-disabled'>Send Queued Emails Now</span>", 'email-subscribers' ) );
44
  $content .= sprintf( __( "<br /><span class='es-helper'>No emails found in queue</span>", 'email-subscribers' ) );
@@ -516,4 +517,4 @@ class ES_Reports_Table extends WP_List_Table {
516
 
517
  return self::$instance;
518
  }
519
- }
21
  'ajax' => false, //does this table support ajax?,
22
  'screen' => 'es_reports'
23
  ) );
24
+
25
  }
26
 
27
  public function es_reports_callback() {
34
  ?>
35
 
36
  <div class="wrap">
37
+ <h1 class="wp-heading-inline"><span class="text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate"><?php _e( 'Reports', 'email-subscribers' ); ?></span></h1>
38
  <?php
39
  $emails_to_be_sent = ES_DB_Sending_Queue::get_total_emails_to_be_sent();
40
  if ( $emails_to_be_sent > 0 ) {
41
  $cron_url = ES()->cron->url( true );
42
+ $content = sprintf( __( "<a href='%s' class='px-4 py-2 ig-es-imp-button'>Send Queued Emails Now</a>", 'email-subscribers' ), $cron_url );
43
  } else {
44
  $content = sprintf( __( "<span class='ig-es-send-queue-emails button-disabled'>Send Queued Emails Now</span>", 'email-subscribers' ) );
45
  $content .= sprintf( __( "<br /><span class='es-helper'>No emails found in queue</span>", 'email-subscribers' ) );
517
 
518
  return self::$instance;
519
  }
520
+ }
lite/includes/classes/class-es-templates-table.php CHANGED
@@ -72,7 +72,7 @@ class ES_Templates_Table {
72
  {{EMAIL}} </p>
73
  <div id="post_digest">
74
  <span style="font-size: 0.8em; margin-left: 0.3em; padding: 2px; background: #e66060; color: #fff; border-radius: 2px; ">Pro</span>&nbsp;
75
- <a href="https://www.icegram.com/send-post-digest-using-email-subscribers-plugin/?utm_source=es&amp;utm_medium=in_app&amp;utm_campaign=view_post_digest_post" target="_blank"><?php _e( 'Available Keywords', 'email-subscribers' ); ?></a> <?php _e( 'for Post Digest:', 'email-subscribers' ); ?>
76
  {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}<div class="post_digest_block"> {{POSTDIGEST}} <br/><?php _e( 'Any keywords related Post Notification', 'email-subscribers' ); ?> <br/>{{/POSTDIGEST}} </div>
77
  </div>
78
  <?php
@@ -143,6 +143,25 @@ class ES_Templates_Table {
143
  $current_user = wp_get_current_user();
144
  $username = $current_user->user_login;
145
  $useremail = $current_user->user_email;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
146
 
147
  $es_template_body = $template['post_content'];
148
 
@@ -165,6 +184,8 @@ class ES_Templates_Table {
165
 
166
  $es_template_body = str_replace( '{{NAME}}', $username, $es_template_body );
167
  $es_template_body = str_replace( '{{EMAIL}}', $useremail, $es_template_body );
 
 
168
 
169
  if ( has_post_thumbnail( $template_id ) ) {
170
  $image_array = wp_get_attachment_image_src( get_post_thumbnail_id( $template_id ), 'full' );
72
  {{EMAIL}} </p>
73
  <div id="post_digest">
74
  <span style="font-size: 0.8em; margin-left: 0.3em; padding: 2px; background: #e66060; color: #fff; border-radius: 2px; ">Pro</span>&nbsp;
75
+ <a href="https://www.icegram.com/send-post-digest-using-email-subscribers-plugin/?utm_source=es&amp;utm_medium=in_app&amp;utm_campaign=view_post_digest_post" target="_blank"><?php _e( 'Available Keywords', 'email-subscribers' ); ?></a> <?php _e( 'for Post Digest:', 'email-subscribers' ); ?>
76
  {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}<div class="post_digest_block"> {{POSTDIGEST}} <br/><?php _e( 'Any keywords related Post Notification', 'email-subscribers' ); ?> <br/>{{/POSTDIGEST}} </div>
77
  </div>
78
  <?php
143
  $current_user = wp_get_current_user();
144
  $username = $current_user->user_login;
145
  $useremail = $current_user->user_email;
146
+ $display_name = $current_user->display_name;
147
+
148
+ $contact_id = ES()->contacts_db->get_contact_id_by_email( $useremail );
149
+ $first_name = '';
150
+ $last_name = '';
151
+
152
+ // Use details from contacts data if present else fetch it from wp profile.
153
+ if( ! empty( $contact_id ) ) {
154
+ $contact_data = ES()->contacts_db->get_by_id( $contact_id );
155
+ $first_name = $contact_data['first_name'];
156
+ $last_name = $contact_data['last_name'];
157
+ } else if( ! empty( $display_name ) ) {
158
+ $contact_details = explode( ' ', $display_name );
159
+ $first_name = $contact_details[0];
160
+ // Check if last name is set.
161
+ if( ! empty( $contact_details[1] ) ) {
162
+ $last_name = $contact_details[1];
163
+ }
164
+ }
165
 
166
  $es_template_body = $template['post_content'];
167
 
184
 
185
  $es_template_body = str_replace( '{{NAME}}', $username, $es_template_body );
186
  $es_template_body = str_replace( '{{EMAIL}}', $useremail, $es_template_body );
187
+ $es_template_body = str_replace( '{{FIRSTNAME}}', $first_name, $es_template_body );
188
+ $es_template_body = str_replace( '{{LASTNAME}}', $last_name, $es_template_body );
189
 
190
  if ( has_post_thumbnail( $template_id ) ) {
191
  $image_array = wp_get_attachment_image_src( get_post_thumbnail_id( $template_id ), 'full' );
lite/includes/db/class-es-db-mailing-queue.php CHANGED
@@ -242,6 +242,20 @@ class ES_DB_Mailing_Queue {
242
  return $last_report_id;
243
  }
244
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
245
  public static function get_id_details_map() {
246
  global $wpdb;
247
 
242
  return $last_report_id;
243
  }
244
 
245
+ public static function update_notification( $notification_id, $data ) {
246
+ global $wpdb;
247
+
248
+ $column_formats = self::get_columns();
249
+ $column_defaults = self::get_column_defaults();
250
+ $prepared_data = ES_DB::prepare_data( $data, $column_formats, $column_defaults, true );
251
+
252
+ $data = $prepared_data['data'];
253
+ $column_formats = $prepared_data['column_formats'];
254
+
255
+ $wpdb->update( IG_MAILING_QUEUE_TABLE, $data, array( 'id' => $notification_id ), $column_formats );
256
+
257
+ }
258
+
259
  public static function get_id_details_map() {
260
  global $wpdb;
261
 
lite/includes/db/class-es-db.php CHANGED
@@ -476,6 +476,8 @@ abstract class ES_DB {
476
  // Convert Batches into smaller chunk
477
  $batches = array_chunk( $values, $length );
478
 
 
 
479
  foreach ( $batches as $key => $batch ) {
480
 
481
  $place_holders = $final_values = array();
@@ -497,10 +499,15 @@ abstract class ES_DB {
497
  $sql = $wpdb->prepare( $query, $final_values );
498
 
499
  if ( ! $wpdb->query( $sql ) ) {
500
- return false;
501
  }
502
  }
503
 
 
 
 
 
 
504
  return true;
505
  }
506
 
476
  // Convert Batches into smaller chunk
477
  $batches = array_chunk( $values, $length );
478
 
479
+ $error_flag = false;
480
+
481
  foreach ( $batches as $key => $batch ) {
482
 
483
  $place_holders = $final_values = array();
499
  $sql = $wpdb->prepare( $query, $final_values );
500
 
501
  if ( ! $wpdb->query( $sql ) ) {
502
+ $error_flag = true;
503
  }
504
  }
505
 
506
+ // Check if error occured during executing the query.
507
+ if( $error_flag ) {
508
+ return false;
509
+ }
510
+
511
  return true;
512
  }
513
 
lite/includes/es-core-functions.php CHANGED
@@ -130,10 +130,8 @@ if ( ! function_exists( 'ig_es_format_date_time' ) ) {
130
  * @return string
131
  */
132
  function ig_es_format_date_time( $date ) {
133
- $convert_date_format = get_option('date_format');
134
- $convert_time_format = get_option('time_format');
135
 
136
- $local_timestamp = ( $date !== '0000-00-00 00:00:00' ) ? date_i18n("$convert_date_format $convert_time_format", strtotime(get_date_from_gmt( $date ))) : '<i class="dashicons dashicons-es dashicons-minus"></i>';
137
 
138
  return $local_timestamp;
139
  }
130
  * @return string
131
  */
132
  function ig_es_format_date_time( $date ) {
 
 
133
 
134
+ $local_timestamp = ( $date !== '0000-00-00 00:00:00' ) ? ES_Common::convert_date_to_wp_date( get_date_from_gmt( $date )) : '<i class="dashicons dashicons-es dashicons-minus"></i>';
135
 
136
  return $local_timestamp;
137
  }
lite/includes/feedback.php CHANGED
@@ -86,7 +86,7 @@ function ig_es_render_broadcast_created_feedback_widget() {
86
  ES_Common::render_feedback_widget( $params );
87
  }
88
 
89
- add_action( 'ig_es_broadcast_created', 'ig_es_render_broadcast_created_feedback_widget' );
90
 
91
  /**
92
  * Render Broadcast Created feedback widget.
@@ -122,6 +122,7 @@ function ig_es_render_fb_widget() {
122
  'width' => 500,
123
  'delay' => 2, // seconds
124
  'confirmButtonText' => '<i class="dashicons dashicons-es dashicons-facebook"></i> ' . __( 'Join Now', 'email-subscribers' ),
 
125
  'show_once' => true
126
  );
127
 
@@ -221,7 +222,6 @@ function ig_es_render_iges_merge_feedback() {
221
  return;
222
  }
223
 
224
-
225
  $params = array(
226
  'type' => 'poll',
227
  'title' => __( 'Subscription forms and CTAs??', 'email-subscribers' ),
@@ -236,7 +236,7 @@ function ig_es_render_iges_merge_feedback() {
236
  'width' => 400,
237
  'delay' => 2, // seconds
238
  'confirmButtonText' => __( 'Send my feedback to <b>Icegram team</b>', 'email-subscribers' ),
239
- 'show_once' => true,
240
  );
241
 
242
  ES_Common::render_feedback_widget( $params );
@@ -265,4 +265,47 @@ function ig_es_can_load_sweetalert_js( $load = false ) {
265
  return $load;
266
  }
267
 
268
- add_filter( 'ig_es_can_load_sweetalert_js', 'ig_es_can_load_sweetalert_js', 10, 1 );
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  ES_Common::render_feedback_widget( $params );
87
  }
88
 
89
+ //add_action( 'ig_es_broadcast_created', 'ig_es_render_broadcast_created_feedback_widget' );
90
 
91
  /**
92
  * Render Broadcast Created feedback widget.
122
  'width' => 500,
123
  'delay' => 2, // seconds
124
  'confirmButtonText' => '<i class="dashicons dashicons-es dashicons-facebook"></i> ' . __( 'Join Now', 'email-subscribers' ),
125
+ 'confirmButtonLink' => 'https://www.facebook.com/groups/2298909487017349/',
126
  'show_once' => true
127
  );
128
 
222
  return;
223
  }
224
 
 
225
  $params = array(
226
  'type' => 'poll',
227
  'title' => __( 'Subscription forms and CTAs??', 'email-subscribers' ),
236
  'width' => 400,
237
  'delay' => 2, // seconds
238
  'confirmButtonText' => __( 'Send my feedback to <b>Icegram team</b>', 'email-subscribers' ),
239
+ 'show_once' => true
240
  );
241
 
242
  ES_Common::render_feedback_widget( $params );
265
  return $load;
266
  }
267
 
268
+ add_filter( 'ig_es_can_load_sweetalert_js', 'ig_es_can_load_sweetalert_js', 10, 1 );
269
+
270
+
271
+ /**
272
+ * Render Broadcast Created feedback widget.
273
+ *
274
+ * @since 4.4.7
275
+ */
276
+ function ig_es_render_broadcast_ui_review() {
277
+
278
+ if ( is_admin() ) {
279
+
280
+ if ( defined( 'DOING_AJAX' ) && DOING_AJAX ) {
281
+ return;
282
+ }
283
+
284
+ if ( ! ES()->is_es_admin_screen() ) {
285
+ return;
286
+ }
287
+
288
+ $event = 'broadcast.ui.review';
289
+
290
+ $params = array(
291
+ 'type' => 'fb',
292
+ 'widget_tyoe' => 'success',
293
+ 'title' => __( 'Broadcast Created Successfully!', 'email-subscribers' ),
294
+ 'event' => $event,
295
+ 'html' => '<div style="margin-bottom:30px;"> ' . __( 'If you like new Broadcast UI, leave us a <b>5 stars review</b>. <br /><br />Do you have a feedback? Contact Us.', 'email-subscribers' ) . '</div>',
296
+ 'position' => 'top-right',
297
+ 'width' => 500,
298
+ 'delay' => 2, // seconds
299
+ 'confirmButtonText' => '<i class="dashicons dashicons-star-empty"></i> ' . __( 'Leave Review', 'email-subscribers' ),
300
+ 'confirmButtonLink' => 'https://wordpress.org/support/plugin/email-subscribers/reviews/?filter=5',
301
+ 'showCancelButton' => true,
302
+ 'cancelButtonText' => __( 'Contact Us', 'email-subscribers' ),
303
+ 'cancelButtonLink' => 'https://icegram.com',
304
+ 'show_once' => true
305
+ );
306
+
307
+ ES_Common::render_feedback_widget( $params );
308
+ }
309
+ }
310
+
311
+ add_action( 'ig_es_broadcast_created', 'ig_es_render_broadcast_ui_review' );
lite/includes/feedback/class-ig-feedback.php CHANGED
@@ -4,21 +4,21 @@ if ( ! defined( 'ABSPATH' ) ) {
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
- if ( ! class_exists( 'IG_Feedback_V_1_2_2' ) ) {
8
  /**
9
  * IG Feedback
10
  *
11
  * The IG Feedback class adds functionality to get quick interactive feedback from users.
12
  * There are different types of feedabck widget like Stars, Emoji, Thubms Up/ Down, Number etc.
13
  *
14
- * @class IG_Feedback_V_1_2_2
15
  * @since 1.0.0
16
  * @copyright Copyright (c) 2019, Icegram
17
  * @license https://opensource.org/licenses/gpl-license GNU Public License
18
  * @author Icegram
19
  * @package feedback
20
  */
21
- class IG_Feedback_V_1_2_2 {
22
 
23
  /**
24
  * Version of Feedback Library
@@ -27,7 +27,7 @@ if ( ! class_exists( 'IG_Feedback_V_1_2_2' ) ) {
27
  * @var string
28
  *
29
  */
30
- public $version = '1.2.2';
31
  /**
32
  * The API URL where we will send feedback data.
33
  *
@@ -798,22 +798,30 @@ if ( ! class_exists( 'IG_Feedback_V_1_2_2' ) ) {
798
  $params = $this->prepare_widget_params( $params );
799
 
800
  $title = $params['title'];
 
801
  $slug = sanitize_title( $title );
802
  $event = $this->event_prefix . $params['event'];
803
  $html = ! empty( $params['html'] ) ? $params['html'] : '';
 
 
 
 
804
 
805
  ?>
806
 
807
  <script>
808
 
809
  Swal.mixin({
810
- type: 'question',
811
- footer: '<?php echo $this->footer; ?>',
812
  position: '<?php echo $params['position']; ?>',
813
  width: <?php echo $params['width']; ?>,
814
  animation: false,
815
- focusConfirm: false,
816
  allowEscapeKey: true,
 
 
 
 
817
  showCloseButton: '<?php echo $params['showCloseButton']; ?>',
818
  allowOutsideClick: '<?php echo $params['allowOutsideClick']; ?>',
819
  showLoaderOnConfirm: true,
@@ -829,13 +837,14 @@ if ( ! class_exists( 'IG_Feedback_V_1_2_2' ) ) {
829
 
830
  preConfirm: () => {
831
  window.open(
832
- 'https://www.facebook.com/groups/2298909487017349/',
833
  '_blank' // <- This is what makes it open in a new window.
834
  );
835
  }
836
  }
837
  ]).then(response => {
838
 
 
839
  if (response.hasOwnProperty('value')) {
840
 
841
  Swal.fire({
@@ -847,9 +856,12 @@ if ( ! class_exists( 'IG_Feedback_V_1_2_2' ) ) {
847
  timer: 1500,
848
  animation: false
849
  });
850
- }
851
-
852
-
 
 
 
853
  });
854
 
855
  </script>
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
+ if ( ! class_exists( 'IG_Feedback_V_1_2_3' ) ) {
8
  /**
9
  * IG Feedback
10
  *
11
  * The IG Feedback class adds functionality to get quick interactive feedback from users.
12
  * There are different types of feedabck widget like Stars, Emoji, Thubms Up/ Down, Number etc.
13
  *
14
+ * @class IG_Feedback_V_1_2_3
15
  * @since 1.0.0
16
  * @copyright Copyright (c) 2019, Icegram
17
  * @license https://opensource.org/licenses/gpl-license GNU Public License
18
  * @author Icegram
19
  * @package feedback
20
  */
21
+ class IG_Feedback_V_1_2_3 {
22
 
23
  /**
24
  * Version of Feedback Library
27
  * @var string
28
  *
29
  */
30
+ public $version = '1.2.3';
31
  /**
32
  * The API URL where we will send feedback data.
33
  *
798
  $params = $this->prepare_widget_params( $params );
799
 
800
  $title = $params['title'];
801
+ $widget_tyoe = !empty($params['widget_tyoe']) ? $params['widget_tyoe'] : 'question';
802
  $slug = sanitize_title( $title );
803
  $event = $this->event_prefix . $params['event'];
804
  $html = ! empty( $params['html'] ) ? $params['html'] : '';
805
+ $confirm_button_link = ! empty( $params['confirmButtonLink'] ) ? $params['confirmButtonLink'] : '';
806
+ $cancel_button_link = ! empty( $params['cancelButtonLink'] ) ? $params['cancelButtonLink'] : '';
807
+ $show_cancel_button = ! empty( $params['showCancelButton'] ) ? 'true' : 'false';
808
+ $cancel_button_text = ! empty( $params['cancelButtonText'] ) ? $params['cancelButtonText'] : 'Cancel';
809
 
810
  ?>
811
 
812
  <script>
813
 
814
  Swal.mixin({
815
+ type: '<?php echo $widget_tyoe; ?>',
 
816
  position: '<?php echo $params['position']; ?>',
817
  width: <?php echo $params['width']; ?>,
818
  animation: false,
819
+ focusConfirm: true,
820
  allowEscapeKey: true,
821
+ showCancelButton: <?php echo $show_cancel_button; ?>,
822
+ confirmButtonColor: '#0e9f6e',
823
+ cancelButtonColor: '#5850ec',
824
+ cancelButtonText: '<?php echo $cancel_button_text; ?>',
825
  showCloseButton: '<?php echo $params['showCloseButton']; ?>',
826
  allowOutsideClick: '<?php echo $params['allowOutsideClick']; ?>',
827
  showLoaderOnConfirm: true,
837
 
838
  preConfirm: () => {
839
  window.open(
840
+ '<?php echo $confirm_button_link; ?>',
841
  '_blank' // <- This is what makes it open in a new window.
842
  );
843
  }
844
  }
845
  ]).then(response => {
846
 
847
+ console.log(response);
848
  if (response.hasOwnProperty('value')) {
849
 
850
  Swal.fire({
856
  timer: 1500,
857
  animation: false
858
  });
859
+ } else if(response.dismiss == 'cancel') {
860
+ window.open(
861
+ '<?php echo $cancel_button_link; ?>',
862
+ '_blank' // <- This is what makes it open in a new window.
863
+ );
864
+ }
865
  });
866
 
867
  </script>
lite/includes/feedback/class-ig-tracker.php CHANGED
@@ -4,7 +4,7 @@ if ( ! defined( 'ABSPATH' ) ) {
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
- if ( ! class_exists( 'IG_Tracker_V_1_2_2' ) ) {
8
 
9
  /**
10
  * Class IG_Tracker_V_1_2_2
@@ -12,7 +12,7 @@ if ( ! class_exists( 'IG_Tracker_V_1_2_2' ) ) {
12
  * Icegram tracker handler class is responsible for sending anonymous plugin
13
  * data to Icegram servers for users that actively allowed data tracking.
14
  *
15
- * @class IG_Tracker_V_1_2_2
16
  * @since 1.0.0
17
  *
18
  * @copyright Copyright (c) 2019, Icegram
@@ -20,7 +20,7 @@ if ( ! class_exists( 'IG_Tracker_V_1_2_2' ) ) {
20
  * @author Icegram
21
  * @package feedback
22
  */
23
- class IG_Tracker_V_1_2_2 {
24
 
25
  /**
26
  * Get Active, Inactive or all plugins info
4
  exit; // Exit if accessed directly.
5
  }
6
 
7
+ if ( ! class_exists( 'IG_Tracker_V_1_2_3' ) ) {
8
 
9
  /**
10
  * Class IG_Tracker_V_1_2_2
12
  * Icegram tracker handler class is responsible for sending anonymous plugin
13
  * data to Icegram servers for users that actively allowed data tracking.
14
  *
15
+ * @class IG_Tracker_V_1_2_3
16
  * @since 1.0.0
17
  *
18
  * @copyright Copyright (c) 2019, Icegram
20
  * @author Icegram
21
  * @package feedback
22
  */
23
+ class IG_Tracker_V_1_2_3 {
24
 
25
  /**
26
  * Get Active, Inactive or all plugins info
lite/includes/libraries/action-scheduler/action-scheduler.php CHANGED
@@ -5,7 +5,7 @@
5
  * Description: A robust scheduling library for use in WordPress plugins.
6
  * Author: Automattic
7
  * Author URI: https://automattic.com/
8
- * Version: 3.1.0
9
  * License: GPLv3
10
  *
11
  * Copyright 2019 Automattic, Inc. (https://automattic.com/contact/)
@@ -25,35 +25,28 @@
25
  *
26
  */
27
 
28
- if ( ! function_exists( 'action_scheduler_register_3_dot_1_dot_0' ) ) {
29
 
30
  if ( ! class_exists( 'ActionScheduler_Versions' ) ) {
31
  require_once( 'classes/ActionScheduler_Versions.php' );
32
  add_action( 'plugins_loaded', array( 'ActionScheduler_Versions', 'initialize_latest_version' ), 1, 0 );
33
  }
34
 
35
- add_action( 'plugins_loaded', 'action_scheduler_register_3_dot_1_dot_0', 0, 0 );
36
 
37
- function action_scheduler_register_3_dot_1_dot_0() {
38
  $versions = ActionScheduler_Versions::instance();
39
- $versions->register( '3.1.0', 'action_scheduler_initialize_3_dot_1_dot_0' );
40
  }
41
 
42
- function action_scheduler_initialize_3_dot_1_dot_0() {
43
- $autoloader = __DIR__ . '/vendor/autoload.php';
44
- if ( is_readable( $autoloader ) ) {
45
- require_once( $autoloader );
46
- define( 'AS_COMPOSER_AUTOLOADING', true );
47
- } else {
48
- define( 'AS_COMPOSER_AUTOLOADING', false );
49
- require_once( 'classes/abstracts/ActionScheduler.php' );
50
- }
51
  ActionScheduler::init( __FILE__ );
52
  }
53
 
54
  // Support usage in themes - load this version if no plugin has loaded a version yet.
55
  if ( did_action( 'plugins_loaded' ) && ! class_exists( 'ActionScheduler' ) ) {
56
- action_scheduler_register_3_dot_1_dot_0();
57
  do_action( 'action_scheduler_pre_theme_init' );
58
  ActionScheduler_Versions::initialize_latest_version();
59
  }
5
  * Description: A robust scheduling library for use in WordPress plugins.
6
  * Author: Automattic
7
  * Author URI: https://automattic.com/
8
+ * Version: 3.1.4
9
  * License: GPLv3
10
  *
11
  * Copyright 2019 Automattic, Inc. (https://automattic.com/contact/)
25
  *
26
  */
27
 
28
+ if ( ! function_exists( 'action_scheduler_register_3_dot_1_dot_4' ) ) {
29
 
30
  if ( ! class_exists( 'ActionScheduler_Versions' ) ) {
31
  require_once( 'classes/ActionScheduler_Versions.php' );
32
  add_action( 'plugins_loaded', array( 'ActionScheduler_Versions', 'initialize_latest_version' ), 1, 0 );
33
  }
34
 
35
+ add_action( 'plugins_loaded', 'action_scheduler_register_3_dot_1_dot_4', 0, 0 );
36
 
37
+ function action_scheduler_register_3_dot_1_dot_4() {
38
  $versions = ActionScheduler_Versions::instance();
39
+ $versions->register( '3.1.4', 'action_scheduler_initialize_3_dot_1_dot_4' );
40
  }
41
 
42
+ function action_scheduler_initialize_3_dot_1_dot_4() {
43
+ require_once( 'classes/abstracts/ActionScheduler.php' );
 
 
 
 
 
 
 
44
  ActionScheduler::init( __FILE__ );
45
  }
46
 
47
  // Support usage in themes - load this version if no plugin has loaded a version yet.
48
  if ( did_action( 'plugins_loaded' ) && ! class_exists( 'ActionScheduler' ) ) {
49
+ action_scheduler_initialize_3_dot_1_dot_4();
50
  do_action( 'action_scheduler_pre_theme_init' );
51
  ActionScheduler_Versions::initialize_latest_version();
52
  }
lite/includes/libraries/action-scheduler/classes/ActionScheduler_ActionFactory.php CHANGED
@@ -22,7 +22,7 @@ class ActionScheduler_ActionFactory {
22
  break;
23
  case ActionScheduler_Store::STATUS_CANCELED :
24
  $action_class = 'ActionScheduler_CanceledAction';
25
- if ( ! is_null( $schedule ) && ! is_a( $schedule, 'ActionScheduler_CanceledSchedule' ) ) {
26
  $schedule = new ActionScheduler_CanceledSchedule( $schedule->get_date() );
27
  }
28
  break;
@@ -61,7 +61,7 @@ class ActionScheduler_ActionFactory {
61
  * @param array $args Args to pass when the hook is triggered
62
  * @param string $group A group to put the action in
63
  *
64
- * @return string The ID of the stored action
65
  */
66
  public function async( $hook, $args = array(), $group = '' ) {
67
  $schedule = new ActionScheduler_NullSchedule();
@@ -75,7 +75,7 @@ class ActionScheduler_ActionFactory {
75
  * @param int $when Unix timestamp when the action will run
76
  * @param string $group A group to put the action in
77
  *
78
- * @return string The ID of the stored action
79
  */
80
  public function single( $hook, $args = array(), $when = null, $group = '' ) {
81
  $date = as_get_datetime_object( $when );
@@ -93,7 +93,7 @@ class ActionScheduler_ActionFactory {
93
  * @param int $interval Seconds between runs
94
  * @param string $group A group to put the action in
95
  *
96
- * @return string The ID of the stored action
97
  */
98
  public function recurring( $hook, $args = array(), $first = null, $interval = null, $group = '' ) {
99
  if ( empty($interval) ) {
@@ -116,7 +116,7 @@ class ActionScheduler_ActionFactory {
116
  * @param int $schedule A cron definition string
117
  * @param string $group A group to put the action in
118
  *
119
- * @return string The ID of the stored action
120
  */
121
  public function cron( $hook, $args = array(), $base_timestamp = null, $schedule = null, $group = '' ) {
122
  if ( empty($schedule) ) {
@@ -170,7 +170,7 @@ class ActionScheduler_ActionFactory {
170
  /**
171
  * @param ActionScheduler_Action $action
172
  *
173
- * @return string The ID of the stored action
174
  */
175
  protected function store( ActionScheduler_Action $action ) {
176
  $store = ActionScheduler_Store::instance();
22
  break;
23
  case ActionScheduler_Store::STATUS_CANCELED :
24
  $action_class = 'ActionScheduler_CanceledAction';
25
+ if ( ! is_null( $schedule ) && ! is_a( $schedule, 'ActionScheduler_CanceledSchedule' ) && ! is_a( $schedule, 'ActionScheduler_NullSchedule' ) ) {
26
  $schedule = new ActionScheduler_CanceledSchedule( $schedule->get_date() );
27
  }
28
  break;
61
  * @param array $args Args to pass when the hook is triggered
62
  * @param string $group A group to put the action in
63
  *
64
+ * @return int The ID of the stored action
65
  */
66
  public function async( $hook, $args = array(), $group = '' ) {
67
  $schedule = new ActionScheduler_NullSchedule();
75
  * @param int $when Unix timestamp when the action will run
76
  * @param string $group A group to put the action in
77
  *
78
+ * @return int The ID of the stored action
79
  */
80
  public function single( $hook, $args = array(), $when = null, $group = '' ) {
81
  $date = as_get_datetime_object( $when );
93
  * @param int $interval Seconds between runs
94
  * @param string $group A group to put the action in
95
  *
96
+ * @return int The ID of the stored action
97
  */
98
  public function recurring( $hook, $args = array(), $first = null, $interval = null, $group = '' ) {
99
  if ( empty($interval) ) {
116
  * @param int $schedule A cron definition string
117
  * @param string $group A group to put the action in
118
  *
119
+ * @return int The ID of the stored action
120
  */
121
  public function cron( $hook, $args = array(), $base_timestamp = null, $schedule = null, $group = '' ) {
122
  if ( empty($schedule) ) {
170
  /**
171
  * @param ActionScheduler_Action $action
172
  *
173
+ * @return int The ID of the stored action
174
  */
175
  protected function store( ActionScheduler_Action $action ) {
176
  $store = ActionScheduler_Store::instance();
lite/includes/libraries/action-scheduler/classes/ActionScheduler_AdminView.php CHANGED
@@ -10,6 +10,9 @@ class ActionScheduler_AdminView extends ActionScheduler_AdminView_Deprecated {
10
 
11
  private static $screen_id = 'tools_page_action-scheduler';
12
 
 
 
 
13
  /**
14
  * @return ActionScheduler_AdminView
15
  * @codeCoverageIgnore
@@ -82,18 +85,31 @@ class ActionScheduler_AdminView extends ActionScheduler_AdminView_Deprecated {
82
  * Triggers processing of any pending actions.
83
  */
84
  public function process_admin_ui() {
85
- $table = new ActionScheduler_ListTable( ActionScheduler::store(), ActionScheduler::logger(), ActionScheduler::runner() );
86
- $table->process_actions();
87
  }
88
 
89
  /**
90
  * Renders the Admin UI
91
  */
92
  public function render_admin_ui() {
93
- $table = new ActionScheduler_ListTable( ActionScheduler::store(), ActionScheduler::logger(), ActionScheduler::runner() );
94
  $table->display_page();
95
  }
96
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
97
  /**
98
  * Provide more information about the screen and its data in the help tab.
99
  */
10
 
11
  private static $screen_id = 'tools_page_action-scheduler';
12
 
13
+ /** @var ActionScheduler_ListTable */
14
+ protected $list_table;
15
+
16
  /**
17
  * @return ActionScheduler_AdminView
18
  * @codeCoverageIgnore
85
  * Triggers processing of any pending actions.
86
  */
87
  public function process_admin_ui() {
88
+ $this->get_list_table();
 
89
  }
90
 
91
  /**
92
  * Renders the Admin UI
93
  */
94
  public function render_admin_ui() {
95
+ $table = $this->get_list_table();
96
  $table->display_page();
97
  }
98
 
99
+ /**
100
+ * Get the admin UI object and process any requested actions.
101
+ *
102
+ * @return ActionScheduler_ListTable
103
+ */
104
+ protected function get_list_table() {
105
+ if ( null === $this->list_table ) {
106
+ $this->list_table = new ActionScheduler_ListTable( ActionScheduler::store(), ActionScheduler::logger(), ActionScheduler::runner() );
107
+ $this->list_table->process_actions();
108
+ }
109
+
110
+ return $this->list_table;
111
+ }
112
+
113
  /**
114
  * Provide more information about the screen and its data in the help tab.
115
  */
lite/includes/libraries/action-scheduler/classes/ActionScheduler_Compatibility.php CHANGED
@@ -92,7 +92,7 @@ class ActionScheduler_Compatibility {
92
 
93
  if ( function_exists( 'wc_set_time_limit' ) ) {
94
  wc_set_time_limit( $limit );
95
- } elseif ( function_exists( 'set_time_limit' ) && false === strpos( ini_get( 'disable_functions' ), 'set_time_limit' )) {
96
  @set_time_limit( $limit );
97
  }
98
  }
92
 
93
  if ( function_exists( 'wc_set_time_limit' ) ) {
94
  wc_set_time_limit( $limit );
95
+ } elseif ( function_exists( 'set_time_limit' ) && false === strpos( ini_get( 'disable_functions' ), 'set_time_limit' ) ) {
96
  @set_time_limit( $limit );
97
  }
98
  }
lite/includes/libraries/action-scheduler/classes/ActionScheduler_DataController.php CHANGED
@@ -101,7 +101,7 @@ class ActionScheduler_DataController {
101
  * @param integer $sleep_time The number of seconds to pause before resuming operation.
102
  */
103
  public static function set_sleep_time( $sleep_time ) {
104
- self::$sleep_time = $sleep_time;
105
  }
106
 
107
  /**
@@ -110,7 +110,7 @@ class ActionScheduler_DataController {
110
  * @param integer $free_ticks The number of ticks to free memory on.
111
  */
112
  public static function set_free_ticks( $free_ticks ) {
113
- self::$free_ticks = $free_ticks;
114
  }
115
 
116
  /**
101
  * @param integer $sleep_time The number of seconds to pause before resuming operation.
102
  */
103
  public static function set_sleep_time( $sleep_time ) {
104
+ self::$sleep_time = (int) $sleep_time;
105
  }
106
 
107
  /**
110
  * @param integer $free_ticks The number of ticks to free memory on.
111
  */
112
  public static function set_free_ticks( $free_ticks ) {
113
+ self::$free_ticks = (int) $free_ticks;
114
  }
115
 
116
  /**
lite/includes/libraries/action-scheduler/classes/ActionScheduler_ListTable.php CHANGED
@@ -307,7 +307,7 @@ class ActionScheduler_ListTable extends ActionScheduler_Abstract_ListTable {
307
  * @return string
308
  */
309
  protected function maybe_render_actions( $row, $column_name ) {
310
- if ( 'pending' === strtolower( $row['status'] ) ) {
311
  return parent::maybe_render_actions( $row, $column_name );
312
  }
313
 
@@ -318,10 +318,36 @@ class ActionScheduler_ListTable extends ActionScheduler_Abstract_ListTable {
318
  * Renders admin notifications
319
  *
320
  * Notifications:
321
- * 1. When the maximum number of tasks are being executed simultaneously
322
- * 2. Notifications when a task is manually executed
 
323
  */
324
  public function display_admin_notices() {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
325
  if ( $this->runner->has_maximum_concurrent_batches() ) {
326
  $claim_count = $this->store->get_claim_count();
327
  $this->admin_notices[] = array(
@@ -473,6 +499,24 @@ class ActionScheduler_ListTable extends ActionScheduler_Abstract_ListTable {
473
  $this->process_row_action( $action_id, 'run' );
474
  }
475
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
476
  /**
477
  * Implements the logic behind processing an action once an action link is clicked on the list table.
478
  *
@@ -527,9 +571,13 @@ class ActionScheduler_ListTable extends ActionScheduler_Abstract_ListTable {
527
  } catch ( Exception $e ) {
528
  continue;
529
  }
 
 
 
530
  $this->items[ $action_id ] = array(
531
  'ID' => $action_id,
532
  'hook' => $action->get_hook(),
 
533
  'status' => $status_labels[ $this->store->get_status( $action_id ) ],
534
  'args' => $action->get_args(),
535
  'group' => $action->get_group(),
307
  * @return string
308
  */
309
  protected function maybe_render_actions( $row, $column_name ) {
310
+ if ( 'pending' === strtolower( $row[ 'status_name' ] ) ) {
311
  return parent::maybe_render_actions( $row, $column_name );
312
  }
313
 
318
  * Renders admin notifications
319
  *
320
  * Notifications:
321
+ * 1. When the maximum number of tasks are being executed simultaneously.
322
+ * 2. Notifications when a task is manually executed.
323
+ * 3. Tables are missing.
324
  */
325
  public function display_admin_notices() {
326
+ global $wpdb;
327
+
328
+ if ( ( is_a( $this->store, 'ActionScheduler_HybridStore' ) || is_a( $this->store, 'ActionScheduler_DBStore' ) ) && apply_filters( 'action_scheduler_enable_recreate_data_store', true ) ) {
329
+ $table_list = array(
330
+ 'actionscheduler_actions',
331
+ 'actionscheduler_logs',
332
+ 'actionscheduler_groups',
333
+ 'actionscheduler_claims',
334
+ );
335
+
336
+ $found_tables = $wpdb->get_col( "SHOW TABLES LIKE '{$wpdb->prefix}actionscheduler%'" ); // phpcs:ignore WordPress.DB.PreparedSQL.InterpolatedNotPrepared
337
+ foreach ( $table_list as $table_name ) {
338
+ if ( ! in_array( $wpdb->prefix . $table_name, $found_tables ) ) {
339
+ $this->admin_notices[] = array(
340
+ 'class' => 'error',
341
+ 'message' => __( 'It appears one or more database tables were missing. Attempting to re-create the missing table(s).' , 'action-scheduler' ),
342
+ );
343
+ $this->recreate_tables();
344
+ parent::display_admin_notices();
345
+
346
+ return;
347
+ }
348
+ }
349
+ }
350
+
351
  if ( $this->runner->has_maximum_concurrent_batches() ) {
352
  $claim_count = $this->store->get_claim_count();
353
  $this->admin_notices[] = array(
499
  $this->process_row_action( $action_id, 'run' );
500
  }
501
 
502
+ /**
503
+ * Force the data store schema updates.
504
+ */
505
+ protected function recreate_tables() {
506
+ if ( is_a( $this->store, 'ActionScheduler_HybridStore' ) ) {
507
+ $store = $this->store;
508
+ } else {
509
+ $store = new ActionScheduler_HybridStore();
510
+ }
511
+ add_action( 'action_scheduler/created_table', array( $store, 'set_autoincrement' ), 10, 2 );
512
+
513
+ $store_schema = new ActionScheduler_StoreSchema();
514
+ $logger_schema = new ActionScheduler_LoggerSchema();
515
+ $store_schema->register_tables( true );
516
+ $logger_schema->register_tables( true );
517
+
518
+ remove_action( 'action_scheduler/created_table', array( $store, 'set_autoincrement' ), 10 );
519
+ }
520
  /**
521
  * Implements the logic behind processing an action once an action link is clicked on the list table.
522
  *
571
  } catch ( Exception $e ) {
572
  continue;
573
  }
574
+ if ( is_a( $action, 'ActionScheduler_NullAction' ) ) {
575
+ continue;
576
+ }
577
  $this->items[ $action_id ] = array(
578
  'ID' => $action_id,
579
  'hook' => $action->get_hook(),
580
+ 'status_name' => $this->store->get_status( $action_id ),
581
  'status' => $status_labels[ $this->store->get_status( $action_id ) ],
582
  'args' => $action->get_args(),
583
  'group' => $action->get_group(),
lite/includes/libraries/action-scheduler/classes/ActionScheduler_wcSystemStatus.php CHANGED
@@ -93,7 +93,6 @@ class ActionScheduler_wcSystemStatus {
93
  */
94
  protected function get_template( $status_labels, $action_counts, $oldest_and_newest ) {
95
  $as_version = ActionScheduler_Versions::instance()->latest_version();
96
- $autoloader = AS_COMPOSER_AUTOLOADING ? __( 'Composer', 'action-scheduler' ) : __( 'Internal', 'action-scheduler' );
97
  ?>
98
 
99
  <table class="wc_status_table widefat" cellspacing="0">
@@ -105,10 +104,6 @@ class ActionScheduler_wcSystemStatus {
105
  <td colspan="2" data-export-label="Version"><?php esc_html_e( 'Version:', 'action-scheduler' ); ?></td>
106
  <td colspan="3"><?php echo esc_html( $as_version ); ?></td>
107
  </tr>
108
- <tr>
109
- <td colspan="2" data-export-label="Version"><?php esc_html_e( 'Autoloader:', 'action-scheduler' ); ?></td>
110
- <td colspan="3"><?php echo esc_html( $autoloader ); ?></td>
111
- </tr>
112
  <tr>
113
  <td><strong><?php esc_html_e( 'Action Status', 'action-scheduler' ); ?></strong></td>
114
  <td class="help">&nbsp;</td>
93
  */
94
  protected function get_template( $status_labels, $action_counts, $oldest_and_newest ) {
95
  $as_version = ActionScheduler_Versions::instance()->latest_version();
 
96
  ?>
97
 
98
  <table class="wc_status_table widefat" cellspacing="0">
104
  <td colspan="2" data-export-label="Version"><?php esc_html_e( 'Version:', 'action-scheduler' ); ?></td>
105
  <td colspan="3"><?php echo esc_html( $as_version ); ?></td>
106
  </tr>
 
 
 
 
107
  <tr>
108
  <td><strong><?php esc_html_e( 'Action Status', 'action-scheduler' ); ?></strong></td>
109
  <td class="help">&nbsp;</td>
lite/includes/libraries/action-scheduler/classes/WP_CLI/ActionScheduler_WPCLI_Scheduler_command.php CHANGED
@@ -48,8 +48,8 @@ class ActionScheduler_WPCLI_Scheduler_command extends WP_CLI_Command {
48
  $hooks = explode( ',', WP_CLI\Utils\get_flag_value( $assoc_args, 'hooks', '' ) );
49
  $hooks = array_filter( array_map( 'trim', $hooks ) );
50
  $group = \WP_CLI\Utils\get_flag_value( $assoc_args, 'group', '' );
51
- $free_on = \WP_CLI\Utils\get_flag_value( $assoc_args, 'free-memory-on', '' );
52
- $sleep = \WP_CLI\Utils\get_flag_value( $assoc_args, 'pause', '' );
53
  $force = \WP_CLI\Utils\get_flag_value( $assoc_args, 'force', false );
54
 
55
  ActionScheduler_DataController::set_free_ticks( $free_on );
48
  $hooks = explode( ',', WP_CLI\Utils\get_flag_value( $assoc_args, 'hooks', '' ) );
49
  $hooks = array_filter( array_map( 'trim', $hooks ) );
50
  $group = \WP_CLI\Utils\get_flag_value( $assoc_args, 'group', '' );
51
+ $free_on = \WP_CLI\Utils\get_flag_value( $assoc_args, 'free-memory-on', 50 );
52
+ $sleep = \WP_CLI\Utils\get_flag_value( $assoc_args, 'pause', 0 );
53
  $force = \WP_CLI\Utils\get_flag_value( $assoc_args, 'force', false );
54
 
55
  ActionScheduler_DataController::set_free_ticks( $free_on );
lite/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler.php CHANGED
@@ -130,40 +130,36 @@ abstract class ActionScheduler {
130
  */
131
  public static function init( $plugin_file ) {
132
  self::$plugin_file = $plugin_file;
133
- if ( ! AS_COMPOSER_AUTOLOADING ) {
134
- spl_autoload_register( array( __CLASS__, 'autoload' ) );
135
- }
136
 
137
  /**
138
  * Fires in the early stages of Action Scheduler init hook.
139
  */
140
  do_action( 'action_scheduler_pre_init' );
141
 
142
- require_once( self::plugin_path('functions.php') );
143
  ActionScheduler_DataController::init();
144
 
145
- $store = self::store();
146
- add_action( 'init', array( $store, 'init' ), 1, 0 );
147
-
148
- $logger = self::logger();
149
- add_action( 'init', array( $logger, 'init' ), 1, 0 );
150
-
151
- $runner = self::runner();
152
- add_action( 'init', array( $runner, 'init' ), 1, 0 );
153
-
154
  $admin_view = self::admin_view();
155
- add_action( 'init', array( $admin_view, 'init' ), 0, 0 ); // run before $store::init()
156
 
157
  // Ensure initialization on plugin activation.
158
- if ( did_action( 'init' ) ) {
 
 
 
 
 
 
159
  $store->init();
160
  $logger->init();
161
  $runner->init();
162
- $admin_view->init();
163
  }
164
 
165
  if ( apply_filters( 'action_scheduler_load_deprecated_functions', true ) ) {
166
- require_once( self::plugin_path('deprecated/functions.php') );
167
  }
168
 
169
  if ( defined( 'WP_CLI' ) && WP_CLI ) {
130
  */
131
  public static function init( $plugin_file ) {
132
  self::$plugin_file = $plugin_file;
133
+ spl_autoload_register( array( __CLASS__, 'autoload' ) );
 
 
134
 
135
  /**
136
  * Fires in the early stages of Action Scheduler init hook.
137
  */
138
  do_action( 'action_scheduler_pre_init' );
139
 
140
+ require_once( self::plugin_path( 'functions.php' ) );
141
  ActionScheduler_DataController::init();
142
 
143
+ $store = self::store();
144
+ $logger = self::logger();
145
+ $runner = self::runner();
 
 
 
 
 
 
146
  $admin_view = self::admin_view();
 
147
 
148
  // Ensure initialization on plugin activation.
149
+ if ( ! did_action( 'init' ) ) {
150
+ add_action( 'init', array( $admin_view, 'init' ), 0, 0 ); // run before $store::init()
151
+ add_action( 'init', array( $store, 'init' ), 1, 0 );
152
+ add_action( 'init', array( $logger, 'init' ), 1, 0 );
153
+ add_action( 'init', array( $runner, 'init' ), 1, 0 );
154
+ } else {
155
+ $admin_view->init();
156
  $store->init();
157
  $logger->init();
158
  $runner->init();
 
159
  }
160
 
161
  if ( apply_filters( 'action_scheduler_load_deprecated_functions', true ) ) {
162
+ require_once( self::plugin_path( 'deprecated/functions.php' ) );
163
  }
164
 
165
  if ( defined( 'WP_CLI' ) && WP_CLI ) {
lite/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_ListTable.php CHANGED
@@ -140,7 +140,6 @@ abstract class ActionScheduler_Abstract_ListTable extends WP_List_Table {
140
  global $wpdb;
141
  // Detect when a bulk action is being triggered.
142
  $action = $this->current_action();
143
-
144
  if ( ! $action ) {
145
  return;
146
  }
@@ -161,13 +160,14 @@ abstract class ActionScheduler_Abstract_ListTable extends WP_List_Table {
161
  }
162
 
163
  /**
164
- * Default code for deleting entries. We trust ids_sql because it is
165
  * validated already by process_bulk_action()
166
  */
167
  protected function bulk_delete( array $ids, $ids_sql ) {
168
- global $wpdb;
169
-
170
- $wpdb->query( "DELETE FROM {$this->table_name} WHERE {$this->ID} IN $ids_sql" );
 
171
  }
172
 
173
  /**
@@ -642,7 +642,6 @@ abstract class ActionScheduler_Abstract_ListTable extends WP_List_Table {
642
  */
643
  public function process_actions() {
644
  $this->process_bulk_action();
645
-
646
  $this->process_row_actions();
647
 
648
  if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) {
140
  global $wpdb;
141
  // Detect when a bulk action is being triggered.
142
  $action = $this->current_action();
 
143
  if ( ! $action ) {
144
  return;
145
  }
160
  }
161
 
162
  /**
163
+ * Default code for deleting entries.
164
  * validated already by process_bulk_action()
165
  */
166
  protected function bulk_delete( array $ids, $ids_sql ) {
167
+ $store = ActionScheduler::store();
168
+ foreach ( $ids as $action_id ) {
169
+ $store->delete( $action_id );
170
+ }
171
  }
172
 
173
  /**
642
  */
643
  public function process_actions() {
644
  $this->process_bulk_action();
 
645
  $this->process_row_actions();
646
 
647
  if ( ! empty( $_REQUEST['_wp_http_referer'] ) ) {
lite/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler_Abstract_Schema.php CHANGED
@@ -25,9 +25,11 @@ abstract class ActionScheduler_Abstract_Schema {
25
  /**
26
  * Register tables with WordPress, and create them if needed.
27
  *
 
 
28
  * @return void
29
  */
30
- public function register_tables() {
31
  global $wpdb;
32
 
33
  // make WP aware of our tables
@@ -38,7 +40,7 @@ abstract class ActionScheduler_Abstract_Schema {
38
  }
39
 
40
  // create the tables
41
- if ( $this->schema_update_required() ) {
42
  foreach ( $this->tables as $table ) {
43
  $this->update_table( $table );
44
  }
25
  /**
26
  * Register tables with WordPress, and create them if needed.
27
  *
28
+ * @param bool $force_update Optional. Default false. Use true to always run the schema update.
29
+ *
30
  * @return void
31
  */
32
+ public function register_tables( $force_update = false ) {
33
  global $wpdb;
34
 
35
  // make WP aware of our tables
40
  }
41
 
42
  // create the tables
43
+ if ( $this->schema_update_required() || $force_update ) {
44
  foreach ( $this->tables as $table ) {
45
  $this->update_table( $table );
46
  }
lite/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler_Logger.php CHANGED
@@ -130,7 +130,7 @@ abstract class ActionScheduler_Logger {
130
  } else {
131
  $message = __( 'action ignored', 'action-scheduler' );
132
  }
133
- $this->log( $action_id, __( 'action ignored', 'action-scheduler' ) );
134
  }
135
 
136
  /**
130
  } else {
131
  $message = __( 'action ignored', 'action-scheduler' );
132
  }
133
+ $this->log( $action_id, $message );
134
  }
135
 
136
  /**
lite/includes/libraries/action-scheduler/classes/abstracts/ActionScheduler_Store.php CHANGED
@@ -24,7 +24,7 @@ abstract class ActionScheduler_Store extends ActionScheduler_Store_Deprecated {
24
  * to store. Otherwise uses the first date of the action's
25
  * schedule.
26
  *
27
- * @return string The action ID
28
  */
29
  abstract public function save_action( ActionScheduler_Action $action, DateTime $scheduled_date = NULL );
30
 
24
  * to store. Otherwise uses the first date of the action's
25
  * schedule.
26
  *
27
+ * @return int The action ID
28
  */
29
  abstract public function save_action( ActionScheduler_Action $action, DateTime $scheduled_date = NULL );
30
 
lite/includes/libraries/action-scheduler/classes/data-stores/ActionScheduler_DBStore.php CHANGED
@@ -56,7 +56,8 @@ class ActionScheduler_DBStore extends ActionScheduler_Store {
56
  $data['extended_args'] = $args;
57
  }
58
 
59
- $wpdb->insert( $wpdb->actionscheduler_actions, $data );
 
60
  $action_id = $wpdb->insert_id;
61
 
62
  if ( is_wp_error( $action_id ) ) {
56
  $data['extended_args'] = $args;
57
  }
58
 
59
+ $table_name = ! empty( $wpdb->actionscheduler_actions ) ? $wpdb->actionscheduler_actions : $wpdb->prefix . 'actionscheduler_actions';
60
+ $wpdb->insert( $table_name, $data );
61
  $action_id = $wpdb->insert_id;
62
 
63
  if ( is_wp_error( $action_id ) ) {
lite/includes/libraries/action-scheduler/classes/data-stores/ActionScheduler_HybridStore.php CHANGED
@@ -77,18 +77,33 @@ class ActionScheduler_HybridStore extends Store {
77
  }
78
  /** @var \wpdb $wpdb */
79
  global $wpdb;
80
- $wpdb->insert(
 
 
 
 
 
 
 
 
 
81
  $wpdb->{ActionScheduler_StoreSchema::ACTIONS_TABLE},
82
  [
83
- 'action_id' => $this->demarkation_id,
84
- 'hook' => '',
85
- 'status' => '',
 
 
 
 
86
  ]
87
  );
88
- $wpdb->delete(
89
- $wpdb->{ActionScheduler_StoreSchema::ACTIONS_TABLE},
90
- [ 'action_id' => $this->demarkation_id ]
91
- );
 
 
92
  }
93
  }
94
 
@@ -220,6 +235,8 @@ class ActionScheduler_HybridStore extends Store {
220
  *
221
  * @param ActionScheduler_Action $action Action object to be saved.
222
  * @param DateTime $date Optional. Schedule date. Default null.
 
 
223
  */
224
  public function save_action( ActionScheduler_Action $action, DateTime $date = null ) {
225
  return $this->primary_store->save_action( $action, $date );
@@ -231,10 +248,11 @@ class ActionScheduler_HybridStore extends Store {
231
  * @param int $action_id Action ID.
232
  */
233
  public function fetch_action( $action_id ) {
234
- if ( $action_id < $this->demarkation_id ) {
235
- return $this->secondary_store->fetch_action( $action_id );
 
236
  } else {
237
- return $this->primary_store->fetch_action( $action_id );
238
  }
239
  }
240
 
@@ -244,10 +262,9 @@ class ActionScheduler_HybridStore extends Store {
244
  * @param int $action_id Action ID.
245
  */
246
  public function cancel_action( $action_id ) {
247
- if ( $action_id < $this->demarkation_id ) {
248
- $this->secondary_store->cancel_action( $action_id );
249
- } else {
250
- $this->primary_store->cancel_action( $action_id );
251
  }
252
  }
253
 
@@ -257,10 +274,9 @@ class ActionScheduler_HybridStore extends Store {
257
  * @param int $action_id Action ID.
258
  */
259
  public function delete_action( $action_id ) {
260
- if ( $action_id < $this->demarkation_id ) {
261
- $this->secondary_store->delete_action( $action_id );
262
- } else {
263
- $this->primary_store->delete_action( $action_id );
264
  }
265
  }
266
 
@@ -270,10 +286,11 @@ class ActionScheduler_HybridStore extends Store {
270
  * @param int $action_id Action ID.
271
  */
272
  public function get_date( $action_id ) {
273
- if ( $action_id < $this->demarkation_id ) {
274
- return $this->secondary_store->get_date( $action_id );
 
275
  } else {
276
- return $this->primary_store->get_date( $action_id );
277
  }
278
  }
279
 
@@ -283,10 +300,9 @@ class ActionScheduler_HybridStore extends Store {
283
  * @param int $action_id Action ID.
284
  */
285
  public function mark_failure( $action_id ) {
286
- if ( $action_id < $this->demarkation_id ) {
287
- $this->secondary_store->mark_failure( $action_id );
288
- } else {
289
- $this->primary_store->mark_failure( $action_id );
290
  }
291
  }
292
 
@@ -296,10 +312,9 @@ class ActionScheduler_HybridStore extends Store {
296
  * @param int $action_id Action ID.
297
  */
298
  public function log_execution( $action_id ) {
299
- if ( $action_id < $this->demarkation_id ) {
300
- $this->secondary_store->log_execution( $action_id );
301
- } else {
302
- $this->primary_store->log_execution( $action_id );
303
  }
304
  }
305
 
@@ -309,10 +324,9 @@ class ActionScheduler_HybridStore extends Store {
309
  * @param int $action_id Action ID.
310
  */
311
  public function mark_complete( $action_id ) {
312
- if ( $action_id < $this->demarkation_id ) {
313
- $this->secondary_store->mark_complete( $action_id );
314
- } else {
315
- $this->primary_store->mark_complete( $action_id );
316
  }
317
  }
318
 
@@ -322,13 +336,45 @@ class ActionScheduler_HybridStore extends Store {
322
  * @param int $action_id Action ID.
323
  */
324
  public function get_status( $action_id ) {
325
- if ( $action_id < $this->demarkation_id ) {
326
- return $this->secondary_store->get_status( $action_id );
327
- } else {
328
- return $this->primary_store->get_status( $action_id );
329
  }
 
330
  }
331
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
332
 
333
  /* * * * * * * * * * * * * * * * * * * * * * * * * * *
334
  * All claim-related functions should operate solely
77
  }
78
  /** @var \wpdb $wpdb */
79
  global $wpdb;
80
+ /**
81
+ * A default date of '0000-00-00 00:00:00' is invalid in MySQL 5.7 when configured with
82
+ * sql_mode including both STRICT_TRANS_TABLES and NO_ZERO_DATE.
83
+ */
84
+ $default_date = new DateTime( 'tomorrow' );
85
+ $null_action = new ActionScheduler_NullAction();
86
+ $date_gmt = $this->get_scheduled_date_string( $null_action, $default_date );
87
+ $date_local = $this->get_scheduled_date_string_local( $null_action, $default_date );
88
+
89
+ $row_count = $wpdb->insert(
90
  $wpdb->{ActionScheduler_StoreSchema::ACTIONS_TABLE},
91
  [
92
+ 'action_id' => $this->demarkation_id,
93
+ 'hook' => '',
94
+ 'status' => '',
95
+ 'scheduled_date_gmt' => $date_gmt,
96
+ 'scheduled_date_local' => $date_local,
97
+ 'last_attempt_gmt' => $date_gmt,
98
+ 'last_attempt_local' => $date_local,
99
  ]
100
  );
101
+ if ( $row_count > 0 ) {
102
+ $wpdb->delete(
103
+ $wpdb->{ActionScheduler_StoreSchema::ACTIONS_TABLE},
104
+ [ 'action_id' => $this->demarkation_id ]
105
+ );
106
+ }
107
  }
108
  }
109
 
235
  *
236
  * @param ActionScheduler_Action $action Action object to be saved.
237
  * @param DateTime $date Optional. Schedule date. Default null.
238
+ *
239
+ * @return int The action ID
240
  */
241
  public function save_action( ActionScheduler_Action $action, DateTime $date = null ) {
242
  return $this->primary_store->save_action( $action, $date );
248
  * @param int $action_id Action ID.
249
  */
250
  public function fetch_action( $action_id ) {
251
+ $store = $this->get_store_from_action_id( $action_id, true );
252
+ if ( $store ) {
253
+ return $store->fetch_action( $action_id );
254
  } else {
255
+ return new ActionScheduler_NullAction();
256
  }
257
  }
258
 
262
  * @param int $action_id Action ID.
263
  */
264
  public function cancel_action( $action_id ) {
265
+ $store = $this->get_store_from_action_id( $action_id );
266
+ if ( $store ) {
267
+ $store->cancel_action( $action_id );
 
268
  }
269
  }
270
 
274
  * @param int $action_id Action ID.
275
  */
276
  public function delete_action( $action_id ) {
277
+ $store = $this->get_store_from_action_id( $action_id );
278
+ if ( $store ) {
279
+ $store->delete_action( $action_id );
 
280
  }
281
  }
282
 
286
  * @param int $action_id Action ID.
287
  */
288
  public function get_date( $action_id ) {
289
+ $store = $this->get_store_from_action_id( $action_id );
290
+ if ( $store ) {
291
+ return $store->get_date( $action_id );
292
  } else {
293
+ return null;
294
  }
295
  }
296
 
300
  * @param int $action_id Action ID.
301
  */
302
  public function mark_failure( $action_id ) {
303
+ $store = $this->get_store_from_action_id( $action_id );
304
+ if ( $store ) {
305
+ $store->mark_failure( $action_id );
 
306
  }
307
  }
308
 
312
  * @param int $action_id Action ID.
313
  */
314
  public function log_execution( $action_id ) {
315
+ $store = $this->get_store_from_action_id( $action_id );
316
+ if ( $store ) {
317
+ $store->log_execution( $action_id );
 
318
  }
319
  }
320
 
324
  * @param int $action_id Action ID.
325
  */
326
  public function mark_complete( $action_id ) {
327
+ $store = $this->get_store_from_action_id( $action_id );
328
+ if ( $store ) {
329
+ $store->mark_complete( $action_id );
 
330
  }
331
  }
332
 
336
  * @param int $action_id Action ID.
337
  */
338
  public function get_status( $action_id ) {
339
+ $store = $this->get_store_from_action_id( $action_id );
340
+ if ( $store ) {
341
+ return $store->get_status( $action_id );
 
342
  }
343
+ return null;
344
  }
345
 
346
+ /**
347
+ * Return which store an action is stored in.
348
+ *
349
+ * @param int $action_id ID of the action.
350
+ * @param bool $primary_first Optional flag indicating search the primary store first.
351
+ * @return ActionScheduler_Store
352
+ */
353
+ protected function get_store_from_action_id( $action_id, $primary_first = false ) {
354
+ if ( $primary_first ) {
355
+ $stores = [
356
+ $this->primary_store,
357
+ $this->secondary_store,
358
+ ];
359
+ } elseif ( $action_id < $this->demarkation_id ) {
360
+ $stores = [
361
+ $this->secondary_store,
362
+ $this->primary_store,
363
+ ];
364
+ } else {
365
+ $stores = [
366
+ $this->primary_store,
367
+ ];
368
+ }
369
+
370
+ foreach ( $stores as $store ) {
371
+ $action = $store->fetch_action( $action_id );
372
+ if ( ! is_a( $action, 'ActionScheduler_NullAction' ) ) {
373
+ return $store;
374
+ }
375
+ }
376
+ return null;
377
+ }
378
 
379
  /* * * * * * * * * * * * * * * * * * * * * * * * * * *
380
  * All claim-related functions should operate solely
lite/includes/libraries/action-scheduler/functions.php CHANGED
@@ -10,7 +10,7 @@
10
  * @param string $hook The hook to trigger.
11
  * @param array $args Arguments to pass when the hook triggers.
12
  * @param string $group The group to assign this job to.
13
- * @return string The action ID.
14
  */
15
  function as_enqueue_async_action( $hook, $args = array(), $group = '' ) {
16
  return ActionScheduler::factory()->async( $hook, $args, $group );
@@ -19,12 +19,12 @@ function as_enqueue_async_action( $hook, $args = array(), $group = '' ) {
19
  /**
20
  * Schedule an action to run one time
21
  *
22
- * @param int $timestamp When the job will run
23
- * @param string $hook The hook to trigger
24
- * @param array $args Arguments to pass when the hook triggers
25
- * @param string $group The group to assign this job to
26
  *
27
- * @return string The job ID
28
  */
29
  function as_schedule_single_action( $timestamp, $hook, $args = array(), $group = '' ) {
30
  return ActionScheduler::factory()->single( $hook, $args, $timestamp, $group );
@@ -33,13 +33,13 @@ function as_schedule_single_action( $timestamp, $hook, $args = array(), $group =
33
  /**
34
  * Schedule a recurring action
35
  *
36
- * @param int $timestamp When the first instance of the job will run
37
- * @param int $interval_in_seconds How long to wait between runs
38
- * @param string $hook The hook to trigger
39
- * @param array $args Arguments to pass when the hook triggers
40
- * @param string $group The group to assign this job to
41
  *
42
- * @return string The job ID
43
  */
44
  function as_schedule_recurring_action( $timestamp, $interval_in_seconds, $hook, $args = array(), $group = '' ) {
45
  return ActionScheduler::factory()->recurring( $hook, $args, $timestamp, $interval_in_seconds, $group );
@@ -62,11 +62,11 @@ function as_schedule_recurring_action( $timestamp, $interval_in_seconds, $hook,
62
  * | | +--------------- day of month (1 - 31)
63
  * | +-------------------- hour (0 - 23)
64
  * +------------------------- min (0 - 59)
65
- * @param string $hook The hook to trigger
66
- * @param array $args Arguments to pass when the hook triggers
67
- * @param string $group The group to assign this job to
68
  *
69
- * @return string The job ID
70
  */
71
  function as_schedule_cron_action( $timestamp, $schedule, $hook, $args = array(), $group = '' ) {
72
  return ActionScheduler::factory()->cron( $hook, $args, $timestamp, $schedule, $group );
@@ -82,11 +82,11 @@ function as_schedule_cron_action( $timestamp, $schedule, $hook, $args = array(),
82
  * then the following instance will never be scheduled (or exist), which is effectively the same as being unscheduled
83
  * by this method also.
84
  *
85
- * @param string $hook The hook that the job will trigger
86
- * @param array $args Args that would have been passed to the job
87
- * @param string $group
88
  *
89
- * @return string The scheduled action ID if a scheduled action was found, or empty string if no matching action found.
90
  */
91
  function as_unschedule_action( $hook, $args = array(), $group = '' ) {
92
  $params = array();
@@ -108,9 +108,9 @@ function as_unschedule_action( $hook, $args = array(), $group = '' ) {
108
  /**
109
  * Cancel all occurrences of a scheduled action.
110
  *
111
- * @param string $hook The hook that the job will trigger
112
- * @param array $args Args that would have been passed to the job
113
- * @param string $group
114
  */
115
  function as_unschedule_all_actions( $hook, $args = array(), $group = '' ) {
116
  if ( empty( $args ) ) {
@@ -131,7 +131,7 @@ function as_unschedule_all_actions( $hook, $args = array(), $group = '' ) {
131
  /**
132
  * Check if there is an existing action in the queue with a given hook, args and group combination.
133
  *
134
- * An action in the queue could be pending, in-progress or aysnc. If the is pending for a time in
135
  * future, its scheduled date will be returned as a timestamp. If it is currently being run, or an
136
  * async action sitting in the queue waiting to be processed, in which case boolean true will be
137
  * returned. Or there may be no async, in-progress or pending action for this hook, in which case,
@@ -191,7 +191,7 @@ function as_next_scheduled_action( $hook, $args = NULL, $group = '' ) {
191
  * 'orderby' => 'date' - accepted values are 'hook', 'group', 'modified', or 'date'
192
  * 'order' => 'ASC'
193
  *
194
- * @param string $return_format OBJECT, ARRAY_A, or ids
195
  *
196
  * @return array
197
  */
@@ -234,8 +234,8 @@ function as_get_scheduled_actions( $args = array(), $return_format = OBJECT ) {
234
  * timezone when instantiating datetimes rather than leaving it up to
235
  * the PHP default.
236
  *
237
- * @param mixed $date_string A date/time string. Valid formats are explained in http://php.net/manual/en/datetime.formats.php
238
- * @param string $timezone A timezone identifier, like UTC or Europe/Lisbon. The list of valid identifiers is available http://php.net/manual/en/timezones.php
239
  *
240
  * @return ActionScheduler_DateTime
241
  */
10
  * @param string $hook The hook to trigger.
11
  * @param array $args Arguments to pass when the hook triggers.
12
  * @param string $group The group to assign this job to.
13
+ * @return int The action ID.
14
  */
15
  function as_enqueue_async_action( $hook, $args = array(), $group = '' ) {
16
  return ActionScheduler::factory()->async( $hook, $args, $group );
19
  /**
20
  * Schedule an action to run one time
21
  *
22
+ * @param int $timestamp When the job will run.
23
+ * @param string $hook The hook to trigger.
24
+ * @param array $args Arguments to pass when the hook triggers.
25
+ * @param string $group The group to assign this job to.
26
  *
27
+ * @return int The action ID.
28
  */
29
  function as_schedule_single_action( $timestamp, $hook, $args = array(), $group = '' ) {
30
  return ActionScheduler::factory()->single( $hook, $args, $timestamp, $group );
33
  /**
34
  * Schedule a recurring action
35
  *
36
+ * @param int $timestamp When the first instance of the job will run.
37
+ * @param int $interval_in_seconds How long to wait between runs.
38
+ * @param string $hook The hook to trigger.
39
+ * @param array $args Arguments to pass when the hook triggers.
40
+ * @param string $group The group to assign this job to.
41
  *
42
+ * @return int The action ID.
43
  */
44
  function as_schedule_recurring_action( $timestamp, $interval_in_seconds, $hook, $args = array(), $group = '' ) {
45
  return ActionScheduler::factory()->recurring( $hook, $args, $timestamp, $interval_in_seconds, $group );
62
  * | | +--------------- day of month (1 - 31)
63
  * | +-------------------- hour (0 - 23)
64
  * +------------------------- min (0 - 59)
65
+ * @param string $hook The hook to trigger.
66
+ * @param array $args Arguments to pass when the hook triggers.
67
+ * @param string $group The group to assign this job to.
68
  *
69
+ * @return int The action ID.
70
  */
71
  function as_schedule_cron_action( $timestamp, $schedule, $hook, $args = array(), $group = '' ) {
72
  return ActionScheduler::factory()->cron( $hook, $args, $timestamp, $schedule, $group );
82
  * then the following instance will never be scheduled (or exist), which is effectively the same as being unscheduled
83
  * by this method also.
84
  *
85
+ * @param string $hook The hook that the job will trigger.
86
+ * @param array $args Args that would have been passed to the job.
87
+ * @param string $group The group the job is assigned to.
88
  *
89
+ * @return string|null The scheduled action ID if a scheduled action was found, or null if no matching action found.
90
  */
91
  function as_unschedule_action( $hook, $args = array(), $group = '' ) {
92
  $params = array();
108
  /**
109
  * Cancel all occurrences of a scheduled action.
110
  *
111
+ * @param string $hook The hook that the job will trigger.
112
+ * @param array $args Args that would have been passed to the job.
113
+ * @param string $group The group the job is assigned to.
114
  */
115
  function as_unschedule_all_actions( $hook, $args = array(), $group = '' ) {
116
  if ( empty( $args ) ) {
131
  /**
132
  * Check if there is an existing action in the queue with a given hook, args and group combination.
133
  *
134
+ * An action in the queue could be pending, in-progress or async. If the is pending for a time in
135
  * future, its scheduled date will be returned as a timestamp. If it is currently being run, or an
136
  * async action sitting in the queue waiting to be processed, in which case boolean true will be
137
  * returned. Or there may be no async, in-progress or pending action for this hook, in which case,
191
  * 'orderby' => 'date' - accepted values are 'hook', 'group', 'modified', or 'date'
192
  * 'order' => 'ASC'
193
  *
194
+ * @param string $return_format OBJECT, ARRAY_A, or ids.
195
  *
196
  * @return array
197
  */
234
  * timezone when instantiating datetimes rather than leaving it up to
235
  * the PHP default.
236
  *
237
+ * @param mixed $date_string A date/time string. Valid formats are explained in http://php.net/manual/en/datetime.formats.php.
238
+ * @param string $timezone A timezone identifier, like UTC or Europe/Lisbon. The list of valid identifiers is available http://php.net/manual/en/timezones.php.
239
  *
240
  * @return ActionScheduler_DateTime
241
  */
lite/includes/pro-features.php CHANGED
@@ -17,6 +17,12 @@ add_action( 'ig_es_sync_users_tabs_edd', 'ig_es_add_edd_tab_settings' );
17
 
18
  add_action( 'edit_form_advanced', 'add_spam_score_utm_link' );
19
 
 
 
 
 
 
 
20
  /**
21
  * Promote SMTP mailer for free
22
  *
@@ -35,7 +41,7 @@ function ig_es_mailers_promo( $mailers ) {
35
  'logo' => ES_PLUGIN_URL . 'lite/admin/images/smtp.png',
36
  'is_premium' => true,
37
  'url' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'smtp_mailer' )
38
- )
39
  );
40
 
41
  }
@@ -60,62 +66,62 @@ function render_user_permissions_settings_fields_premium() {
60
  ob_start();
61
  ?>
62
 
63
- <div class="text-center py-4 lg:px-4 my-8">
64
- <div class="p-2 bg-indigo-800 items-center text-indigo-100 leading-none lg:rounded-full flex lg:inline-flex mx-4 leading-normal" role="alert">
65
- <span class="font-semibold text-left flex-auto">
66
- Customize user roles permissions with <a href="<?php echo $url; ?>" target="_blank" class="text-indigo-400">Email Subscribers PRO</a>
67
- </span>
68
- </div>
69
- </div>
70
-
71
-
72
- <table class="min-w-full rounded-lg">
73
- <thead>
74
- <tr class="bg-gray-100 text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
75
- <th class="px-5 py-4"><?php _e( 'Roles', 'email-subscribers' ); ?></th>
76
- <th class="px-2 py-4 text-center"><?php _e( 'Audience', 'email-subscribers' ); ?></th>
77
- <th class="px-2 py-4 text-center"><?php _e( 'Forms', 'email-subscribers' ); ?></th>
78
- <th class="px-2 py-4 text-center"><?php _e( 'Campaigns', 'email-subscribers' ); ?></th>
79
- <th class="px-2 py-4 text-center"><?php _e( 'Reports', 'email-subscribers' ); ?></th>
80
- <th class="px-2 py-4 text-center"><?php _e( 'Sequences', 'email-subscribers' ); ?></th>
81
- <th class="px-2 py-4 text-center"><?php _e( 'Workflows', 'email-subscribers' ); ?></th>
82
- </tr>
83
- </thead>
84
- <tbody class="bg-white">
85
- <?php foreach ( $roles as $key => $value ) {
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
86
  ?>
87
- <tr class="border-b border-gray-200">
88
- <td class="pl-8 py-4 ">
89
- <div class="flex items-center">
90
- <div class="flex-shrink-0">
91
- <span class="text-sm leading-5 font-medium text-center text-gray-800"><?php echo $value; ?></span>
92
- </div>
93
- </div>
94
- </td>
95
- <td class="whitespace-no-wrap text-center">
96
- <input type="checkbox" name="" disabled <?php ! empty( $user_roles['audience'][ $key ] ) ? checked( 'yes', $user_roles['audience'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
97
- </td>
98
- <td class="whitespace-no-wrap text-center">
99
- <input type="checkbox" name="" disabled<?php ! empty( $user_roles['forms'][ $key ] ) ? checked( 'yes', $user_roles['forms'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
100
- </td>
101
- <td class="whitespace-no-wrap text-center">
102
- <input type="checkbox" name="" disabled <?php ! empty( $user_roles['campaigns'][ $key ] ) ? checked( 'yes', $user_roles['campaigns'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
103
- </td>
104
- <td class="whitespace-no-wrap text-center">
105
- <input type="checkbox" name="" disabled <?php ! empty( $user_roles['reports'][ $key ] ) ? checked( 'yes', $user_roles['reports'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
106
- </td>
107
- <td class="whitespace-no-wrap text-center">
108
- <input type="checkbox" name="" disabled <?php ! empty( $user_roles['sequences'][ $key ] ) ? checked( 'yes', $user_roles['sequences'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
109
- </td>
110
- <td class="whitespace-no-wrap text-center">
111
- <input type="checkbox" name="" disabled <?php ! empty( $user_roles['workflows'][ $key ] ) ? checked( 'yes', $user_roles['workflows'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
112
- </td>
113
- </tr>
114
- <?php
115
- }
116
- ?>
117
- </tbody>
118
- </table>
119
 
120
 
121
  <?php
@@ -142,28 +148,63 @@ function ig_es_add_upsale( $fields ) {
142
 
143
  if ( ! ES()->is_pro() ) {
144
 
 
 
 
 
 
145
  // General Settings
146
  $track_link_click = array(
147
  'ig_es_track_link_click' => array(
148
- 'id' => 'ig_es_track_link_click_p',
149
- 'name' => __( 'Track Clicks', 'email-subscribers' ),
150
- 'type' => 'checkbox',
151
- 'default' => 'no',
152
- 'is_premium' => true,
153
- 'link' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'track_clicks' ) ),
154
- 'disabled' => true
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
155
  )
156
  );
157
 
158
  $general_fields = $fields['general'];
159
 
160
  $general_fields = ig_es_array_insert_after( $general_fields, 'ig_es_track_email_opens', $track_link_click );
 
161
 
162
  $fields['general'] = $general_fields;
163
  }
164
 
165
  if ( ! ES()->is_premium() ) {
166
 
 
 
 
 
 
 
167
  // Security Settings
168
  $fake_domains['ig_es_enable_known_attackers_domains'] = array(
169
  'id' => 'ig_es_enable_known_attackers_domains_p',
@@ -173,7 +214,7 @@ function ig_es_add_upsale( $fields ) {
173
  'default' => 'no',
174
  'is_premium' => true,
175
  'link' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'known_attackers' ) ),
176
- 'disabled' => true,
177
  );
178
 
179
  $managed_blocked_domains['ig_es_enable_disposable_domains'] = array(
@@ -184,19 +225,21 @@ function ig_es_add_upsale( $fields ) {
184
  'default' => 'no',
185
  'is_premium' => true,
186
  'link' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'disposable_domains' ) ),
187
- 'disabled' => true,
188
  );
189
 
190
  //add captcha setting
191
  $field_captcha['enable_captcha'] = array(
192
- 'id' => 'ig_es_enable_captcha_p',
193
- 'name' => __( 'Enable Captcha', 'email-subscribers' ),
194
- 'info' => __( 'Show a captcha in subscription forms to protect from bot signups.', 'email-subscribers' ),
195
- 'type' => 'checkbox',
196
- 'default' => 'no',
197
- 'is_premium' => true,
198
- 'link' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'enable_captcha' ) ),
199
- 'disabled' => true,
 
 
200
  );
201
 
202
  $fields['security_settings'] = array_merge( $fields['security_settings'], $fake_domains, $managed_blocked_domains, $field_captcha );
@@ -309,23 +352,23 @@ function ig_es_add_comments_tab_settings( $tab_options ) {
309
 
310
  ob_start();
311
  ?>
312
- <div class="">
313
- <h2><?php _e( 'Sync Comment Users', 'email-subscribers' ) ?></h2>
314
- <p><?php _e( 'Quickly add to your mailing list when someone post a comment on your website.', 'email-subscribers' ) ?></p>
315
- <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
316
- <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=comment_sync&utm_campaign=es_upsale#sync_comment_users"><?php _e( 'Email Subscribers Starter', 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable Comment user sync and select the list in which you want to add people whenever someone post a
317
- comment.', 'email-subscribers' ) ?></p>
318
- <hr>
319
- <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=comment_sync&utm_campaign=es_upsale#sync_comment_users"><?php _e( 'Email Subscribers Starter', 'email-subscribers' ) ?></a> <?php _e( 'now', 'email-subscribers' ) ?></p>
320
- </div>
321
  <?php
322
 
323
  $content = ob_get_clean();
324
 
325
  ?>
326
- <a target="_blank" href="https://www.icegram.com/quickly-add-people-to-your-mailing-list-whenever-someone-post-a-comment/?utm_source=in_app&utm_medium=es_comment_upsale&utm_campaign=es_upsale#sync_comment_users">
327
- <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/es-comments.png' ?> "/>
328
- </a>
329
  <?php
330
  ES_Common::prepare_information_box( $info, $content );
331
  }
@@ -338,206 +381,415 @@ function ig_es_add_woocommerce_tab_settings( $tab_options ) {
338
 
339
  ob_start();
340
  ?>
341
- <div class="">
342
- <h2><?php _e( 'Sync WooCommerce Customers', 'email-subscribers' ) ?></h2>
343
- <p><?php _e( 'Are you using WooCommerce for your online business? You can use this integration to add to a specific list whenever someone make a purchase from you', 'email-subscribers' ) ?></p>
344
- <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
345
- <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=woocommerce_sync&utm_campaign=es_upsale#sync_woocommerce_customers"><?php _e( 'Email Subscribers Starter', 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable WooCommerce sync and select the list in which you want to add people whenever they
346
- purchase something
347
- from you.', 'email-subscribers' ) ?></p>
348
- <hr>
349
- <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=woocommerce_sync&utm_campaign=es_upsale#sync_woocommerce_customers">Email Subscribers Starter</a> Now</p>
350
- </div>
351
- <?php $content = ob_get_clean(); ?>
352
-
353
- <a target="_blank" href="https://www.icegram.com/quickly-add-customers-to-your-mailing-list/?utm_source=in_app&utm_medium=woocommerce_sync&utm_campaign=es_upsale#sync_woocommerce_customers">
354
- <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/woocommerce-sync.png' ?> "/>
355
- </a>
356
 
357
- <?php
358
 
359
- ES_Common::prepare_information_box( $info, $content );
360
 
361
- ?>
362
 
363
- <?php
364
- }
365
 
366
- function ig_es_add_cf7_tab_settings( $tab_options ) {
367
 
368
- $info = array(
369
- 'type' => 'info',
370
- );
371
 
372
- ob_start();
373
- ?>
374
- <div class="">
375
- <h2><?php _e( 'Sync Contact Form 7 users', 'email-subscribers' ) ?></h2>
376
- <p><?php _e( 'Are you using Contact Form 7 for your list building? You can use this integration to add to a specific list whenever new subscribers added from Contact Form 7', 'email-subscribers' ) ?></p>
377
- <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
378
- <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=cf7_sync&utm_campaign=es_upsale#sync_cf7_subscribers"><?php _e( 'Email Subscribers Starter',
379
- 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable Contact form 7 sync and select the list in which you want to add people whenever they fill any of the Contact Form.', 'email-subscribers' ) ?></p>
380
- <hr>
381
- <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=cf7_sync&utm_campaign=es_upsale#sync_cf7_subscribers">Email Subscribers Starter</a> Now</p>
382
- </div>
383
- <?php $content = ob_get_clean(); ?>
384
-
385
- <a target="_blank" href="https://www.icegram.com/add-people-to-your-mailing-list-whenever-they-submit-any-of-the-contact-form-7-form/?utm_source=in_app&utm_medium=cf7_sync&utm_campaign=es_upsale#sync_cf7_subscribers">
386
- <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/cf7-sync.png' ?> "/>
387
- </a>
388
 
389
- <?php
390
 
391
- ES_Common::prepare_information_box( $info, $content );
392
 
393
- ?>
394
 
395
- <?php
396
- }
397
 
398
- function ig_es_add_give_tab_settings( $tab_options ) {
399
 
400
- $info = array(
401
- 'type' => 'info',
402
- );
403
 
404
- ob_start();
405
- ?>
406
- <div class="">
407
- <h2><?php _e( 'Sync Donors', 'email-subscribers' ) ?></h2>
408
- <p><?php _e( 'We found that you are using Give WordPress plugin to collect donations. Now, with this integration, you can add your donors to any of your subscriber list and send them Newsletters in future.', 'email-subscribers' ) ?></p>
409
- <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
410
- <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=give_sync&utm_campaign=es_upsale#sync_give_donors"><?php _e( 'Email Subscribers Starter',
411
- 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable Give integration and select the list in which you want to add people whenever they make donation.', 'email-subscribers' ) ?></p>
412
- <hr>
413
- <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=give_sync&utm_campaign=es_upsale#sync_give_donors">Email Subscribers Starter</a> Now</p>
414
- </div>
415
- <?php $content = ob_get_clean(); ?>
416
-
417
- <a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=give_sync&utm_campaign=es_upsale#sync_give_donors">
418
- <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/give-sync.png' ?> "/>
419
- </a>
420
 
421
- <?php
422
 
423
- ES_Common::prepare_information_box( $info, $content );
424
 
425
- ?>
426
 
427
- <?php
428
- }
429
 
430
- function ig_es_add_wpforms_tab_settings( $tab_options ) {
431
 
432
- $info = array(
433
- 'type' => 'info',
434
- );
435
 
436
- ob_start();
437
- ?>
438
- <div class="">
439
- <h2><?php _e( 'Sync Donors', 'email-subscribers' ) ?></h2>
440
- <p><?php _e( 'Are you using Give WordPress plugin to collect donations? Want to send Thank You email to them? You can use this integration to be in touch with them.', 'email-subscribers' ) ?></p>
441
- <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
442
- <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=wpforms_sync&utm_campaign=es_upsale#sync_wpforms_contacts"><?php _e( 'Email Subscribers Starter',
443
- 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable Give sync and select the list in which you want to add people whenever they make donation.', 'email-subscribers' ) ?></p>
444
- <hr>
445
- <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=wpforms_sync&utm_campaign=es_upsale#sync_wpforms_contacts">Email Subscribers Starter</a> Now</p>
446
- </div>
447
- <?php $content = ob_get_clean(); ?>
448
-
449
- <a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=wpforms_sync&utm_campaign=es_upsale#sync_wpforms_contacts">
450
- <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/wpforms-sync.png' ?> "/>
451
- </a>
452
 
453
- <?php
454
 
455
- ES_Common::prepare_information_box( $info, $content );
456
 
457
- ?>
458
 
459
- <?php
460
- }
461
 
462
- function ig_es_add_ninja_forms_tab_settings( $tab_options ) {
463
 
464
- $info = array(
465
- 'type' => 'info',
466
- );
467
 
468
- ob_start();
469
- ?>
470
- <div class="">
471
- <h2><?php _e( 'Sync Contacts', 'email-subscribers' ) ?></h2>
472
- <p><?php _e( 'We found that you are using Ninja Forms. Want to add your contact to a mailing list? You can use this integration to add your contact to add into mailing list', 'email-subscribers' ) ?></p>
473
- <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
474
- <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=ninja_forms_sync&utm_campaign=es_upsale#sync_ninja_forms_contacts"><?php _e( 'Email Subscribers Starter',
475
- 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable Give sync and select the list in which you want to add people whenever they make donation.', 'email-subscribers' ) ?></p>
476
- <hr>
477
- <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=ninja_forms_sync&utm_campaign=es_upsale#sync_ninja_forms_contacts">Email Subscribers Starter</a> Now</p>
478
- </div>
479
- <?php $content = ob_get_clean(); ?>
480
-
481
- <a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=ninja_forms_sync&utm_campaign=es_upsale#sync_ninja_forms_contacts">
482
- <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/ninja-forms-sync.png' ?> "/>
483
- </a>
484
 
485
- <?php
486
 
487
- ES_Common::prepare_information_box( $info, $content );
488
 
489
- ?>
490
 
491
- <?php
492
- }
493
 
494
- function ig_es_add_edd_tab_settings( $tab_options ) {
495
 
496
- $info = array(
497
- 'type' => 'info',
498
- );
499
 
500
- ob_start();
501
- ?>
502
- <div class="">
503
- <h2><?php _e( 'Sync Customers', 'email-subscribers' ) ?></h2>
504
- <p><?php _e( 'We found that you are using EDD to sell digital goods online. You can use this integration to send Newsletters/ Post Notifications to your customers.', 'email-subscribers' ) ?></p>
505
- <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
506
- <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=edd_sync&utm_campaign=es_upsale#sync_edd_customers"><?php _e( 'Email Subscribers Starter',
507
- 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable EDD sync and select the list in which you want to add people whenever they purchase something from you.', 'email-subscribers' ) ?></p>
508
- <hr>
509
- <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=edd_sync&utm_campaign=es_upsale#sync_edd_customers">Email Subscribers Starter</a> Now</p>
510
- </div>
511
- <?php $content = ob_get_clean(); ?>
512
-
513
- <a target="_blank" href="https://www.icegram.com/email-subscribers/?utm_source=in_app&utm_medium=edd_sync&utm_campaign=es_upsale#sync_edd_customers">
514
- <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/edd-sync.png' ?> "/>
515
- </a>
516
 
517
- <?php
518
 
519
- ES_Common::prepare_information_box( $info, $content );
520
 
521
- ?>
522
 
523
- <?php
524
- }
525
 
526
 
527
- function add_spam_score_utm_link() {
528
- global $post, $pagenow, $ig_es_tracker;
529
- if ( $post->post_type !== 'es_template' ) {
530
- return;
 
 
 
 
 
 
 
 
 
531
  }
532
 
 
 
 
 
 
 
 
 
 
533
  if ( ! ES()->is_starter() ) {
 
 
 
 
 
 
 
534
  ?>
535
- <script>
536
- jQuery('#submitdiv').after('<div class="es_upsale"><a style="text-decoration:none;" target="_blank" href="https://www.icegram.com/documentation/how-ready-made-template-in-in-email-subscribers-look/?utm_source=in_app&utm_medium=es_template&utm_campaign=es_upsale"><img title="Get readymade templates" style="width:100%;border:0.3em #d46307 solid" src="<?php echo ES_PLUGIN_URL?>lite/admin/images/starter-tmpl.png"/><p style="background: #d46307; color: #FFF; padding: 4px; width: 100%; text-align:center">Get readymade beautiful email templates</p></a></div>');
537
- </script>
538
- <?php
539
- }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
540
  }
541
 
 
542
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
543
 
17
 
18
  add_action( 'edit_form_advanced', 'add_spam_score_utm_link' );
19
 
20
+ add_action( 'ig_es_add_additional_options', 'ig_es_add_captcha_option', 10, 1 );
21
+ add_action( 'ig_es_after_broadcast_content_left_pan_settings','ig_es_additional_send_email_option');
22
+ add_action( 'ig_es_after_broadcast_tracking_options_settings', 'ig_es_additional_track_option');
23
+ add_action( 'ig_es_broadcast_scheduling_options_settings', 'ig_es_additional_schedule_option');
24
+ add_action( 'ig_es_after_broadcast_right_pan_settings', 'ig_es_additional_spam_score_option');
25
+
26
  /**
27
  * Promote SMTP mailer for free
28
  *
41
  'logo' => ES_PLUGIN_URL . 'lite/admin/images/smtp.png',
42
  'is_premium' => true,
43
  'url' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'smtp_mailer' )
44
+ )
45
  );
46
 
47
  }
66
  ob_start();
67
  ?>
68
 
69
+ <div class="text-center py-4 lg:px-4 my-8">
70
+ <div class="p-2 bg-indigo-800 items-center text-indigo-100 leading-none lg:rounded-full flex lg:inline-flex mx-4 leading-normal" role="alert">
71
+ <span class="font-semibold text-left flex-auto">
72
+ Customize user roles permissions with <a href="<?php echo $url; ?>" target="_blank" class="text-indigo-400">Email Subscribers PRO</a>
73
+ </span>
74
+ </div>
75
+ </div>
76
+
77
+
78
+ <table class="min-w-full rounded-lg">
79
+ <thead>
80
+ <tr class="bg-gray-100 text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
81
+ <th class="px-5 py-4"><?php _e( 'Roles', 'email-subscribers' ); ?></th>
82
+ <th class="px-2 py-4 text-center"><?php _e( 'Audience', 'email-subscribers' ); ?></th>
83
+ <th class="px-2 py-4 text-center"><?php _e( 'Forms', 'email-subscribers' ); ?></th>
84
+ <th class="px-2 py-4 text-center"><?php _e( 'Campaigns', 'email-subscribers' ); ?></th>
85
+ <th class="px-2 py-4 text-center"><?php _e( 'Reports', 'email-subscribers' ); ?></th>
86
+ <th class="px-2 py-4 text-center"><?php _e( 'Sequences', 'email-subscribers' ); ?></th>
87
+ <th class="px-2 py-4 text-center"><?php _e( 'Workflows', 'email-subscribers' ); ?></th>
88
+ </tr>
89
+ </thead>
90
+ <tbody class="bg-white">
91
+ <?php foreach ( $roles as $key => $value ) {
92
+ ?>
93
+ <tr class="border-b border-gray-200">
94
+ <td class="pl-8 py-4 ">
95
+ <div class="flex items-center">
96
+ <div class="flex-shrink-0">
97
+ <span class="text-sm leading-5 font-medium text-center text-gray-800"><?php echo $value; ?></span>
98
+ </div>
99
+ </div>
100
+ </td>
101
+ <td class="whitespace-no-wrap text-center">
102
+ <input type="checkbox" name="" disabled <?php ! empty( $user_roles['audience'][ $key ] ) ? checked( 'yes', $user_roles['audience'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
103
+ </td>
104
+ <td class="whitespace-no-wrap text-center">
105
+ <input type="checkbox" name="" disabled<?php ! empty( $user_roles['forms'][ $key ] ) ? checked( 'yes', $user_roles['forms'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
106
+ </td>
107
+ <td class="whitespace-no-wrap text-center">
108
+ <input type="checkbox" name="" disabled <?php ! empty( $user_roles['campaigns'][ $key ] ) ? checked( 'yes', $user_roles['campaigns'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
109
+ </td>
110
+ <td class="whitespace-no-wrap text-center">
111
+ <input type="checkbox" name="" disabled <?php ! empty( $user_roles['reports'][ $key ] ) ? checked( 'yes', $user_roles['reports'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
112
+ </td>
113
+ <td class="whitespace-no-wrap text-center">
114
+ <input type="checkbox" name="" disabled <?php ! empty( $user_roles['sequences'][ $key ] ) ? checked( 'yes', $user_roles['sequences'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
115
+ </td>
116
+ <td class="whitespace-no-wrap text-center">
117
+ <input type="checkbox" name="" disabled <?php ! empty( $user_roles['workflows'][ $key ] ) ? checked( 'yes', $user_roles['workflows'][ $key ] ) : '' ?> value="yes" class=" form-checkbox text-indigo-600">
118
+ </td>
119
+ </tr>
120
+ <?php
121
+ }
122
  ?>
123
+ </tbody>
124
+ </table>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
125
 
126
 
127
  <?php
148
 
149
  if ( ! ES()->is_pro() ) {
150
 
151
+ $utm_args = array(
152
+ 'utm_medium' => 'track_clicks'
153
+ );
154
+
155
+ $premium_url = ES_Common::get_utm_tracking_url( $utm_args );
156
  // General Settings
157
  $track_link_click = array(
158
  'ig_es_track_link_click' => array(
159
+ 'id' => 'ig_es_track_link_click_p',
160
+ 'name' => __( 'Track Clicks', 'email-subscribers' ),
161
+ 'type' => 'checkbox',
162
+ 'default' => 'no',
163
+ 'is_premium' => true,
164
+ 'link' => $premium_url,
165
+ 'disabled' => true,
166
+ 'upgrade_title' => sprintf( __( "<a href='%s' target='_blank'>Upgrade to ES PRO</a>", 'email-subscribers' ), $premium_url ),
167
+ 'upgrade_desc' => __( 'Get insights about link clicks. See who are clicking on which links?', 'email-subscribers' )
168
+ )
169
+ );
170
+
171
+ $utm_args = array(
172
+ 'utm_medium' => 'track_utm'
173
+ );
174
+
175
+ $premium_url = ES_Common::get_utm_tracking_url( $utm_args );
176
+
177
+ $track_utm = array(
178
+ 'ig_es_track_utm' => array(
179
+ 'id' => 'ig_es_track_utm',
180
+ 'name' => __( 'UTM Tracking', 'email-subscribers' ),
181
+ 'type' => 'checkbox',
182
+ 'default' => 'no',
183
+ 'is_premium' => true,
184
+ 'link' => $premium_url,
185
+ 'disabled' => true,
186
+ 'upgrade_title' => sprintf( __( "<a href='%s' target='_blank'>Upgrade to ES PRO</a>", 'email-subscribers' ), $premium_url ),
187
+ 'upgrade_desc' => __( 'Get insights about UTM tracking.', 'email-subscribers' )
188
+
189
  )
190
  );
191
 
192
  $general_fields = $fields['general'];
193
 
194
  $general_fields = ig_es_array_insert_after( $general_fields, 'ig_es_track_email_opens', $track_link_click );
195
+ $general_fields = ig_es_array_insert_after( $general_fields, 'ig_es_track_link_click', $track_utm );
196
 
197
  $fields['general'] = $general_fields;
198
  }
199
 
200
  if ( ! ES()->is_premium() ) {
201
 
202
+ $utm_args = array(
203
+ 'utm_medium' => 'enable_captcha'
204
+ );
205
+
206
+ $premium_url = ES_Common::get_utm_tracking_url( $utm_args );
207
+
208
  // Security Settings
209
  $fake_domains['ig_es_enable_known_attackers_domains'] = array(
210
  'id' => 'ig_es_enable_known_attackers_domains_p',
214
  'default' => 'no',
215
  'is_premium' => true,
216
  'link' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'known_attackers' ) ),
217
+ 'disabled' => true
218
  );
219
 
220
  $managed_blocked_domains['ig_es_enable_disposable_domains'] = array(
225
  'default' => 'no',
226
  'is_premium' => true,
227
  'link' => ES_Common::get_utm_tracking_url( array( 'utm_medium' => 'disposable_domains' ) ),
228
+ 'disabled' => true
229
  );
230
 
231
  //add captcha setting
232
  $field_captcha['enable_captcha'] = array(
233
+ 'id' => 'ig_es_enable_captcha_p',
234
+ 'name' => __( 'Enable Captcha', 'email-subscribers' ),
235
+ 'info' => __( 'Show a captcha in subscription forms to protect from bot signups.', 'email-subscribers' ),
236
+ 'type' => 'checkbox',
237
+ 'default' => 'no',
238
+ 'is_premium' => true,
239
+ 'link' => $premium_url,
240
+ 'disabled' => true,
241
+ 'upgrade_title' => sprintf( __( "<a href='%s' target='_blank'>Upgrade to ES PRO</a>", 'email-subscribers' ), $premium_url ),
242
+ 'upgrade_desc' => __( 'Secure your form and avoid spam signups with form Captcha', 'email-subscribers' ),
243
  );
244
 
245
  $fields['security_settings'] = array_merge( $fields['security_settings'], $fake_domains, $managed_blocked_domains, $field_captcha );
352
 
353
  ob_start();
354
  ?>
355
+ <div class="">
356
+ <h2><?php _e( 'Sync Comment Users', 'email-subscribers' ) ?></h2>
357
+ <p><?php _e( 'Quickly add to your mailing list when someone post a comment on your website.', 'email-subscribers' ) ?></p>
358
+ <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
359
+ <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=comment_sync&utm_campaign=es_upsale#sync_comment_users"><?php _e( 'Email Subscribers Starter', 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable Comment user sync and select the list in which you want to add people whenever someone post a
360
+ comment.', 'email-subscribers' ) ?></p>
361
+ <hr>
362
+ <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=comment_sync&utm_campaign=es_upsale#sync_comment_users"><?php _e( 'Email Subscribers Starter', 'email-subscribers' ) ?></a> <?php _e( 'now', 'email-subscribers' ) ?></p>
363
+ </div>
364
  <?php
365
 
366
  $content = ob_get_clean();
367
 
368
  ?>
369
+ <a target="_blank" href="https://www.icegram.com/quickly-add-people-to-your-mailing-list-whenever-someone-post-a-comment/?utm_source=in_app&utm_medium=es_comment_upsale&utm_campaign=es_upsale#sync_comment_users">
370
+ <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/es-comments.png' ?> "/>
371
+ </a>
372
  <?php
373
  ES_Common::prepare_information_box( $info, $content );
374
  }
381
 
382
  ob_start();
383
  ?>
384
+ <div class="">
385
+ <h2><?php _e( 'Sync WooCommerce Customers', 'email-subscribers' ) ?></h2>
386
+ <p><?php _e( 'Are you using WooCommerce for your online business? You can use this integration to add to a specific list whenever someone make a purchase from you', 'email-subscribers' ) ?></p>
387
+ <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
388
+ <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=woocommerce_sync&utm_campaign=es_upsale#sync_woocommerce_customers"><?php _e( 'Email Subscribers Starter', 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable WooCommerce sync and select the list in which you want to add people whenever they
389
+ purchase something
390
+ from you.', 'email-subscribers' ) ?></p>
391
+ <hr>
392
+ <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=woocommerce_sync&utm_campaign=es_upsale#sync_woocommerce_customers">Email Subscribers Starter</a> Now</p>
393
+ </div>
394
+ <?php $content = ob_get_clean(); ?>
395
+
396
+ <a target="_blank" href="https://www.icegram.com/quickly-add-customers-to-your-mailing-list/?utm_source=in_app&utm_medium=woocommerce_sync&utm_campaign=es_upsale#sync_woocommerce_customers">
397
+ <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/woocommerce-sync.png' ?> "/>
398
+ </a>
399
 
400
+ <?php
401
 
402
+ ES_Common::prepare_information_box( $info, $content );
403
 
404
+ ?>
405
 
406
+ <?php
407
+ }
408
 
409
+ function ig_es_add_cf7_tab_settings( $tab_options ) {
410
 
411
+ $info = array(
412
+ 'type' => 'info',
413
+ );
414
 
415
+ ob_start();
416
+ ?>
417
+ <div class="">
418
+ <h2><?php _e( 'Sync Contact Form 7 users', 'email-subscribers' ) ?></h2>
419
+ <p><?php _e( 'Are you using Contact Form 7 for your list building? You can use this integration to add to a specific list whenever new subscribers added from Contact Form 7', 'email-subscribers' ) ?></p>
420
+ <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
421
+ <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=cf7_sync&utm_campaign=es_upsale#sync_cf7_subscribers"><?php _e( 'Email Subscribers Starter',
422
+ 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable Contact form 7 sync and select the list in which you want to add people whenever they fill any of the Contact Form.', 'email-subscribers' ) ?></p>
423
+ <hr>
424
+ <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=cf7_sync&utm_campaign=es_upsale#sync_cf7_subscribers">Email Subscribers Starter</a> Now</p>
425
+ </div>
426
+ <?php $content = ob_get_clean(); ?>
427
+
428
+ <a target="_blank" href="https://www.icegram.com/add-people-to-your-mailing-list-whenever-they-submit-any-of-the-contact-form-7-form/?utm_source=in_app&utm_medium=cf7_sync&utm_campaign=es_upsale#sync_cf7_subscribers">
429
+ <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/cf7-sync.png' ?> "/>
430
+ </a>
431
 
432
+ <?php
433
 
434
+ ES_Common::prepare_information_box( $info, $content );
435
 
436
+ ?>
437
 
438
+ <?php
439
+ }
440
 
441
+ function ig_es_add_give_tab_settings( $tab_options ) {
442
 
443
+ $info = array(
444
+ 'type' => 'info',
445
+ );
446
 
447
+ ob_start();
448
+ ?>
449
+ <div class="">
450
+ <h2><?php _e( 'Sync Donors', 'email-subscribers' ) ?></h2>
451
+ <p><?php _e( 'We found that you are using Give WordPress plugin to collect donations. Now, with this integration, you can add your donors to any of your subscriber list and send them Newsletters in future.', 'email-subscribers' ) ?></p>
452
+ <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
453
+ <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=give_sync&utm_campaign=es_upsale#sync_give_donors"><?php _e( 'Email Subscribers Starter',
454
+ 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable Give integration and select the list in which you want to add people whenever they make donation.', 'email-subscribers' ) ?></p>
455
+ <hr>
456
+ <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=give_sync&utm_campaign=es_upsale#sync_give_donors">Email Subscribers Starter</a> Now</p>
457
+ </div>
458
+ <?php $content = ob_get_clean(); ?>
459
+
460
+ <a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=give_sync&utm_campaign=es_upsale#sync_give_donors">
461
+ <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/give-sync.png' ?> "/>
462
+ </a>
463
 
464
+ <?php
465
 
466
+ ES_Common::prepare_information_box( $info, $content );
467
 
468
+ ?>
469
 
470
+ <?php
471
+ }
472
 
473
+ function ig_es_add_wpforms_tab_settings( $tab_options ) {
474
 
475
+ $info = array(
476
+ 'type' => 'info',
477
+ );
478
 
479
+ ob_start();
480
+ ?>
481
+ <div class="">
482
+ <h2><?php _e( 'Sync Donors', 'email-subscribers' ) ?></h2>
483
+ <p><?php _e( 'Are you using Give WordPress plugin to collect donations? Want to send Thank You email to them? You can use this integration to be in touch with them.', 'email-subscribers' ) ?></p>
484
+ <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
485
+ <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=wpforms_sync&utm_campaign=es_upsale#sync_wpforms_contacts"><?php _e( 'Email Subscribers Starter',
486
+ 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable Give sync and select the list in which you want to add people whenever they make donation.', 'email-subscribers' ) ?></p>
487
+ <hr>
488
+ <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=wpforms_sync&utm_campaign=es_upsale#sync_wpforms_contacts">Email Subscribers Starter</a> Now</p>
489
+ </div>
490
+ <?php $content = ob_get_clean(); ?>
491
+
492
+ <a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=wpforms_sync&utm_campaign=es_upsale#sync_wpforms_contacts">
493
+ <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/wpforms-sync.png' ?> "/>
494
+ </a>
495
 
496
+ <?php
497
 
498
+ ES_Common::prepare_information_box( $info, $content );
499
 
500
+ ?>
501
 
502
+ <?php
503
+ }
504
 
505
+ function ig_es_add_ninja_forms_tab_settings( $tab_options ) {
506
 
507
+ $info = array(
508
+ 'type' => 'info',
509
+ );
510
 
511
+ ob_start();
512
+ ?>
513
+ <div class="">
514
+ <h2><?php _e( 'Sync Contacts', 'email-subscribers' ) ?></h2>
515
+ <p><?php _e( 'We found that you are using Ninja Forms. Want to add your contact to a mailing list? You can use this integration to add your contact to add into mailing list', 'email-subscribers' ) ?></p>
516
+ <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
517
+ <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=ninja_forms_sync&utm_campaign=es_upsale#sync_ninja_forms_contacts"><?php _e( 'Email Subscribers Starter',
518
+ 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable Give sync and select the list in which you want to add people whenever they make donation.', 'email-subscribers' ) ?></p>
519
+ <hr>
520
+ <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=ninja_forms_sync&utm_campaign=es_upsale#sync_ninja_forms_contacts">Email Subscribers Starter</a> Now</p>
521
+ </div>
522
+ <?php $content = ob_get_clean(); ?>
523
+
524
+ <a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=ninja_forms_sync&utm_campaign=es_upsale#sync_ninja_forms_contacts">
525
+ <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/ninja-forms-sync.png' ?> "/>
526
+ </a>
527
 
528
+ <?php
529
 
530
+ ES_Common::prepare_information_box( $info, $content );
531
 
532
+ ?>
533
 
534
+ <?php
535
+ }
536
 
537
+ function ig_es_add_edd_tab_settings( $tab_options ) {
538
 
539
+ $info = array(
540
+ 'type' => 'info',
541
+ );
542
 
543
+ ob_start();
544
+ ?>
545
+ <div class="">
546
+ <h2><?php _e( 'Sync Customers', 'email-subscribers' ) ?></h2>
547
+ <p><?php _e( 'We found that you are using EDD to sell digital goods online. You can use this integration to send Newsletters/ Post Notifications to your customers.', 'email-subscribers' ) ?></p>
548
+ <h2><?php _e( 'How to setup?', 'email-subscribers' ) ?></h2>
549
+ <p><?php _e( 'Once you upgrade to ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-starter/?utm_source=in_app&utm_medium=edd_sync&utm_campaign=es_upsale#sync_edd_customers"><?php _e( 'Email Subscribers Starter',
550
+ 'email-subscribers' ) ?></a>, <?php _e( 'you will have settings panel where you need to enable EDD sync and select the list in which you want to add people whenever they purchase something from you.', 'email-subscribers' ) ?></p>
551
+ <hr>
552
+ <p class="help"><?php _e( 'Checkout ', 'email-subscribers' ) ?><a target="_blank" href="https://www.icegram.com/email-subscribers-pricing/?utm_source=in_app&utm_medium=edd_sync&utm_campaign=es_upsale#sync_edd_customers">Email Subscribers Starter</a> Now</p>
553
+ </div>
554
+ <?php $content = ob_get_clean(); ?>
555
+
556
+ <a target="_blank" href="https://www.icegram.com/email-subscribers/?utm_source=in_app&utm_medium=edd_sync&utm_campaign=es_upsale#sync_edd_customers">
557
+ <img src=" <?php echo ES_PLUGIN_URL . 'lite/admin/images/edd-sync.png' ?> "/>
558
+ </a>
559
 
560
+ <?php
561
 
562
+ ES_Common::prepare_information_box( $info, $content );
563
 
564
+ ?>
565
 
566
+ <?php
567
+ }
568
 
569
 
570
+ function add_spam_score_utm_link() {
571
+ global $post, $pagenow, $ig_es_tracker;
572
+ if ( $post->post_type !== 'es_template' ) {
573
+ return;
574
+ }
575
+
576
+ if ( ! ES()->is_starter() ) {
577
+ ?>
578
+ <script>
579
+ jQuery('#submitdiv').after('<div class="es_upsale"><a style="text-decoration:none;" target="_blank" href="https://www.icegram.com/documentation/how-ready-made-template-in-in-email-subscribers-look/?utm_source=in_app&utm_medium=es_template&utm_campaign=es_upsale"><img title="Get readymade templates" style="width:100%;border:0.3em #d46307 solid" src="<?php echo ES_PLUGIN_URL?>lite/admin/images/starter-tmpl.png"/><p style="background: #d46307; color: #FFF; padding: 4px; width: 100%; text-align:center">Get readymade beautiful email templates</p></a></div>');
580
+ </script>
581
+ <?php
582
+ }
583
  }
584
 
585
+ /**
586
+ * Upsale ES PRO on Form Captcha
587
+ *
588
+ * @param $form_data
589
+ *
590
+ * @since 4.4.7
591
+ */
592
+ function ig_es_add_captcha_option( $form_data ) {
593
+
594
  if ( ! ES()->is_starter() ) {
595
+
596
+ $utm_args = array(
597
+ "utm_medium" => "es_form_captcha"
598
+ );
599
+
600
+ $pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
601
+
602
  ?>
603
+
604
+ <div class="flex border-b border-gray-100 ">
605
+ <div class="w-2/5 mr-16">
606
+ <div class="flex flex-row w-full">
607
+ <div class="flex w-2/4">
608
+ <div class="ml-4 mr-8 mr-4 pt-4 mb-2">
609
+ <label for="tag-link"><span class="block ml-4 pr-4 text-sm font-medium text-gray-600 pb-2"><?php echo __( 'Enable Captcha' ); ?></span></label>
610
+ <p class="italic text-xs text-gray-400 mt-2 ml-4 leading-snug pb-4"><?php _e( 'Show a captcha to protect from bot signups.', 'email-subscribers' ); ?></p>
611
+ </div>
612
+ </div>
613
+ <div class="flex">
614
+ <div class="ml-16 mb-4 mr-4 mt-12">
615
+ <label for="captcha" class=" inline-flex items-center cursor-pointer">
616
+ <span class="relative">
617
+ <span class="relative es-mail-toggle-line block w-10 h-6 bg-gray-300 rounded-full shadow-inner"></span>
618
+ <span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-4 h-4 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline "></span>
619
+ </span>
620
+ </label>
621
+ </div>
622
+ </div>
623
+ </div>
624
+ </div>
625
+
626
+ <div class="w-3/6 mt-3.5 pr-4">
627
+ <div class="inline-flex rounded-md bg-teal-50 px-2 pt-1 h-20 w-full">
628
+ <div class="px-2 pt-2 pb-2">
629
+ <div class="flex">
630
+ <div class="flex-shrink-0">
631
+ <svg class='h-5 w-5 text-teal-400' fill='currentColor' viewBox='0 0 20 20'>
632
+ <path fill-rule='evenodd' d='M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z' clip-rule='evenodd'/>
633
+ </svg>
634
+ </div>
635
+ <div class="ml-3">
636
+ <h3 class="text-sm leading-5 font-medium text-blue-800">
637
+ <?php _e( sprintf("<a href='%s' target='_blank'>Upgrade to ES PRO</a>", $pricing_url), 'email-subscribers' ); ?>
638
+ </h3>
639
+ <div class="mt-2 text-sm leading-5 text-teal-700">
640
+ <p>
641
+ <?php _e( 'Secure your form and avoid spam signups with form Captcha', 'email-subscribers' ); ?>
642
+ </p>
643
+ </div>
644
+ </div>
645
+ </div>
646
+ </div>
647
+ </div>
648
+ </div>
649
+ </div>
650
+ <?php }
651
+ }
652
+
653
+ function ig_es_additional_send_email_option() {
654
+
655
+ if ( ! ES()->is_pro() ) { ?>
656
+
657
+ <div>
658
+ <input type="radio" name="preview_option" disabled="disabled" class="form-radio" id="preview_in_email" value="" >
659
+ <label class=" text-sm font-normal leading-5 text-gray-700"><?php echo esc_html__( 'Email', 'email-subscribers' ); ?><span class="cursor-auto mx-2 px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800"><?php _e('Premium','email-subscribers');?></span></label>
660
+ <div id="preview_in_email" class="display_email_field px-4">
661
+ <div class="flex py-2" >
662
+ <div class="flex w-5/6">
663
+ <input id="es_test_send_email" name="es_test_send_email" style="display: none;" class="border-gray-400 form-input text-sm relative rounded-md shadow-sm block w-3/4 sm:leading-5" placeholder="<?php echo esc_html__( 'Enter email', 'email-subscribers' ); ?>" />
664
+ </div>
665
+ </div>
666
+ </div>
667
+ <?php }
668
  }
669
 
670
+ function ig_es_additional_track_option() {
671
 
672
+ if ( ! ES()->is_pro() ) { ?>
673
+
674
+ <div class="flex w-full pt-3">
675
+ <div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'Link Tracking', 'email-subscribers' ); ?><span class="mx-2 px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800"><?php _e('Premium','email-subscribers');?></span>
676
+ </div>
677
+
678
+ <div>
679
+ <label for="enable_link_tracking" class=" inline-flex items-center cursor-pointer">
680
+ <span class="relative">
681
+ <span class="es-mail-toggle-line block w-8 h-5 bg-gray-300 rounded-full shadow-inner"></span>
682
+ <span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-3 h-3 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline"></span>
683
+ </span>
684
+ </label>
685
+ </div>
686
+ </div>
687
+
688
+ <div class="flex w-full pt-3 pb-3 border-b border-gray-200">
689
+ <div class="w-11/12 text-sm font-normal text-gray-600"><?php echo esc_html__( 'UTM Tracking', 'email-subscribers' ); ?><span class="mx-2 px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800"><?php _e('Premium','email-subscribers');?></span>
690
+ </div>
691
+
692
+ <div >
693
+ <label for="enable_utm_tracking" class=" inline-flex items-center cursor-pointer">
694
+ <span class="relative">
695
+ <span class="es-mail-toggle-line block w-8 h-5 bg-gray-300 rounded-full shadow-inner"></span>
696
+ <span class="es-mail-toggle-dot absolute transition-all duration-300 ease-in-out block w-3 h-3 mt-1 ml-1 bg-white rounded-full shadow inset-y-0 left-0 focus-within:shadow-outline"></span>
697
+ </span>
698
+ </label>
699
+ </div>
700
+ </div>
701
+
702
+
703
+ <?php }
704
+
705
+ }
706
+
707
+ function ig_es_additional_schedule_option(){
708
+
709
+ if ( ! ES()->is_pro() ) {
710
+
711
+ $utm_args = array(
712
+ 'utm_medium' => 'broadcast_summary'
713
+ );
714
+
715
+ $premium_url = ES_Common::get_utm_tracking_url( $utm_args );
716
+ ?>
717
+
718
+ <div class="block w-full px-4 py-2">
719
+ <span class="block text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Send Options', 'email-subscribers' ); ?><span class=" mx-2 px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800"><?php _e('Premium','email-subscribers');?></span></span>
720
+ <div class="py-2">
721
+ <input type="radio" class="form-radio" id="schedule_later" checked disabled>
722
+ <label for="schedule_later" class="text-sm font-normal text-gray-600"><?php echo esc_html__( 'Schedule for Later', 'email-subscribers' ); ?>
723
+ </label>
724
+ <br>
725
+ <div id="schedule_later" class="px-6">
726
+ <div class="flex pt-4" >
727
+ <div class="flex w-full w-11/12">
728
+ <label class="text-sm font-normal leading-5 text-gray-700 pt-1"><?php echo esc_html__( 'Date', 'email-subscribers' ); ?></label>
729
+ <input class="cursor-pointer font-normal text-sm py-1 ml-2 form-input" type="text" value="<?php echo date_i18n('Y-m-d');?>" disabled>
730
+ </div>
731
+ <div>
732
+ <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="text-gray-600 w-5 h-5 my-1 ml-2"><path d="M8 7V3m8 4V3m-9 8h10M5 21h14a2 2 0 002-2V7a2 2 0 00-2-2H5a2 2 0 00-2 2v12a2 2 0 002 2z"></path></svg>
733
+ </div>
734
+ </div>
735
+ <div class="flex pt-3" >
736
+ <div class="flex w-11/12">
737
+ <label class="text-sm font-normal leading-5 text-gray-700 pt-1"><?php echo esc_html__( 'Time', 'email-subscribers' ); ?></label>
738
+ <input class="cursor-pointer font-normal text-sm py-1 ml-2 form-input" type="text" value="<?php echo date_i18n("h:i A");?>" disabled>
739
+
740
+ </div>
741
+ <div>
742
+ <svg fill="none" stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" class="text-gray-600 w-5 h-5 my-1 ml-2 float-right"><path d="M12 8v4l3 3m6-3a9 9 0 11-18 0 9 9 0 0118 0z"></path></svg>
743
+ </div>
744
+ </div>
745
+ <div class="pb-3">
746
+ <div class="block px-2 py-2 mt-4 bg-gray-300 rounded-md ">
747
+ <h3 class="text-gray-700 text-sm font-normal"><?php echo esc_html__( 'Local Time: ', 'email-subscribers' ); ?>&nbsp;&nbsp;
748
+ <?php echo date_i18n("Y-m-d H:i a" ) ?>
749
+ </h3>
750
+ </div>
751
+ </div>
752
+ </div>
753
+ <input type="radio" class="form-radio" id="send_now" disabled>
754
+ <label for="send_now" class="text-sm font-normal text-gray-600"><?php echo esc_html__( 'Send Now', 'email-subscribers' ); ?></label>
755
+
756
+ <div class="block py-2 mt-2 ">
757
+ <div class="inline-flex rounded-md bg-teal-100 px-2 pt-1 w-full">
758
+ <div class="px-2 pt-2 pb-2">
759
+ <div class="flex">
760
+ <div class="flex-shrink-0">
761
+ <svg class='h-5 w-5 text-teal-400' fill='currentColor' viewBox='0 0 20 20'>
762
+ <path fill-rule='evenodd' d='M18 10a8 8 0 11-16 0 8 8 0 0116 0zm-7-4a1 1 0 11-2 0 1 1 0 012 0zM9 9a1 1 0 000 2v3a1 1 0 001 1h1a1 1 0 100-2v-3a1 1 0 00-1-1H9z' clip-rule='evenodd'/>
763
+ </svg>
764
+ </div>
765
+ <div class="ml-3">
766
+ <h3 class="text-sm leading-5 font-medium text-blue-800">
767
+ <?php echo sprintf( __( "<a href='%s' target='_blank'>Upgrade to ES PRO</a>", 'email-subscribers' ), $premium_url ); ?>
768
+ </h3>
769
+ <div class="mt-2 text-sm leading-5 text-teal-700">
770
+ <p>
771
+ <?php _e( 'Link Tracking, UTM Tracking and Scheduling Options are part of Email Subscribers PRO', 'email-subscribers' ); ?>
772
+ </p>
773
+ </div>
774
+ </div>
775
+ </div>
776
+ </div>
777
+ </div>
778
+ </div>
779
+ </div>
780
+ </div>
781
+ <?php }
782
+ }
783
+
784
+ function ig_es_additional_spam_score_option() {
785
+ if ( ! ES()->is_pro() ) { ?>
786
+
787
+ <div class="block mx-4 my-3">
788
+ <span class="pt-3 text-sm font-medium leading-5 text-gray-700"><?php echo esc_html__( 'Get Spam Score','email-subscribers');?><span class=" mx-2 px-2 inline-flex text-xs leading-5 font-semibold rounded-full bg-green-100 text-green-800"><?php _e('Premium', 'email-subscribers' ); ?></span></span>
789
+ <button type="button" id="spam_score" disabled class="float-right es_spam rounded-md border text-indigo-600 border-indigo-500 text-sm leading-5 font-medium inline-flex justify-center px-3 py-1"><?php echo esc_html__( 'Check', 'email-subscribers' ); ?>
790
+ </button>
791
+ </div>
792
+ <?php }
793
+
794
+ }
795
 
lite/includes/workflows/admin/views/meta-box-trigger.php CHANGED
@@ -23,10 +23,11 @@ if ( ! ES()->is_premium() ) {
23
  'ig_es_comment_added' => __( 'Comment Added', 'email-subscribers' ),
24
  ),
25
  'Form' => array(
26
- 'ig_es_cf7_submitted' => __( 'Contact Form 7 Submitted', 'email-subscribers' ),
27
- 'ig_es_wpforms_submitted' => __( 'WP Form Submitted', 'email-subscribers' ),
28
- 'ig_es_ninja_forms_submitted' => __( 'Ninja Form Submitted', 'email-subscribers' ),
29
- 'ig_es_gravity_forms_submitted' => __( 'Gravity Form Submitted', 'email-subscribers' ),
 
30
  ),
31
  'Order' => array(
32
  'ig_es_wc_order_completed' => __( 'WooCommerce Order Completed', 'email-subscribers' ),
23
  'ig_es_comment_added' => __( 'Comment Added', 'email-subscribers' ),
24
  ),
25
  'Form' => array(
26
+ 'ig_es_cf7_submitted' => __( 'Contact Form 7 Submitted', 'email-subscribers' ),
27
+ 'ig_es_wpforms_submitted' => __( 'WP Form Submitted', 'email-subscribers' ),
28
+ 'ig_es_ninja_forms_submitted' => __( 'Ninja Form Submitted', 'email-subscribers' ),
29
+ 'ig_es_gravity_forms_submitted' => __( 'Gravity Form Submitted', 'email-subscribers' ),
30
+ 'ig_es_forminator_forms_submitted' => __( 'Forminator Form Submitted', 'email-subscribers' ),
31
  ),
32
  'Order' => array(
33
  'ig_es_wc_order_completed' => __( 'WooCommerce Order Completed', 'email-subscribers' ),
lite/includes/workflows/class-es-workflows-table.php CHANGED
@@ -147,10 +147,10 @@ class ES_Workflows_Table extends WP_List_Table {
147
  */
148
  public function load_workflow_list() {
149
  ?>
150
- <h1 class=" wp-heading-inline"><span class="text-2xl font-bold leading-7 text-gray-900 sm:text-3xl sm:leading-9 sm:truncate"><?php esc_html_e( 'Workflows', 'email-subscribers' ); ?>
151
  </span>
152
  <a href="admin.php?page=es_workflows&action=new"
153
- class="pt-2 ig-es-title-button px-2 py-2 mx-2"><?php esc_html_e( 'Add New', 'email-subscribers' ); ?></a>
154
  <?php do_action( 'ig_es_after_workflow_type_buttons' ); ?>
155
  </h1>
156
  <div id="poststuff" class="es-items-lists">
147
  */
148
  public function load_workflow_list() {
149
  ?>
150
+ <h1 class=" wp-heading-inline"><span class="text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:truncate"><?php esc_html_e( 'Workflows', 'email-subscribers' ); ?>
151
  </span>
152
  <a href="admin.php?page=es_workflows&action=new"
153
+ class="px-2 py-2 pt-2 mx-2 ig-es-title-button"><?php esc_html_e( 'Add New', 'email-subscribers' ); ?></a>
154
  <?php do_action( 'ig_es_after_workflow_type_buttons' ); ?>
155
  </h1>
156
  <div id="poststuff" class="es-items-lists">
lite/languages/email-subscribers.pot CHANGED
@@ -3,7 +3,7 @@ msgid ""
3
  msgstr ""
4
  "Project-Id-Version: Email Subscribers & Newsletters\n"
5
  "Report-Msgid-Bugs-To: \n"
6
- "POT-Creation-Date: 2020-04-02 08:32+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
@@ -54,130 +54,193 @@ msgstr ""
54
  msgid "Connect to Icegram"
55
  msgstr ""
56
 
57
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:107
58
  msgid "Sequence"
59
  msgstr ""
60
 
61
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:194
62
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:479
63
  msgid "Google Analytics link tracking"
64
  msgstr ""
65
 
66
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:195
 
 
67
  msgid "Get Spam Score"
68
  msgstr ""
69
 
70
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:205
71
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:480
72
  msgid "Campaign Name"
73
  msgstr ""
74
 
75
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:205
76
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:480
77
  msgid ""
78
  "This will be appended to every URL in this template with parameters: "
79
- "utm_source=es&utm_medium=email&utm_campaign=campaign_name "
80
  msgstr ""
81
 
82
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:213
83
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:486
84
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:375
 
85
  msgid "Check"
86
  msgstr ""
87
 
88
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:217
89
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:490
90
  msgid "Awesome score. Your email is almost perfect."
91
  msgstr ""
92
 
93
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:218
94
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:491
95
  msgid "Ouch! your email needs improvement. "
96
  msgstr ""
97
 
98
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:220
99
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:493
100
  msgid "Here are some things to fix: "
101
  msgstr ""
102
 
103
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:412
 
 
 
 
 
 
 
 
 
104
  msgid "Clean My List"
105
  msgstr ""
106
 
107
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:413
108
  msgid "List cleanup is in progress..."
109
  msgstr ""
110
 
111
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:414
112
  msgid "List cleanup completed successfully."
113
  msgstr ""
114
 
115
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:422
116
  msgid "Email Status"
117
  msgstr ""
118
 
119
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:458
120
- msgid "Email Sent Successfully "
121
  msgstr ""
122
 
123
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:459
124
- msgid "Something went wrong. Please try again later"
 
125
  msgstr ""
126
 
127
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:463
128
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:399
129
- msgid "When to send"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
130
  msgstr ""
131
 
132
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:465
 
133
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/fields/class-es-date.php:32
134
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-timing.php:83
135
  msgid "Date"
136
  msgstr ""
137
 
138
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:471
 
139
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/fields/class-es-time.php:65
140
  msgid "Time"
141
  msgstr ""
142
 
143
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:474
144
- msgid "Local time is "
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
145
  msgstr ""
146
 
147
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:485
148
- msgid "Get spam score"
 
149
  msgstr ""
150
 
151
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:503
152
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:482
 
 
 
 
153
  msgid "Something went wrong"
154
  msgstr ""
155
 
156
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:525
157
  msgid "SUCCESS"
158
  msgstr ""
159
 
160
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:536
161
  msgid "Select page"
162
  msgstr ""
163
 
164
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:571
165
- msgid "Track Clicks"
 
 
166
  msgstr ""
167
 
168
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:573
169
- msgid "Check this if you want to track link clicks."
 
 
170
  msgstr ""
171
 
172
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:625
 
 
 
 
 
173
  msgid "Clicked"
174
  msgstr ""
175
 
176
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:675
177
  msgid "Add Customer to Product specific list"
178
  msgstr ""
179
 
180
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:683
181
  msgid "Add Customer to Product variation list"
182
  msgstr ""
183
 
@@ -187,12 +250,12 @@ msgid "Post Digest"
187
  msgstr ""
188
 
189
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-post-digest.php:37
190
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:301
191
  msgid "Select template"
192
  msgstr ""
193
 
194
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-post-digest.php:38
195
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:302
196
  msgid "Content of the selected template will be sent out as post notification."
197
  msgstr ""
198
 
@@ -285,11 +348,24 @@ msgid "Create Sequence"
285
  msgstr ""
286
 
287
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:47
288
- msgid "Campaigns > New Sequence"
 
 
 
 
 
 
 
289
  msgstr ""
290
 
291
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:50
292
- msgid "Campaigns > Edit Sequence"
 
 
 
 
 
 
293
  msgstr ""
294
 
295
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:78
@@ -307,9 +383,9 @@ msgstr ""
307
 
308
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:134
309
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:195
310
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1182
311
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1203
312
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:50
313
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:45
314
  msgid "Please select list."
315
  msgstr ""
@@ -346,10 +422,11 @@ msgid "Email Subject"
346
  msgstr ""
347
 
348
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:349
349
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:355
350
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:384
351
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:419
352
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:461
 
353
  msgid "Content"
354
  msgstr ""
355
 
@@ -361,6 +438,10 @@ msgstr ""
361
  msgid "Add campaign name for utm tracking"
362
  msgstr ""
363
 
 
 
 
 
364
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:401
365
  msgid " after"
366
  msgstr ""
@@ -369,225 +450,238 @@ msgstr ""
369
  msgid " after subscription"
370
  msgstr ""
371
 
372
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:184
373
  msgid "Are You a Human? "
374
  msgstr ""
375
 
376
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:298
377
  msgid ""
378
- "<span class=\"es-send-success es-icon\"></span>We will take care of it. You "
379
  "don't need to visit this URL manually."
380
  msgstr ""
381
 
382
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:309
383
  msgid "SMTP Host"
384
  msgstr ""
385
 
386
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:316
387
  msgid "None"
388
  msgstr ""
389
 
390
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:316
391
  msgid "SSL"
392
  msgstr ""
393
 
394
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:316
395
  msgid "TLS"
396
  msgstr ""
397
 
398
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:321
399
  msgid "Encryption"
400
  msgstr ""
401
 
402
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:333
403
  msgid "SMTP Port"
404
  msgstr ""
405
 
406
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:340
407
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:286
408
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:232
409
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:329
410
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:402
411
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:438
412
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-sync-wp-user.php:67
413
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-widget.php:49
414
  msgid "No"
415
  msgstr ""
416
 
417
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:340
418
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:289
419
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:231
420
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:329
421
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:401
422
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:437
423
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-sync-wp-user.php:70
424
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-widget.php:49
425
  msgid "Yes"
426
  msgstr ""
427
 
428
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:345
429
  msgid "Authentication"
430
  msgstr ""
431
 
432
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:357
433
  msgid "SMTP Username"
434
  msgstr ""
435
 
436
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:369
437
  msgid "SMTP Password"
438
  msgstr ""
439
 
440
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:379
 
441
  msgid "Block Known Attackers"
442
  msgstr ""
443
 
444
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:380
 
445
  msgid ""
446
  "Stop known spam bot attacker domains from signing up. Keeps this list up-to-"
447
  "date with Icegram servers."
448
  msgstr ""
449
 
450
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:387
 
451
  msgid "Block Temporary / Fake Emails"
452
  msgstr ""
453
 
454
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:388
 
455
  msgid ""
456
  "Plenty of sites provide disposable / fake / temporary email addresses. "
457
  "People use them when they don't want to give you their real email. Block "
458
  "these to keep your list clean. Automatically updated."
459
  msgstr ""
460
 
461
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:396
 
462
  msgid "Enable Captcha"
463
  msgstr ""
464
 
465
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:397
466
- msgid "Show a captcha in subscription forms to protect from bot signups."
467
  msgstr ""
468
 
469
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:415
470
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:420
471
  msgid "Comment Opt-In Consent"
472
  msgstr ""
473
 
474
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:416
475
  msgid "This will show up at comment form next to consent checkbox."
476
  msgstr ""
477
 
478
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:422
479
- msgid "Check this if you want to show user consent checkbox in comment form."
480
- msgstr ""
481
-
482
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:428
483
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:432
484
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:266
485
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:368
486
  msgid "Opt-In Consent Text"
487
  msgstr ""
488
 
489
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:442
490
  msgid "Allow user to select list(s) while unsubscribe"
491
  msgstr ""
492
 
493
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:522
494
  msgid "Custom CSS"
495
  msgstr ""
496
 
497
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:595
 
498
  msgid "User Roles"
499
  msgstr ""
500
 
501
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:615
 
502
  msgid "Roles"
503
  msgstr ""
504
 
505
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:616
506
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:218
507
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:218
508
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:75
 
 
 
 
509
  msgid "Audience"
510
  msgstr ""
511
 
512
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:617
513
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:212
514
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:212
 
515
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:38
516
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:39
517
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:81
518
  msgid "Forms"
519
  msgstr ""
520
 
521
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:618
522
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:200
523
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:200
524
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:96
525
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:114
 
 
526
  msgid "Campaigns"
527
  msgstr ""
528
 
529
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:619
530
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:227
531
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:227
 
 
532
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:20
533
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:36
534
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:75
535
  msgid "Reports"
536
  msgstr ""
537
 
538
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:620
 
539
  msgid "Sequences"
540
  msgstr ""
541
 
542
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:621
543
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:190
544
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:190
 
545
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:54
546
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:148
547
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/class-es-workflow-admin-edit.php:184
548
  msgid "Workflows"
549
  msgstr ""
550
 
551
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:830
552
  msgid "Unsubscribe from all the lists"
553
  msgstr ""
554
 
555
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:921
556
  msgid "Inline CSS"
557
  msgstr ""
558
 
 
 
 
 
 
559
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:72
560
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:54
561
  msgid "Comments"
562
  msgstr ""
563
 
564
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:82
565
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:65
566
  msgid "WooCommerce"
567
  msgstr ""
568
 
569
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:91
570
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:114
571
  msgid "EDD"
572
  msgstr ""
573
 
574
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:100
575
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:75
576
  msgid "Contact Form 7"
577
  msgstr ""
578
 
579
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:109
580
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:84
581
  msgid "WPForms"
582
  msgstr ""
583
 
584
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:118
585
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:94
586
  msgid "Give"
587
  msgstr ""
588
 
589
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:127
590
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:104
591
  msgid "Ninja Forms"
592
  msgstr ""
593
 
@@ -605,7 +699,7 @@ msgstr ""
605
 
606
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:241
607
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-sync-wp-user.php:31
608
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:649
609
  msgid "Please select list"
610
  msgstr ""
611
 
@@ -619,12 +713,12 @@ msgstr ""
619
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:503
620
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:590
621
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-sync-wp-user.php:77
622
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:288
623
  msgid "Select List"
624
  msgstr ""
625
 
626
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:326
627
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:752
628
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-sync-wp-user.php:91
629
  msgid "Save Settings"
630
  msgstr ""
@@ -757,22 +851,39 @@ msgid ""
757
  "Select the list in which you want to make Ninja Forms contacts subscribed to"
758
  msgstr ""
759
 
760
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:141
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
761
  msgid "Please select a trigger before saving the workflow."
762
  msgstr ""
763
 
764
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:142
765
  msgid "Please add some actions before saving the workflow."
766
  msgstr ""
767
 
768
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:143
769
  msgid ""
770
  "Changing the trigger will remove existing actions. Do you want to proceed "
771
  "anyway?."
772
  msgstr ""
773
 
774
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:180
775
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:932
776
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-form-widget.php:11
777
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-old-widget.php:11
778
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-old-widget.php:12
@@ -780,43 +891,55 @@ msgstr ""
780
  msgid "Email Subscribers"
781
  msgstr ""
782
 
783
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:183
 
784
  msgid "Dashboard"
785
  msgstr ""
786
 
787
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:203
788
  msgid "Post Notifications"
789
  msgstr ""
790
 
791
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:204
792
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:109
793
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:278
794
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:195
 
795
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:34
796
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:242
797
  msgid "Broadcast"
798
  msgstr ""
799
 
800
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:205
 
801
  msgid "Template Preview"
802
  msgstr ""
803
 
804
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:222
805
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:377
806
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:37
807
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:75
808
  msgid "Lists"
809
  msgstr ""
810
 
811
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:231
 
812
  msgid "Settings"
813
  msgstr ""
814
 
815
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:235
816
  msgid "Go To Icegram"
817
  msgstr ""
818
 
819
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:306
 
 
 
 
 
 
 
 
820
  #, php-format
821
  msgid ""
822
  "WordPress Cron is disable on your site. Email notifications from Email "
@@ -824,103 +947,133 @@ msgid ""
824
  "target=\"_blank\" >Here's how you can enable it.</a>"
825
  msgstr ""
826
 
827
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:307
828
  #, php-format
829
  msgid "Or schedule Cron in <a href=\"%s\" target=\"_blank\">cPanel</a>"
830
  msgstr ""
831
 
832
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:308
833
  #, php-format
834
  msgid ""
835
  "Or use <strong><a href=\"%s\" target=\"_blank\">Email Subscribers Pro</a>"
836
  "</strong> for automatic Cron support"
837
  msgstr ""
838
 
839
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:309
840
  msgid "OK, I Got it!"
841
  msgstr ""
842
 
843
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:1040
844
  #, php-format
845
  msgid "%1$s in %2$s on line %3$s"
846
  msgstr ""
847
 
848
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:90
849
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:270
850
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:520
851
  msgid "Subscribed"
852
  msgstr ""
853
 
854
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:91
855
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:522
856
  msgid "Unconfirmed"
857
  msgstr ""
858
 
859
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:92
860
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:274
861
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:521
862
  msgid "Unsubscribed"
863
  msgstr ""
864
 
865
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:115
866
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:319
867
  msgid "Select Status"
868
  msgstr ""
869
 
870
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:235
871
  msgid "Select Template"
872
  msgstr ""
873
 
874
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:273
875
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:239
 
876
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-save.php:29
877
  msgid "Active"
878
  msgstr ""
879
 
880
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:274
 
881
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-save.php:28
882
  msgid "Inactive"
883
  msgstr ""
884
 
885
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:342
886
  msgid "Select Categories"
887
  msgstr ""
888
 
889
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:354
890
  msgid "All Categories (Also include all categories which will create later)"
891
  msgstr ""
892
 
893
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:386
894
  msgid "No Custom Post Types Available"
895
  msgstr ""
896
 
897
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:402
898
  msgid "Single Opt-In"
899
  msgstr ""
900
 
901
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:403
902
  msgid "Double Opt-In"
903
  msgstr ""
904
 
905
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:418
906
  msgid "Full Size"
907
  msgstr ""
908
 
909
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:419
910
  msgid "Medium Size"
911
  msgstr ""
912
 
913
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:420
914
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:223
915
  msgid "Thumbnail"
916
  msgstr ""
917
 
918
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1248
 
 
 
 
 
 
 
 
 
 
 
 
919
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:124
920
  msgid "Join Now"
921
  msgstr ""
922
 
923
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1252
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
924
  msgid "Lifetime"
925
  msgstr ""
926
 
@@ -934,6 +1087,7 @@ msgstr ""
934
 
935
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:56
936
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:83
 
937
  msgid "Send"
938
  msgstr ""
939
 
@@ -967,163 +1121,222 @@ msgstr ""
967
  msgid "Send my feedback to <b>Icegram team</b>"
968
  msgstr ""
969
 
970
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:142
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
971
  msgid "Sync Comment Users"
972
  msgstr ""
973
 
974
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:143
975
  msgid ""
976
  "Quickly add to your mailing list when someone post a comment on your website."
977
  msgstr ""
978
 
979
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:144
980
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:173
981
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:206
982
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:238
983
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:270
984
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:302
985
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:334
986
  msgid "How to setup?"
987
  msgstr ""
988
 
989
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:145
990
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:174
991
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:207
992
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:239
993
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:271
994
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:303
995
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:335
996
  msgid "Once you upgrade to "
997
  msgstr ""
998
 
999
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:145
1000
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:148
1001
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:174
1002
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:207
1003
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:239
1004
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:271
1005
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:303
1006
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:335
1007
  msgid "Email Subscribers Starter"
1008
  msgstr ""
1009
 
1010
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:145
1011
  msgid ""
1012
  "you will have settings panel where you need to enable Comment user sync and "
1013
  "select the list in which you want to add people whenever someone post a\n"
1014
- " comment."
1015
  msgstr ""
1016
 
1017
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:148
1018
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:178
1019
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:210
1020
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:242
1021
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:274
1022
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:306
1023
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:338
1024
  msgid "Checkout "
1025
  msgstr ""
1026
 
1027
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:148
1028
  msgid "now"
1029
  msgstr ""
1030
 
1031
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:171
1032
  msgid "Sync WooCommerce Customers"
1033
  msgstr ""
1034
 
1035
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:172
1036
  msgid ""
1037
  "Are you using WooCommerce for your online business? You can use this "
1038
  "integration to add to a specific list whenever someone make a purchase from "
1039
  "you"
1040
  msgstr ""
1041
 
1042
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:174
1043
  msgid ""
1044
  "you will have settings panel where you need to enable WooCommerce sync and "
1045
  "select the list in which you want to add people whenever they\n"
1046
- " purchase something\n"
1047
- " from you."
1048
  msgstr ""
1049
 
1050
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:204
1051
  msgid "Sync Contact Form 7 users"
1052
  msgstr ""
1053
 
1054
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:205
1055
  msgid ""
1056
  "Are you using Contact Form 7 for your list building? You can use this "
1057
  "integration to add to a specific list whenever new subscribers added from "
1058
  "Contact Form 7"
1059
  msgstr ""
1060
 
1061
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:208
1062
  msgid ""
1063
  "you will have settings panel where you need to enable Contact form 7 sync "
1064
  "and select the list in which you want to add people whenever they fill any "
1065
  "of the Contact Form."
1066
  msgstr ""
1067
 
1068
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:236
1069
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:268
1070
  msgid "Sync Donors"
1071
  msgstr ""
1072
 
1073
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:237
1074
  msgid ""
1075
  "We found that you are using Give WordPress plugin to collect donations. Now, "
1076
  "with this integration, you can add your donors to any of your subscriber "
1077
  "list and send them Newsletters in future."
1078
  msgstr ""
1079
 
1080
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:240
1081
  msgid ""
1082
  "you will have settings panel where you need to enable Give integration and "
1083
  "select the list in which you want to add people whenever they make donation."
1084
  msgstr ""
1085
 
1086
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:269
1087
  msgid ""
1088
  "Are you using Give WordPress plugin to collect donations? Want to send Thank "
1089
  "You email to them? You can use this integration to be in touch with them."
1090
  msgstr ""
1091
 
1092
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:272
1093
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:304
1094
  msgid ""
1095
  "you will have settings panel where you need to enable Give sync and select "
1096
  "the list in which you want to add people whenever they make donation."
1097
  msgstr ""
1098
 
1099
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:300
1100
  msgid "Sync Contacts"
1101
  msgstr ""
1102
 
1103
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:301
1104
  msgid ""
1105
  "We found that you are using Ninja Forms. Want to add your contact to a "
1106
  "mailing list? You can use this integration to add your contact to add into "
1107
  "mailing list"
1108
  msgstr ""
1109
 
1110
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:332
1111
  msgid "Sync Customers"
1112
  msgstr ""
1113
 
1114
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:333
1115
  msgid ""
1116
  "We found that you are using EDD to sell digital goods online. You can use "
1117
  "this integration to send Newsletters/ Post Notifications to your customers."
1118
  msgstr ""
1119
 
1120
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:336
1121
  msgid ""
1122
  "you will have settings panel where you need to enable EDD sync and select "
1123
  "the list in which you want to add people whenever they purchase something "
1124
  "from you."
1125
  msgstr ""
1126
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1127
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/class-email-subscribers-public.php:110
1128
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-subscription.php:420
1129
  msgid "Please enter email address"
@@ -1177,7 +1390,7 @@ msgid "Are you sure you want to unsubscribe?"
1177
  msgstr ""
1178
 
1179
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:111
1180
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:191
1181
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:35
1182
  msgid "Post Notification"
1183
  msgstr ""
@@ -1190,6 +1403,84 @@ msgstr ""
1190
  msgid "In Queue"
1191
  msgstr ""
1192
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1193
  #. Author of the plugin
1194
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/help.php:28
1195
  msgid "Icegram"
@@ -1269,15 +1560,32 @@ msgstr ""
1269
  msgid "Contact US"
1270
  msgstr ""
1271
 
 
 
 
 
1272
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/help.php:185
1273
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:361
1274
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:297
1275
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:91
1276
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:272
1277
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:291
1278
  msgid "Status"
1279
  msgstr ""
1280
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1281
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/onboarding.php:9
1282
  #, php-format
1283
  msgid ""
@@ -1320,7 +1628,7 @@ msgid "But before test <strong>verify your sender details</strong>"
1320
  msgstr ""
1321
 
1322
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/onboarding.php:20
1323
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:161
1324
  msgid "Sender"
1325
  msgstr ""
1326
 
@@ -1411,208 +1719,194 @@ msgstr ""
1411
  msgid "You do not have permission to update settings"
1412
  msgstr ""
1413
 
1414
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:118
1415
  msgid "General"
1416
  msgstr ""
1417
 
1418
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:119
1419
  msgid "Notifications"
1420
  msgstr ""
1421
 
1422
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:120
1423
  msgid "Email Sending"
1424
  msgstr ""
1425
 
1426
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:121
1427
  msgid "Security"
1428
  msgstr ""
1429
 
1430
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:165
1431
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:168
1432
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:357
1433
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:909
1434
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:344
1435
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:793
1436
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:519
1437
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/partials/class-es-shortcode.php:154
1438
  msgid "Name"
1439
  msgstr ""
1440
 
1441
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:166
1442
  msgid "Choose a FROM name for all the emails to be sent from this plugin."
1443
  msgstr ""
1444
 
1445
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:174
1446
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:665
1447
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:910
1448
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:295
1449
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:327
1450
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:90
1451
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/partials/class-es-shortcode.php:153
1452
- msgid "Email"
1453
- msgstr ""
1454
-
1455
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:175
1456
  msgid ""
1457
  "Choose a FROM email address for all the emails to be sent from this plugin"
1458
  msgstr ""
1459
 
1460
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:177
1461
  msgid "Email Address"
1462
  msgstr ""
1463
 
1464
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:185
1465
  msgid "Email Addresses"
1466
  msgstr ""
1467
 
1468
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:187
1469
  msgid ""
1470
  "Enter the admin email addresses that should receive notifications (separated "
1471
  "by comma)."
1472
  msgstr ""
1473
 
1474
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:193
1475
  msgid "Opt-in Type"
1476
  msgstr ""
1477
 
1478
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:202
1479
  msgid "Image Size"
1480
  msgstr ""
1481
 
1482
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:205
1483
  msgid ""
1484
- "<p>Select image size for {{POSTIMAGE}} to be shown in the Post Notification "
1485
- "Emails.</p>"
1486
  msgstr ""
1487
 
1488
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:211
1489
  msgid "Track Opens"
1490
  msgstr ""
1491
 
1492
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:213
1493
- msgid "Check this if you want to track email opening."
1494
- msgstr ""
1495
-
1496
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:224
1497
  msgid "Message to display after form submission"
1498
  msgstr ""
1499
 
1500
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:234
1501
  msgid "Show Unsubscribe Message In Email Footer"
1502
  msgstr ""
1503
 
1504
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:235
1505
  msgid ""
1506
  "Add text which you want your contact to see in footer to unsubscribe. Use "
1507
  "{{UNSUBSCRIBE-LINK}} keyword to add unsubscribe link."
1508
  msgstr ""
1509
 
1510
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:242
1511
  msgid "Subscription Success/ Error Messages"
1512
  msgstr ""
1513
 
1514
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:249
1515
  msgid "You have been subscribed successfully!"
1516
  msgstr ""
1517
 
1518
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:251
1519
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:281
1520
  msgid "Success Message"
1521
  msgstr ""
1522
 
1523
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:252
1524
  msgid ""
1525
  "Show this message if contact is successfully subscribed from Double Opt-In "
1526
  "(Confirmation) Email"
1527
  msgstr ""
1528
 
1529
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:260
1530
  msgid ""
1531
  "Oops.. Your request couldn't be completed. This email address seems to be "
1532
  "already subscribed / blocked."
1533
  msgstr ""
1534
 
1535
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:262
1536
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:293
1537
  msgid "Error Message"
1538
  msgstr ""
1539
 
1540
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:263
1541
  msgid ""
1542
  "Show this message if any error occured after clicking confirmation link from "
1543
  "Double Opt-In (Confirmation) Email."
1544
  msgstr ""
1545
 
1546
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:271
1547
  msgid "Unsubscribe Success/ Error Messages"
1548
  msgstr ""
1549
 
1550
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:279
1551
  msgid ""
1552
  "Thank You, You have been successfully unsubscribed. You will no longer hear "
1553
  "from us."
1554
  msgstr ""
1555
 
1556
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:282
1557
  msgid ""
1558
  "Once contact clicks on unsubscribe link, he/she will be redirected to a page "
1559
  "where this message will be shown."
1560
  msgstr ""
1561
 
1562
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:294
1563
  msgid ""
1564
  "Show this message if any error occured after clicking on unsubscribe link."
1565
  msgstr ""
1566
 
1567
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:324
1568
  msgid "Welcome Email"
1569
  msgstr ""
1570
 
1571
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:334
1572
- msgid "Enable?"
1573
  msgstr ""
1574
 
1575
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:335
1576
- msgid "Send welcome email to new contact after signup."
1577
  msgstr ""
1578
 
1579
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:345
1580
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:373
1581
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:411
1582
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:450
1583
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:132
1584
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:270
1585
  msgid "Subject"
1586
  msgstr ""
1587
 
1588
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:356
1589
  msgid ""
1590
  "Available keywords. {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}, {{EMAIL}}, {{LIST}"
1591
  "}, {{UNSUBSCRIBE-LINK}}"
1592
  msgstr ""
1593
 
1594
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:363
1595
  msgid "Confirmation Email"
1596
  msgstr ""
1597
 
1598
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:385
1599
  msgid ""
1600
  "If Double Optin is set, contact will receive confirmation email with above "
1601
  "content. You can use {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}, {{EMAIL}}, "
1602
  "{{SUBSCRIBE-LINK}} keywords"
1603
  msgstr ""
1604
 
1605
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:393
1606
  msgid "Admin Notification On New Subscription"
1607
  msgstr ""
1608
 
1609
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:398
1610
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:434
1611
- msgid "Notify?"
1612
  msgstr ""
1613
 
1614
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:404
1615
- msgid "Set this option to \"Yes\" to notify admin(s) for new contact signup."
 
1616
  msgstr ""
1617
 
1618
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:413
@@ -1634,95 +1928,102 @@ msgstr ""
1634
  msgid "Admin Notification On Every Campaign Sent"
1635
  msgstr ""
1636
 
1637
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:440
1638
- msgid "Set this option to \"Yes\" to notify admin(s) on every campaign sent."
1639
  msgstr ""
1640
 
1641
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:448
1642
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-mailer.php:352
1643
  msgid "Campaign Sent!"
1644
  msgstr ""
1645
 
1646
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:462
1647
  msgid ""
1648
  "Send report to admin(s) whenever campaign is successfully sent to all "
1649
  "contacts. Available Keywords: {{DATE}}, {{SUBJECT}}, {{COUNT}}"
1650
  msgstr ""
1651
 
1652
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:479
1653
  msgid "Cron URL"
1654
  msgstr ""
1655
 
1656
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:489
 
 
 
 
 
 
 
1657
  msgid "Disable WordPress Cron"
1658
  msgstr ""
1659
 
1660
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:490
1661
  msgid ""
1662
- "Check this if you do not want Email Subscribers to use WP cron for sending "
1663
- "emails"
1664
  msgstr ""
1665
 
1666
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:495
1667
  msgid "Send Emails At Most Every"
1668
  msgstr ""
1669
 
1670
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:498
1671
- msgid "<p>Optional if a real cron service is used</p>"
1672
  msgstr ""
1673
 
1674
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:508
1675
  msgid "Maximum Emails To Send In An Hour"
1676
  msgstr ""
1677
 
1678
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:509
1679
  msgid "Total emails your host can send in an hour."
1680
  msgstr ""
1681
 
1682
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:518
1683
  msgid "Maximum Emails To Send At once"
1684
  msgstr ""
1685
 
1686
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:519
1687
  msgid "Maximum emails you want to send on every cron request."
1688
  msgstr ""
1689
 
1690
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:529
1691
  msgid "Send Test Email"
1692
  msgstr ""
1693
 
1694
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:530
1695
  msgid "Enter email address to send test email."
1696
  msgstr ""
1697
 
1698
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:539
1699
  msgid "Select Mailer"
1700
  msgstr ""
1701
 
1702
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:551
1703
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:814
1704
  msgid "Pepipost API key"
1705
  msgstr ""
1706
 
1707
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:568
1708
  msgid "Select a mailer to send mail"
1709
  msgstr ""
1710
 
1711
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:578
1712
  msgid "Blocked Domain(s)"
1713
  msgstr ""
1714
 
1715
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:580
1716
  msgid ""
1717
  "Seeing spam signups from particular domains? Enter domains names (one per "
1718
  "line) that you want to block here."
1719
  msgstr ""
1720
 
1721
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:813
1722
  msgid "Signup for Pepipost"
1723
  msgstr ""
1724
 
1725
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:814
1726
  msgid "How to find"
1727
  msgstr ""
1728
 
@@ -1735,77 +2036,98 @@ msgstr ""
1735
  msgid "Number of campaigns per page"
1736
  msgstr ""
1737
 
1738
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:97
 
 
 
 
1739
  msgid "Create Post Notification"
1740
  msgstr ""
1741
 
1742
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:98
1743
  msgid "Send Broadcast"
1744
  msgstr ""
1745
 
1746
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:106
1747
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:108
1748
  msgid "Onsite Campaigns"
1749
  msgstr ""
1750
 
1751
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:111
1752
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:115
1753
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:269
1754
  msgid "Manage Templates"
1755
  msgstr ""
1756
 
1757
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:223
1758
  msgid "No Campaigns Found."
1759
  msgstr ""
1760
 
1761
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:238
1762
  msgid "In Active"
1763
  msgstr ""
1764
 
1765
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:240
 
 
1766
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-timing.php:37
1767
  msgid "Scheduled"
1768
  msgstr ""
1769
 
1770
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:241
1771
  msgid "Queued"
1772
  msgstr ""
1773
 
1774
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:242
 
1775
  msgid "Paused"
1776
  msgstr ""
1777
 
1778
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:243
1779
  msgid "Finished"
1780
  msgstr ""
1781
 
1782
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:286
1783
  msgid "All"
1784
  msgstr ""
1785
 
1786
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:337
1787
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:501
 
1788
  #, php-format
1789
  msgid ""
1790
  "<a href=\"?page=%s&action=%s&list=%s&_wpnonce=%s\" class=\"text-indigo-600\">"
1791
  "Edit</a>"
1792
  msgstr ""
1793
 
1794
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:338
1795
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:502
1796
  #, php-format
1797
  msgid ""
1798
  "<a href=\"?page=%s&action=%s&list=%s&_wpnonce=%s\" onclick=\"return "
1799
  "checkDelete()\">Delete</a>"
1800
  msgstr ""
1801
 
1802
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:358
1803
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:271
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1804
  msgid "Type"
1805
  msgstr ""
1806
 
1807
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:359
1808
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:296
1809
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:36
1810
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/workflows/actions/class-es-action-move-to-list.php:31
1811
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/workflows/actions/class-es-action-remove-from-list.php:29
@@ -1813,27 +2135,27 @@ msgstr ""
1813
  msgid "List"
1814
  msgstr ""
1815
 
1816
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:360
1817
  msgid "Categories"
1818
  msgstr ""
1819
 
1820
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:410
1821
  msgid "Search Campaigns"
1822
  msgstr ""
1823
 
1824
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:453
1825
  msgid "You are not allowed to delete campaign."
1826
  msgstr ""
1827
 
1828
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:459
1829
  msgid "Campaign has been deleted successfully!"
1830
  msgstr ""
1831
 
1832
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:477
1833
  msgid "Campaign(s) have been deleted successfully!"
1834
  msgstr ""
1835
 
1836
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:481
1837
  msgid "Please check campaign(s) to delete."
1838
  msgstr ""
1839
 
@@ -1844,7 +2166,7 @@ msgid "Contact"
1844
  msgstr ""
1845
 
1846
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:54
1847
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:263
1848
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:76
1849
  msgid "Contacts"
1850
  msgstr ""
@@ -1858,11 +2180,13 @@ msgid "Add New Contact"
1858
  msgstr ""
1859
 
1860
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:113
 
1861
  msgid "Import Contacts"
1862
  msgstr ""
1863
 
1864
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:122
1865
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:67
 
1866
  msgid "Export Contacts"
1867
  msgstr ""
1868
 
@@ -1875,193 +2199,219 @@ msgid "New"
1875
  msgstr ""
1876
 
1877
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:140
1878
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:302
1879
  msgid "Manage Lists"
1880
  msgstr ""
1881
 
1882
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:193
1883
- msgid "Audience > Contacts"
 
 
 
 
1884
  msgstr ""
1885
 
1886
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:267
 
 
 
 
 
 
1887
  msgid "Last 60 Days"
1888
  msgstr ""
1889
 
1890
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:278
1891
  msgid "Opened"
1892
  msgstr ""
1893
 
1894
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:301
1895
  msgid " Add New Contact"
1896
  msgstr ""
1897
 
1898
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:306
1899
  msgid " Edit Contact"
1900
  msgstr ""
1901
 
1902
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:307
1903
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:81
1904
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:75
1905
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:253
1906
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:267
1907
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:150
1908
  msgid "Add New"
1909
  msgstr ""
1910
 
1911
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:355
1912
  msgid "Contact already exist."
1913
  msgstr ""
1914
 
1915
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:422
1916
  msgid "Contact has been added successfully!"
1917
  msgstr ""
1918
 
1919
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:424
1920
  msgid "Contact has been updated successfully!"
1921
  msgstr ""
1922
 
1923
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:431
1924
  msgid "Please Enter First Name"
1925
  msgstr ""
1926
 
1927
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:436
1928
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:33
1929
  msgid "Please Select List"
1930
  msgstr ""
1931
 
1932
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:441
1933
  msgid "Please Enter Valid Email Address"
1934
  msgstr ""
1935
 
1936
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:463
1937
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:249
1938
  msgid "Audience "
1939
  msgstr ""
1940
 
1941
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:614
1942
  msgid "No list found"
1943
  msgstr ""
1944
 
1945
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:624
1946
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:293
1947
  msgid "First Name"
1948
  msgstr ""
1949
 
1950
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:645
1951
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:294
 
 
 
 
1952
  msgid "Last Name"
1953
  msgstr ""
1954
 
1955
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:685
 
 
 
 
 
 
 
 
1956
  msgid "Send Welcome Email?"
1957
  msgstr ""
1958
 
1959
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:710
1960
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:911
1961
  msgid "List(s)"
1962
  msgstr ""
1963
 
1964
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:727
1965
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:463
1966
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:288
1967
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:365
 
 
 
 
1968
  msgid "Save Changes"
1969
  msgstr ""
1970
 
1971
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:743
1972
  msgid "No contacts avaliable."
1973
  msgstr ""
1974
 
1975
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:889
1976
  #, php-format
1977
  msgid ""
1978
  "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\" class=\"text-indigo-"
1979
  "600\">Edit</a>"
1980
  msgstr ""
1981
 
1982
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:890
1983
  #, php-format
1984
  msgid ""
1985
  "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\" onclick=\"return "
1986
  "checkDelete()\">Delete</a>"
1987
  msgstr ""
1988
 
1989
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:893
1990
  #, php-format
1991
  msgid ""
1992
  "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\" class=\"text-indigo-"
1993
  "600\">Resend Confirmation<a>"
1994
  msgstr ""
1995
 
1996
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:912
1997
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:795
1998
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:524
1999
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:290
2000
  msgid "Created"
2001
  msgstr ""
2002
 
2003
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:945
2004
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:823
2005
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:553
2006
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:254
2007
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:337
2008
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:260
2009
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:321
2010
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/action.php:30
2011
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-save.php:46
2012
  msgid "Delete"
2013
  msgstr ""
2014
 
2015
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:946
2016
  msgid "Move To List"
2017
  msgstr ""
2018
 
2019
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:947
2020
  msgid "Add To List"
2021
  msgstr ""
2022
 
2023
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:948
2024
  msgid "Change Status"
2025
  msgstr ""
2026
 
2027
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:969
2028
  msgid "Search Contacts"
2029
  msgstr ""
2030
 
2031
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:974
2032
  msgid "All Statuses"
2033
  msgstr ""
2034
 
2035
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:980
2036
  msgid "All Lists"
2037
  msgstr ""
2038
 
2039
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1085
2040
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1150
2041
  msgid "Contact(s) have been deleted successfully!"
2042
  msgstr ""
2043
 
2044
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1111
2045
  msgid "Confirmation email has been sent successfully!"
2046
  msgstr ""
2047
 
2048
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1138
2049
  msgid "Please select subscribers to update."
2050
  msgstr ""
2051
 
2052
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1161
2053
  msgid "Please select status."
2054
  msgstr ""
2055
 
2056
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1171
2057
  msgid "Status has been changed successfully!"
2058
  msgstr ""
2059
 
2060
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1191
2061
  msgid "Contact(s) have been moved to list successfully!"
2062
  msgstr ""
2063
 
2064
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1212
2065
  msgid "Contact(s) have been added to list successfully!"
2066
  msgstr ""
2067
 
@@ -2085,42 +2435,42 @@ msgstr ""
2085
  msgid "30 minutes"
2086
  msgstr ""
2087
 
2088
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:545
2089
  msgid "Emails sent successfully!"
2090
  msgstr ""
2091
 
2092
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:546
2093
  msgid "Emails not found."
2094
  msgstr ""
2095
 
2096
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:547
2097
  msgid "No notifications found to send."
2098
  msgstr ""
2099
 
 
2100
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:548
2101
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:549
2102
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:550
2103
  msgid "Invalid GUID."
2104
  msgstr ""
2105
 
2106
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:551
2107
  msgid "Not allowed to process request."
2108
  msgstr ""
2109
 
2110
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:552
2111
  msgid "GUID is empty."
2112
  msgstr ""
2113
 
2114
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:553
2115
  msgid "Please try after sometime."
2116
  msgstr ""
2117
 
2118
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:554
2119
  msgid ""
2120
  "You have hit your hourly email sending limit. Please try after sometime."
2121
  msgstr ""
2122
 
2123
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:555
2124
  msgid "Cron lock enabled. Please try after sometime."
2125
  msgstr ""
2126
 
@@ -2132,18 +2482,13 @@ msgstr ""
2132
  msgid "No."
2133
  msgstr ""
2134
 
2135
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:77
2136
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:275
2137
- msgid "Total Contacts"
2138
- msgstr ""
2139
-
2140
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:78
2141
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:525
2142
  msgid "Export"
2143
  msgstr ""
2144
 
2145
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:92
2146
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:523
2147
  msgid "All Contacts"
2148
  msgstr ""
2149
 
@@ -2159,24 +2504,15 @@ msgstr ""
2159
  msgid "Unconfirmed Contacts"
2160
  msgstr ""
2161
 
2162
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:115
2163
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:466
2164
- msgid "Download"
2165
- msgstr ""
2166
-
2167
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:133
2168
- msgid "Audience > Export Contacts"
2169
- msgstr ""
2170
-
2171
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:224
2172
  msgid "Export the Subscribers"
2173
  msgstr ""
2174
 
2175
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:298
2176
  msgid "Opt-In Type"
2177
  msgstr ""
2178
 
2179
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:299
2180
  msgid "Created On"
2181
  msgstr ""
2182
 
@@ -2188,167 +2524,163 @@ msgstr ""
2188
  msgid "Number of forms per page"
2189
  msgstr ""
2190
 
2191
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:111
2192
  msgid "You do not have permission to edit this form."
2193
  msgstr ""
2194
 
2195
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:114
2196
  msgid "Please add form name."
2197
  msgstr ""
2198
 
2199
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:119
2200
  msgid "Please select list(s) in which contact will be subscribed."
2201
  msgstr ""
2202
 
2203
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:165
2204
  msgid "Form has been added successfully!"
2205
  msgstr ""
2206
 
2207
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:210
2208
  msgid "Form has been updated successfully!"
2209
  msgstr ""
2210
 
2211
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:219
2212
  msgid "Sorry, form not found"
2213
  msgstr ""
2214
 
2215
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:243
2216
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/partials/class-es-shortcode.php:132
2217
  msgid "Subscribe"
2218
  msgstr ""
2219
 
2220
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:261
2221
  msgid "Forms "
2222
  msgstr ""
2223
 
2224
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:264
2225
  msgid " New Form"
2226
  msgstr ""
2227
 
2228
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:266
2229
  msgid " Edit Form"
2230
  msgstr ""
2231
 
2232
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:285
2233
  msgid "Form Name"
2234
  msgstr ""
2235
 
2236
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:299
2237
  msgid "Description"
2238
  msgstr ""
2239
 
2240
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:313
2241
  msgid "Form Fields"
2242
  msgstr ""
2243
 
2244
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:320
2245
  msgid "Field"
2246
  msgstr ""
2247
 
2248
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:321
2249
  msgid "Show?"
2250
  msgstr ""
2251
 
2252
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:322
2253
  msgid "Required?"
2254
  msgstr ""
2255
 
2256
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:323
2257
  msgid "Label"
2258
  msgstr ""
2259
 
2260
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:324
2261
  msgid "Place Holder"
2262
  msgstr ""
2263
 
2264
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:364
2265
  msgid "Button"
2266
  msgstr ""
2267
 
2268
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:378
2269
  msgid "Contacts will be added into selected list(s)"
2270
  msgstr ""
2271
 
2272
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:401
2273
  msgid "Allow contact to choose list(s)"
2274
  msgstr ""
2275
 
2276
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:402
2277
  msgid "Allow contacts to choose list(s) in which they want to subscribe."
2278
  msgstr ""
2279
 
2280
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:428
2281
  msgid "Show GDPR consent checkbox"
2282
  msgstr ""
2283
 
2284
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:429
2285
  msgid ""
2286
  "Show consent checkbox to get the consent of a contact before adding them to "
2287
  "list(s)"
2288
  msgstr ""
2289
 
2290
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:453
2291
  msgid ""
2292
  "Consent text will show up at subscription form next to consent checkbox."
2293
  msgstr ""
2294
 
2295
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:475
2296
- #, php-format
2297
- msgid ""
2298
- "Secure your form and avoid spam signups with Email Subscribers Starter Plan "
2299
- "<a target=\"_blank\" style=\"font-weight: bold; cursor:pointer; text-"
2300
- "decoration:none\" href=\"%s\">Get started</a>"
2301
  msgstr ""
2302
 
2303
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:777
2304
  #, php-format
2305
  msgid ""
2306
  "<a href=\"?page=%s&action=%s&form=%s&_wpnonce=%s\" class=\"text-indigo-600\">"
2307
  "Edit</a>"
2308
  msgstr ""
2309
 
2310
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:778
2311
  #, php-format
2312
  msgid ""
2313
  "<a href=\"?page=%s&action=%s&form=%s&_wpnonce=%s\" onclick=\"return "
2314
  "checkDelete()\">Delete</a>"
2315
  msgstr ""
2316
 
2317
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:794
2318
  msgid "Shortcode"
2319
  msgstr ""
2320
 
2321
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:840
2322
  msgid "Search Forms"
2323
  msgstr ""
2324
 
2325
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:878
2326
  msgid "You do not have permission to delete this form."
2327
  msgstr ""
2328
 
2329
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:885
2330
  msgid "Form has been deleted successfully!"
2331
  msgstr ""
2332
 
2333
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:900
2334
  msgid "Form(s) have been deleted successfully!"
2335
  msgstr ""
2336
 
2337
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:903
2338
  msgid "Please select form(s) to delete."
2339
  msgstr ""
2340
 
2341
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:914
2342
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:660
2343
  msgid "Enable"
2344
  msgstr ""
2345
 
2346
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:915
2347
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:661
2348
  msgid "Disable"
2349
  msgstr ""
2350
 
2351
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:927
2352
  msgid "No Forms avaliable."
2353
  msgstr ""
2354
 
@@ -2400,71 +2732,103 @@ msgid ""
2400
  "class=\"text-indigo-400\">Create new workflows</a>"
2401
  msgstr ""
2402
 
2403
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:32
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2404
  msgid "Sorry, you do not have permission to import contacts."
2405
  msgstr ""
2406
 
2407
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:154
2408
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:158
2409
  #, php-format
2410
  msgid "Total %d contacts have been imported successfully!"
2411
  msgstr ""
2412
 
2413
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:162
2414
  #, php-format
2415
- msgid "%d contacts are already exists."
2416
  msgstr ""
2417
 
2418
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:167
2419
  #, php-format
2420
- msgid "%d contacts are invalid."
2421
  msgstr ""
2422
 
2423
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:177
2424
  msgid "Error: Please Select List"
2425
  msgstr ""
2426
 
2427
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:181
2428
  msgid "Error: Please select status"
2429
  msgstr ""
2430
 
2431
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:185
 
 
 
 
 
 
 
 
2432
  msgid "Error: Please Upload only CSV File"
2433
  msgstr ""
2434
 
2435
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:189
2436
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:193
 
 
 
 
2437
  msgid "Error: Please Upload File"
2438
  msgstr ""
2439
 
2440
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:212
2441
  msgid "Select CSV file"
2442
  msgstr ""
2443
 
2444
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:214
 
 
 
 
 
2445
  msgid "Check CSV structure"
2446
  msgstr ""
2447
 
2448
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:215
2449
  msgid "from here"
2450
  msgstr ""
2451
 
2452
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:226
2453
  msgid "Select status"
2454
  msgstr ""
2455
 
2456
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:238
2457
  msgid "Select list"
2458
  msgstr ""
2459
 
2460
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:251
2461
  msgid "Import"
2462
  msgstr ""
2463
 
2464
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:273
2465
- msgid "Audience > Import Contacts"
2466
- msgstr ""
2467
-
2468
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-info.php:20
2469
  msgid "<span class=\"es-fire-sale\"> 🔥 </span> Go Pro"
2470
  msgstr ""
@@ -2473,119 +2837,177 @@ msgstr ""
2473
  msgid "Number of lists per page"
2474
  msgstr ""
2475
 
2476
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:109
2477
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:608
2478
  msgid "You do not have permission to edit list"
2479
  msgstr ""
2480
 
2481
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:111
2482
  msgid "Please add list name"
2483
  msgstr ""
2484
 
2485
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:113
2486
  msgid "List already exists. Please choose different name"
2487
  msgstr ""
2488
 
2489
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:158
2490
  msgid "List has been added successfully!"
2491
  msgstr ""
2492
 
2493
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:207
2494
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:612
2495
  msgid "List has been updated successfully!"
2496
  msgstr ""
2497
 
2498
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:250
2499
  msgid " Lists "
2500
  msgstr ""
2501
 
2502
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:255
2503
  msgid "Edit List"
2504
  msgstr ""
2505
 
2506
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:274
2507
  msgid "List Name"
2508
  msgstr ""
2509
 
2510
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:429
2511
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:438
2512
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:447
2513
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:456
 
 
 
 
2514
  #, php-format
2515
  msgid "<a href=\"%s\" target=\"_blank\">%d</a>"
2516
  msgstr ""
2517
 
2518
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:572
2519
  msgid "Search Lists"
2520
  msgstr ""
2521
 
2522
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:624
2523
  msgid "You do not have permission to delete list"
2524
  msgstr ""
2525
 
2526
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:631
2527
  msgid "List has been deleted successfully!"
2528
  msgstr ""
2529
 
2530
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:646
2531
  msgid "List(s) have been deleted successfully"
2532
  msgstr ""
2533
 
2534
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:673
2535
  msgid "No lists avaliable."
2536
  msgstr ""
2537
 
2538
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-mailer.php:296
2539
  msgid "Thanks!"
2540
  msgstr ""
2541
 
2542
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-mailer.php:509
2543
  #, php-format
2544
  msgid "Test email to %s"
2545
  msgstr ""
2546
 
2547
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:47
 
 
 
 
2548
  msgid "Please add message body or select template"
2549
  msgstr ""
2550
 
2551
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:53
2552
  msgid "Please add the subject"
2553
  msgstr ""
2554
 
2555
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:79
2556
- msgid "Please add message content"
2557
  msgstr ""
2558
 
2559
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:113
2560
- msgid "Campaigns > Broadcast"
 
2561
  msgstr ""
2562
 
2563
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:127
2564
- msgid "From Email"
2565
  msgstr ""
2566
 
2567
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:130
2568
- msgid "Design template"
2569
  msgstr ""
2570
 
2571
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:135
2572
- msgid "Pre Header"
2573
  msgstr ""
2574
 
2575
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:135
2576
- msgid "Add Pre header"
2577
  msgstr ""
2578
 
2579
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:137
2580
- msgid "Body"
2581
  msgstr ""
2582
 
2583
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:155
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2584
  msgid "Recipients"
2585
  msgstr ""
2586
 
2587
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:161
2588
- msgid "Preview this email in browser"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
2589
  msgstr ""
2590
 
2591
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-old-widget.php:72
@@ -2633,128 +3055,127 @@ msgstr ""
2633
  msgid " Edit Post Notification"
2634
  msgstr ""
2635
 
2636
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:260
2637
  msgid "Campaigns "
2638
  msgstr ""
2639
 
2640
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:289
2641
  msgid ""
2642
  "Contacts from the selected list will be notified about new post notification."
2643
  msgstr ""
2644
 
2645
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:331
2646
  msgid "Select Post Category"
2647
  msgstr ""
2648
 
2649
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:332
2650
  msgid ""
2651
  "Notification will be sent out when any post from selected categories will be "
2652
  "published."
2653
  msgstr ""
2654
 
2655
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:345
2656
  msgid "Select custom post type(s)"
2657
  msgstr ""
2658
 
2659
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:346
2660
  msgid ""
2661
  "(Optional) Select custom post type for which you want to send notification."
2662
  msgstr ""
2663
 
 
 
 
 
2664
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:19
2665
  msgid "Report"
2666
  msgstr ""
2667
 
2668
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:41
2669
  #, php-format
2670
  msgid ""
2671
- "<a href='%s' target='_blank' class='ig-es-imp-button px-4 py-2'>Send Queued "
2672
- "Emails Now</a>"
2673
  msgstr ""
2674
 
2675
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:43
2676
  msgid ""
2677
  "<span class='ig-es-send-queue-emails button-disabled'>Send Queued Emails "
2678
  "Now</span>"
2679
  msgstr ""
2680
 
2681
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:44
2682
  msgid "<br /><span class='es-helper'>No emails found in queue</span>"
2683
  msgstr ""
2684
 
2685
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:89
2686
  msgid "Sr No"
2687
  msgstr ""
2688
 
2689
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:92
2690
  msgid "Sent Date"
2691
  msgstr ""
2692
 
2693
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:93
2694
  msgid "Viewed Status"
2695
  msgstr ""
2696
 
2697
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:94
2698
  msgid "Viewed Date"
2699
  msgstr ""
2700
 
2701
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:158
2702
  msgid "Viewed"
2703
  msgstr ""
2704
 
2705
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:158
2706
  msgid "Not yet viewed"
2707
  msgstr ""
2708
 
2709
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:171
2710
  msgid "No Reports avaliable."
2711
  msgstr ""
2712
 
2713
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:213
2714
  msgid "Completed"
2715
  msgstr ""
2716
 
2717
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:253
2718
  msgid "View"
2719
  msgstr ""
2720
 
2721
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:255
2722
- msgid "Preview"
2723
- msgstr ""
2724
-
2725
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:273
2726
  msgid "Start Date"
2727
  msgstr ""
2728
 
2729
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:274
2730
  msgid "End Date"
2731
  msgstr ""
2732
 
2733
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:422
2734
  msgid "You do not have permission to view notification"
2735
  msgstr ""
2736
 
2737
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:434
2738
  msgid "You do not have permission to delete notification"
2739
  msgstr ""
2740
 
2741
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:440
2742
  msgid "Report has been deleted successfully!"
2743
  msgstr ""
2744
 
2745
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:449
2746
  msgid "You do not have permission to preview notification"
2747
  msgstr ""
2748
 
2749
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:467
2750
  msgid "Reports have been deleted successfully!"
2751
  msgstr ""
2752
 
2753
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:479
2754
  msgid "Preview Email"
2755
  msgstr ""
2756
 
2757
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:482
2758
  msgid ""
2759
  "This is how the email you sent may look. <br>Note: Different email services "
2760
  "(like gmail, yahoo etc) display email content differently. So there could be "
@@ -2783,14 +3204,18 @@ msgstr ""
2783
  msgid "Preview Template"
2784
  msgstr ""
2785
 
2786
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:222
2787
  msgid "Template Type"
2788
  msgstr ""
2789
 
2790
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:259
2791
  msgid "Duplicate"
2792
  msgstr ""
2793
 
 
 
 
 
2794
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-tools.php:54
2795
  msgid "Email has been sent. Please check your inbox"
2796
  msgstr ""
@@ -2820,11 +3245,11 @@ msgstr ""
2820
  msgid "%s ago"
2821
  msgstr ""
2822
 
2823
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflow.php:866
2824
  msgid "Missing action_name key in array."
2825
  msgstr ""
2826
 
2827
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflow.php:872
2828
  msgid "Could not retrieve the action."
2829
  msgstr ""
2830
 
@@ -2862,80 +3287,76 @@ msgstr ""
2862
  msgid "An error has occured. Please try again later"
2863
  msgstr ""
2864
 
2865
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:206
2866
  msgid "No Workflows Found."
2867
  msgstr ""
2868
 
2869
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:259
2870
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/action.php:29
2871
  msgid "Edit"
2872
  msgstr ""
2873
 
2874
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:278
2875
  msgid "Toggle Status"
2876
  msgstr ""
2877
 
2878
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:289
2879
  msgid "Title"
2880
  msgstr ""
2881
 
2882
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:319
2883
- msgid "Activate"
2884
- msgstr ""
2885
-
2886
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:320
2887
  msgid "Deactivate"
2888
  msgstr ""
2889
 
2890
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:341
2891
  msgid "Search Workflows"
2892
  msgstr ""
2893
 
2894
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:386
2895
  msgid "You are not allowed to delete workflow."
2896
  msgstr ""
2897
 
2898
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:392
2899
  msgid "Workflow has been deleted successfully!"
2900
  msgstr ""
2901
 
2902
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:409
2903
  msgid "Workflow(s) have been deleted successfully!"
2904
  msgstr ""
2905
 
2906
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:413
2907
  msgid "Please check workflow(s) to delete."
2908
  msgstr ""
2909
 
2910
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:427
2911
  msgid "activated"
2912
  msgstr ""
2913
 
2914
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:427
2915
  msgid "deactivated"
2916
  msgstr ""
2917
 
2918
  #. %s: Workflow action
2919
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:430
2920
  #, php-format
2921
  msgid "Workflow(s) have been %s successfully!"
2922
  msgstr ""
2923
 
2924
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:435
2925
  msgid "activate"
2926
  msgstr ""
2927
 
2928
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:435
2929
  msgid "deactivate"
2930
  msgstr ""
2931
 
2932
  #. %s: Workflow action
2933
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:438
2934
  #, php-format
2935
  msgid "Please check workflow(s) to %s."
2936
  msgstr ""
2937
 
2938
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/partials/class-es-shortcode.php:255
2939
  msgid "Select List(s)"
2940
  msgstr ""
2941
 
@@ -2956,7 +3377,8 @@ msgid "Remove from list"
2956
  msgstr ""
2957
 
2958
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-cf7-submitted.php:23
2959
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:24
 
2960
  msgid "Contact Form 7 Submitted"
2961
  msgstr ""
2962
 
@@ -2965,6 +3387,7 @@ msgid "Fires whenever someone fill the Contact Form 7 form."
2965
  msgstr ""
2966
 
2967
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-cf7-submitted.php:25
 
2968
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-gravity-forms-submitted.php:25
2969
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-ninja-forms-submitted.php:25
2970
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-wpforms-submitted.php:25
@@ -2972,8 +3395,6 @@ msgid "Form"
2972
  msgstr ""
2973
 
2974
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-comment-added.php:23
2975
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:371
2976
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:21
2977
  msgid "Comment added"
2978
  msgstr ""
2979
 
@@ -2990,8 +3411,6 @@ msgid "Comment"
2990
  msgstr ""
2991
 
2992
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-edd-purchase-completed.php:23
2993
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:379
2994
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:31
2995
  msgid "EDD purchase completed"
2996
  msgstr ""
2997
 
@@ -3005,8 +3424,36 @@ msgstr ""
3005
  msgid "Order"
3006
  msgstr ""
3007
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3008
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-give-donation-made.php:23
3009
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:32
3010
  msgid "Give donation"
3011
  msgstr ""
3012
 
@@ -3015,7 +3462,8 @@ msgid "Fires whenever someone make a donation using Give."
3015
  msgstr ""
3016
 
3017
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-gravity-forms-submitted.php:23
3018
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:27
 
3019
  msgid "Gravity Form Submitted"
3020
  msgstr ""
3021
 
@@ -3024,7 +3472,8 @@ msgid "Fires whenever someone fill up Gravity Forms."
3024
  msgstr ""
3025
 
3026
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-ninja-forms-submitted.php:23
3027
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:26
 
3028
  msgid "Ninja Form Submitted"
3029
  msgstr ""
3030
 
@@ -3033,8 +3482,6 @@ msgid "Fires whenever someone fill up Ninja Forms."
3033
  msgstr ""
3034
 
3035
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-wc-order-completed.php:23
3036
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:375
3037
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:30
3038
  msgid "WooCommerce order completed"
3039
  msgstr ""
3040
 
@@ -3043,7 +3490,8 @@ msgid "Fires whenever WooCommerce order gets completed."
3043
  msgstr ""
3044
 
3045
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-wpforms-submitted.php:23
3046
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:25
 
3047
  msgid "WP Form Submitted"
3048
  msgstr ""
3049
 
@@ -3084,7 +3532,7 @@ msgstr ""
3084
 
3085
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/abstracts/class-es-workflow-action.php:168
3086
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/abstracts/class-es-workflow-action.php:183
3087
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/abstracts/class-es-workflow-trigger.php:321
3088
  msgid "Other"
3089
  msgstr ""
3090
 
@@ -3109,7 +3557,7 @@ msgid "Add title"
3109
  msgstr ""
3110
 
3111
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/class-es-workflow-admin-edit.php:232
3112
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:42
3113
  msgid "Trigger"
3114
  msgstr ""
3115
 
@@ -3126,38 +3574,36 @@ msgstr ""
3126
  msgid "Options"
3127
  msgstr ""
3128
 
3129
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:367
3130
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/triggers/class-es-trigger-user-registered.php:31
3131
- msgid "User registered"
3132
- msgstr ""
3133
-
3134
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:383
3135
- msgid "Contact Form 7 submitted"
3136
  msgstr ""
3137
 
3138
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:387
3139
- msgid "Ninja Form submitted"
 
3140
  msgstr ""
3141
 
3142
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:391
3143
- msgid "WP Form submitted"
 
3144
  msgstr ""
3145
 
3146
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:395
3147
- msgid "Give donation made"
 
3148
  msgstr ""
3149
 
3150
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:399
3151
- msgid "Gravity Form submitted"
 
3152
  msgstr ""
3153
 
3154
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:419
3155
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/triggers/class-es-trigger-user-deleted.php:31
3156
  msgid "User deleted"
3157
  msgstr ""
3158
 
3159
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:427
3160
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/triggers/class-es-trigger-user-updated.php:31
3161
  msgid "User updated"
3162
  msgstr ""
3163
 
@@ -3174,7 +3620,7 @@ msgid "Select"
3174
  msgstr ""
3175
 
3176
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/fields/class-es-select.php:80
3177
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:46
3178
  msgid "[Select]"
3179
  msgstr ""
3180
 
@@ -3204,6 +3650,10 @@ msgid ""
3204
  "database."
3205
  msgstr ""
3206
 
 
 
 
 
3207
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/triggers/class-es-trigger-user-deleted.php:32
3208
  msgid "Fires when user deleted from WordPress ."
3209
  msgstr ""
@@ -3218,6 +3668,10 @@ msgstr ""
3218
  msgid "Fires when someone signup."
3219
  msgstr ""
3220
 
 
 
 
 
3221
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/triggers/class-es-trigger-user-updated.php:32
3222
  msgid "Fires when a user is updated."
3223
  msgstr ""
3
  msgstr ""
4
  "Project-Id-Version: Email Subscribers & Newsletters\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2020-05-14 07:36+0000\n"
7
  "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
8
  "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
9
  "Language-Team: \n"
54
  msgid "Connect to Icegram"
55
  msgstr ""
56
 
57
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:112
58
  msgid "Sequence"
59
  msgstr ""
60
 
61
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:213
 
62
  msgid "Google Analytics link tracking"
63
  msgstr ""
64
 
65
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:214
66
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:511
67
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:788
68
  msgid "Get Spam Score"
69
  msgstr ""
70
 
71
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:224
72
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:593
73
  msgid "Campaign Name"
74
  msgstr ""
75
 
76
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:224
 
77
  msgid ""
78
  "This will be appended to every URL in this template with parameters: "
79
+ "utm_source=es&utm_medium=email&utm_campaign=campaign_name"
80
  msgstr ""
81
 
82
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:232
83
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:513
84
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:375
85
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:789
86
  msgid "Check"
87
  msgstr ""
88
 
89
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:236
90
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:525
91
  msgid "Awesome score. Your email is almost perfect."
92
  msgstr ""
93
 
94
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:237
95
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:526
96
  msgid "Ouch! your email needs improvement. "
97
  msgstr ""
98
 
99
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:239
100
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:529
101
  msgid "Here are some things to fix: "
102
  msgstr ""
103
 
104
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:351
105
+ msgid "Please enter an email address."
106
+ msgstr ""
107
+
108
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:352
109
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:130
110
+ msgid "Please add email body."
111
+ msgstr ""
112
+
113
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:462
114
  msgid "Clean My List"
115
  msgstr ""
116
 
117
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:463
118
  msgid "List cleanup is in progress..."
119
  msgstr ""
120
 
121
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:464
122
  msgid "List cleanup completed successfully."
123
  msgstr ""
124
 
125
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:472
126
  msgid "Email Status"
127
  msgstr ""
128
 
129
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:523
130
+ msgid "Spam score"
131
  msgstr ""
132
 
133
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:536
134
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:394
135
+ msgid "Close"
136
  msgstr ""
137
 
138
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:562
139
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:675
140
+ msgid "Link Tracking"
141
+ msgstr ""
142
+
143
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:578
144
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:796
145
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:180
146
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:689
147
+ msgid "UTM Tracking"
148
+ msgstr ""
149
+
150
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:624
151
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:719
152
+ msgid "Send Options"
153
+ msgstr ""
154
+
155
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:627
156
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:722
157
+ msgid "Schedule for Later"
158
  msgstr ""
159
 
160
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:640
161
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:728
162
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/fields/class-es-date.php:32
163
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-timing.php:83
164
  msgid "Date"
165
  msgstr ""
166
 
167
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:651
168
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:737
169
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/fields/class-es-time.php:65
170
  msgid "Time"
171
  msgstr ""
172
 
173
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:662
174
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:747
175
+ msgid "Local Time: "
176
+ msgstr ""
177
+
178
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:670
179
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:754
180
+ msgid "Send Now"
181
+ msgstr ""
182
+
183
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:690
184
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:699
185
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:659
186
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:180
187
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:706
188
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:958
189
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:309
190
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:341
191
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:91
192
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/partials/class-es-shortcode.php:151
193
+ msgid "Email"
194
  msgstr ""
195
 
196
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:694
197
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:663
198
+ msgid "Enter email"
199
  msgstr ""
200
 
201
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:704
202
+ msgid "Send Preview Email"
203
+ msgstr ""
204
+
205
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:712
206
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:488
207
  msgid "Something went wrong"
208
  msgstr ""
209
 
210
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:742
211
  msgid "SUCCESS"
212
  msgstr ""
213
 
214
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:753
215
  msgid "Select page"
216
  msgstr ""
217
 
218
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:766
219
+ msgid ""
220
+ "Subscriber will be redirected to selected page once they click on "
221
+ "unsubscribe link from the email."
222
  msgstr ""
223
 
224
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:779
225
+ msgid ""
226
+ "Subscriber will be redirected to selected page once they click on email "
227
+ "confirmation link from the Double Opt In (confirmation) Email."
228
  msgstr ""
229
 
230
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:788
231
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:160
232
+ msgid "Track Clicks"
233
+ msgstr ""
234
+
235
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:863
236
  msgid "Clicked"
237
  msgstr ""
238
 
239
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:913
240
  msgid "Add Customer to Product specific list"
241
  msgstr ""
242
 
243
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:921
244
  msgid "Add Customer to Product variation list"
245
  msgstr ""
246
 
250
  msgstr ""
251
 
252
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-post-digest.php:37
253
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:304
254
  msgid "Select template"
255
  msgstr ""
256
 
257
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-post-digest.php:38
258
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:305
259
  msgid "Content of the selected template will be sent out as post notification."
260
  msgstr ""
261
 
348
  msgstr ""
349
 
350
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:47
351
+ msgid ""
352
+ "<a href=\"admin.php?page=es_campaigns\"><span class=\"text-base font-medium "
353
+ "leading-7 text-indigo-600 sm:leading-9 sm:truncate\">Campaigns</span></a> "
354
+ "<svg fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-"
355
+ "width=\"2\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" class=\"w-4 h-4 "
356
+ "inline-block align-middle\"><path d=\"M9 5l7 7-7 7\"></path></svg><span "
357
+ "class=\"text-2xl font-medium leading-7 text-gray-900 sm:leading-9 sm:"
358
+ "truncate\"> New Sequence</span>"
359
  msgstr ""
360
 
361
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:50
362
+ msgid ""
363
+ "<a href=\"admin.php?page=es_campaigns\"><span class=\"text-base font-medium "
364
+ "leading-7 text-indigo-600 sm:leading-9 sm:truncate\">Campaigns</span></a> "
365
+ "<svg fill=\"none\" stroke-linecap=\"round\" stroke-linejoin=\"round\" stroke-"
366
+ "width=\"2\" stroke=\"currentColor\" viewBox=\"0 0 24 24\" class=\"w-4 h-4 "
367
+ "inline-block align-middle\"><path d=\"M9 5l7 7-7 7\"></path></svg> Edit "
368
+ "Sequence"
369
  msgstr ""
370
 
371
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:78
383
 
384
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:134
385
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:195
386
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1230
387
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1251
388
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:126
389
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:45
390
  msgid "Please select list."
391
  msgstr ""
422
  msgstr ""
423
 
424
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:349
425
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:358
426
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:387
427
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:419
428
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:459
429
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:248
430
  msgid "Content"
431
  msgstr ""
432
 
438
  msgid "Add campaign name for utm tracking"
439
  msgstr ""
440
 
441
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:399
442
+ msgid "When to send"
443
+ msgstr ""
444
+
445
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:401
446
  msgid " after"
447
  msgstr ""
450
  msgid " after subscription"
451
  msgstr ""
452
 
453
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:192
454
  msgid "Are You a Human? "
455
  msgstr ""
456
 
457
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:313
458
  msgid ""
459
+ "<span class=\"es-send-success es-icon\"></span> We will take care of it. You "
460
  "don't need to visit this URL manually."
461
  msgstr ""
462
 
463
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:324
464
  msgid "SMTP Host"
465
  msgstr ""
466
 
467
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:331
468
  msgid "None"
469
  msgstr ""
470
 
471
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:331
472
  msgid "SSL"
473
  msgstr ""
474
 
475
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:331
476
  msgid "TLS"
477
  msgstr ""
478
 
479
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:336
480
  msgid "Encryption"
481
  msgstr ""
482
 
483
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:348
484
  msgid "SMTP Port"
485
  msgstr ""
486
 
487
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:355
488
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:286
489
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:232
 
 
 
490
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-sync-wp-user.php:67
491
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-widget.php:49
492
  msgid "No"
493
  msgstr ""
494
 
495
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:355
496
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:289
497
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:231
 
 
 
498
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-sync-wp-user.php:70
499
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-widget.php:49
500
  msgid "Yes"
501
  msgstr ""
502
 
503
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:360
504
  msgid "Authentication"
505
  msgstr ""
506
 
507
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:372
508
  msgid "SMTP Username"
509
  msgstr ""
510
 
511
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:384
512
  msgid "SMTP Password"
513
  msgstr ""
514
 
515
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:394
516
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:211
517
  msgid "Block Known Attackers"
518
  msgstr ""
519
 
520
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:395
521
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:212
522
  msgid ""
523
  "Stop known spam bot attacker domains from signing up. Keeps this list up-to-"
524
  "date with Icegram servers."
525
  msgstr ""
526
 
527
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:402
528
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:222
529
  msgid "Block Temporary / Fake Emails"
530
  msgstr ""
531
 
532
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:403
533
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:223
534
  msgid ""
535
  "Plenty of sites provide disposable / fake / temporary email addresses. "
536
  "People use them when they don't want to give you their real email. Block "
537
  "these to keep your list clean. Automatically updated."
538
  msgstr ""
539
 
540
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:411
541
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:234
542
  msgid "Enable Captcha"
543
  msgstr ""
544
 
545
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:412
546
+ msgid "Set default captcha option for new forms"
547
  msgstr ""
548
 
549
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:431
550
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:436
551
  msgid "Comment Opt-In Consent"
552
  msgstr ""
553
 
554
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:432
555
  msgid "This will show up at comment form next to consent checkbox."
556
  msgstr ""
557
 
558
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:443
559
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:447
 
 
 
 
560
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:266
561
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:368
562
  msgid "Opt-In Consent Text"
563
  msgstr ""
564
 
565
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:457
566
  msgid "Allow user to select list(s) while unsubscribe"
567
  msgstr ""
568
 
569
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:537
570
  msgid "Custom CSS"
571
  msgstr ""
572
 
573
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:610
574
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:141
575
  msgid "User Roles"
576
  msgstr ""
577
 
578
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:631
579
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:81
580
  msgid "Roles"
581
  msgstr ""
582
 
583
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:632
584
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:224
585
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:224
586
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:82
587
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:66
588
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:142
589
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:312
590
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:76
591
  msgid "Audience"
592
  msgstr ""
593
 
594
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:633
595
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:218
596
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:218
597
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:83
598
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:38
599
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:39
600
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:83
601
  msgid "Forms"
602
  msgstr ""
603
 
604
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:634
605
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:206
606
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:206
607
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:84
608
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:8
609
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:103
610
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:233
611
  msgid "Campaigns"
612
  msgstr ""
613
 
614
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:635
615
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:233
616
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:233
617
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:85
618
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:193
619
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:20
620
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:37
621
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:76
622
  msgid "Reports"
623
  msgstr ""
624
 
625
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:636
626
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:86
627
  msgid "Sequences"
628
  msgstr ""
629
 
630
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:637
631
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:196
632
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:196
633
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:87
634
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:54
635
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:150
636
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/class-es-workflow-admin-edit.php:184
637
  msgid "Workflows"
638
  msgstr ""
639
 
640
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:867
641
  msgid "Unsubscribe from all the lists"
642
  msgstr ""
643
 
644
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:965
645
  msgid "Inline CSS"
646
  msgstr ""
647
 
648
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:1123
649
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:610
650
+ msgid "Show a captcha to protect from bot signups."
651
+ msgstr ""
652
+
653
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:72
654
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:268
655
  msgid "Comments"
656
  msgstr ""
657
 
658
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:82
659
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:279
660
  msgid "WooCommerce"
661
  msgstr ""
662
 
663
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:91
664
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:328
665
  msgid "EDD"
666
  msgstr ""
667
 
668
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:100
669
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:289
670
  msgid "Contact Form 7"
671
  msgstr ""
672
 
673
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:109
674
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:298
675
  msgid "WPForms"
676
  msgstr ""
677
 
678
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:118
679
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:308
680
  msgid "Give"
681
  msgstr ""
682
 
683
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:127
684
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:318
685
  msgid "Ninja Forms"
686
  msgstr ""
687
 
699
 
700
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:241
701
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-sync-wp-user.php:31
702
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:665
703
  msgid "Please select list"
704
  msgstr ""
705
 
713
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:503
714
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:590
715
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-sync-wp-user.php:77
716
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:291
717
  msgid "Select List"
718
  msgstr ""
719
 
720
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:326
721
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:795
722
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-sync-wp-user.php:91
723
  msgid "Save Settings"
724
  msgstr ""
851
  "Select the list in which you want to make Ninja Forms contacts subscribed to"
852
  msgstr ""
853
 
854
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:126
855
+ msgid "An error has occured. Please try again later."
856
+ msgstr ""
857
+
858
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:127
859
+ msgid "Broadcast saved as draft successfully."
860
+ msgstr ""
861
+
862
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:128
863
+ msgid ""
864
+ "An error has occured while saving the broadcast. Please try again later."
865
+ msgstr ""
866
+
867
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:129
868
+ msgid "Please add a broadcast subject before saving."
869
+ msgstr ""
870
+
871
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:146
872
  msgid "Please select a trigger before saving the workflow."
873
  msgstr ""
874
 
875
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:147
876
  msgid "Please add some actions before saving the workflow."
877
  msgstr ""
878
 
879
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:148
880
  msgid ""
881
  "Changing the trigger will remove existing actions. Do you want to proceed "
882
  "anyway?."
883
  msgstr ""
884
 
885
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:186
886
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:918
887
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-form-widget.php:11
888
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-old-widget.php:11
889
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-old-widget.php:12
891
  msgid "Email Subscribers"
892
  msgstr ""
893
 
894
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:189
895
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:59
896
  msgid "Dashboard"
897
  msgstr ""
898
 
899
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:209
900
  msgid "Post Notifications"
901
  msgstr ""
902
 
903
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:210
904
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:109
905
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:283
906
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:242
907
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:196
908
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:34
909
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:263
910
  msgid "Broadcast"
911
  msgstr ""
912
 
913
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:211
914
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:389
915
  msgid "Template Preview"
916
  msgstr ""
917
 
918
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:228
919
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:391
920
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:37
921
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:77
922
  msgid "Lists"
923
  msgstr ""
924
 
925
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:237
926
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:195
927
  msgid "Settings"
928
  msgstr ""
929
 
930
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:241
931
  msgid "Go To Icegram"
932
  msgstr ""
933
 
934
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:759
935
+ #, php-format
936
+ msgid ""
937
+ "<span id=\"footer-thankyou\">Thank you for creating with <a href=\"%s\" "
938
+ "target=\"_blank\">WordPress</a> | Email Subscribers <b>%s</b>. Developed by "
939
+ "team <a href=\"%s\" target=\"_blank\">Icegram</a></span>"
940
+ msgstr ""
941
+
942
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:308
943
  #, php-format
944
  msgid ""
945
  "WordPress Cron is disable on your site. Email notifications from Email "
947
  "target=\"_blank\" >Here's how you can enable it.</a>"
948
  msgstr ""
949
 
950
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:309
951
  #, php-format
952
  msgid "Or schedule Cron in <a href=\"%s\" target=\"_blank\">cPanel</a>"
953
  msgstr ""
954
 
955
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:310
956
  #, php-format
957
  msgid ""
958
  "Or use <strong><a href=\"%s\" target=\"_blank\">Email Subscribers Pro</a>"
959
  "</strong> for automatic Cron support"
960
  msgstr ""
961
 
962
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:311
963
  msgid "OK, I Got it!"
964
  msgstr ""
965
 
966
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:1027
967
  #, php-format
968
  msgid "%1$s in %2$s on line %3$s"
969
  msgstr ""
970
 
971
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:90
972
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:290
973
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:536
974
  msgid "Subscribed"
975
  msgstr ""
976
 
977
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:91
978
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:538
979
  msgid "Unconfirmed"
980
  msgstr ""
981
 
982
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:92
983
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:298
984
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:537
985
  msgid "Unsubscribed"
986
  msgstr ""
987
 
988
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:115
989
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:322
990
  msgid "Select Status"
991
  msgstr ""
992
 
993
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:236
994
  msgid "Select Template"
995
  msgstr ""
996
 
997
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:274
998
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/help.php:187
999
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:246
1000
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-save.php:29
1001
  msgid "Active"
1002
  msgstr ""
1003
 
1004
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:275
1005
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/help.php:189
1006
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-save.php:28
1007
  msgid "Inactive"
1008
  msgstr ""
1009
 
1010
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:343
1011
  msgid "Select Categories"
1012
  msgstr ""
1013
 
1014
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:356
1015
  msgid "All Categories (Also include all categories which will create later)"
1016
  msgstr ""
1017
 
1018
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:389
1019
  msgid "No Custom Post Types Available"
1020
  msgstr ""
1021
 
1022
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:405
1023
  msgid "Single Opt-In"
1024
  msgstr ""
1025
 
1026
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:406
1027
  msgid "Double Opt-In"
1028
  msgstr ""
1029
 
1030
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:421
1031
  msgid "Full Size"
1032
  msgstr ""
1033
 
1034
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:422
1035
  msgid "Medium Size"
1036
  msgstr ""
1037
 
1038
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:423
1039
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:244
1040
  msgid "Thumbnail"
1041
  msgstr ""
1042
 
1043
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1249
1044
+ msgid "8 Tips To Improve Email Open Rates"
1045
+ msgstr ""
1046
+
1047
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1250
1048
+ msgid "Prevent Your Email From Landing In Spam"
1049
+ msgstr ""
1050
+
1051
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1251
1052
+ msgid "<b>Email Subscribers Secret Club</b>"
1053
+ msgstr ""
1054
+
1055
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1251
1056
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:124
1057
  msgid "Join Now"
1058
  msgstr ""
1059
 
1060
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1252
1061
+ msgid "Best Way To Keep Customers Engaged"
1062
+ msgstr ""
1063
+
1064
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1253
1065
+ msgid "Access Control"
1066
+ msgstr ""
1067
+
1068
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1254
1069
+ msgid "Prevent Spam Subscription Using Captcha"
1070
+ msgstr ""
1071
+
1072
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1255
1073
+ msgid "Email Subscribers PRO"
1074
+ msgstr ""
1075
+
1076
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1255
1077
  msgid "Lifetime"
1078
  msgstr ""
1079
 
1087
 
1088
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:56
1089
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:83
1090
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:299
1091
  msgid "Send"
1092
  msgstr ""
1093
 
1121
  msgid "Send my feedback to <b>Icegram team</b>"
1122
  msgstr ""
1123
 
1124
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:293
1125
+ msgid "Broadcast Created Successfully!"
1126
+ msgstr ""
1127
+
1128
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:295
1129
+ msgid ""
1130
+ "If you like new Broadcast UI, leave us a <b>5 stars review</b>. <br /><br />"
1131
+ "Do you have a feedback? Contact Us."
1132
+ msgstr ""
1133
+
1134
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:299
1135
+ msgid "Leave Review"
1136
+ msgstr ""
1137
+
1138
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/feedback.php:302
1139
+ msgid "Contact Us"
1140
+ msgstr ""
1141
+
1142
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:166
1143
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:186
1144
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:241
1145
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:767
1146
+ #, php-format
1147
+ msgid "<a href='%s' target='_blank'>Upgrade to ES PRO</a>"
1148
+ msgstr ""
1149
+
1150
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:167
1151
+ msgid "Get insights about link clicks. See who are clicking on which links?"
1152
+ msgstr ""
1153
+
1154
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:187
1155
+ msgid "Get insights about UTM tracking."
1156
+ msgstr ""
1157
+
1158
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:235
1159
+ msgid "Show a captcha in subscription forms to protect from bot signups."
1160
+ msgstr ""
1161
+
1162
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:242
1163
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:641
1164
+ msgid "Secure your form and avoid spam signups with form Captcha"
1165
+ msgstr ""
1166
+
1167
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:356
1168
  msgid "Sync Comment Users"
1169
  msgstr ""
1170
 
1171
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:357
1172
  msgid ""
1173
  "Quickly add to your mailing list when someone post a comment on your website."
1174
  msgstr ""
1175
 
1176
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:358
1177
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:387
1178
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:420
1179
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:452
1180
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:484
1181
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:516
1182
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:548
1183
  msgid "How to setup?"
1184
  msgstr ""
1185
 
1186
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:359
1187
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:388
1188
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:421
1189
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:453
1190
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:485
1191
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:517
1192
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:549
1193
  msgid "Once you upgrade to "
1194
  msgstr ""
1195
 
1196
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:359
1197
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:362
1198
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:388
1199
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:421
1200
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:453
1201
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:485
1202
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:517
1203
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:549
1204
  msgid "Email Subscribers Starter"
1205
  msgstr ""
1206
 
1207
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:359
1208
  msgid ""
1209
  "you will have settings panel where you need to enable Comment user sync and "
1210
  "select the list in which you want to add people whenever someone post a\n"
1211
+ "\t\tcomment."
1212
  msgstr ""
1213
 
1214
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:362
1215
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:392
1216
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:424
1217
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:456
1218
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:488
1219
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:520
1220
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:552
1221
  msgid "Checkout "
1222
  msgstr ""
1223
 
1224
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:362
1225
  msgid "now"
1226
  msgstr ""
1227
 
1228
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:385
1229
  msgid "Sync WooCommerce Customers"
1230
  msgstr ""
1231
 
1232
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:386
1233
  msgid ""
1234
  "Are you using WooCommerce for your online business? You can use this "
1235
  "integration to add to a specific list whenever someone make a purchase from "
1236
  "you"
1237
  msgstr ""
1238
 
1239
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:388
1240
  msgid ""
1241
  "you will have settings panel where you need to enable WooCommerce sync and "
1242
  "select the list in which you want to add people whenever they\n"
1243
+ "\t\t\tpurchase something\n"
1244
+ "\t\t\tfrom you."
1245
  msgstr ""
1246
 
1247
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:418
1248
  msgid "Sync Contact Form 7 users"
1249
  msgstr ""
1250
 
1251
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:419
1252
  msgid ""
1253
  "Are you using Contact Form 7 for your list building? You can use this "
1254
  "integration to add to a specific list whenever new subscribers added from "
1255
  "Contact Form 7"
1256
  msgstr ""
1257
 
1258
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:422
1259
  msgid ""
1260
  "you will have settings panel where you need to enable Contact form 7 sync "
1261
  "and select the list in which you want to add people whenever they fill any "
1262
  "of the Contact Form."
1263
  msgstr ""
1264
 
1265
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:450
1266
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:482
1267
  msgid "Sync Donors"
1268
  msgstr ""
1269
 
1270
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:451
1271
  msgid ""
1272
  "We found that you are using Give WordPress plugin to collect donations. Now, "
1273
  "with this integration, you can add your donors to any of your subscriber "
1274
  "list and send them Newsletters in future."
1275
  msgstr ""
1276
 
1277
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:454
1278
  msgid ""
1279
  "you will have settings panel where you need to enable Give integration and "
1280
  "select the list in which you want to add people whenever they make donation."
1281
  msgstr ""
1282
 
1283
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:483
1284
  msgid ""
1285
  "Are you using Give WordPress plugin to collect donations? Want to send Thank "
1286
  "You email to them? You can use this integration to be in touch with them."
1287
  msgstr ""
1288
 
1289
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:486
1290
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:518
1291
  msgid ""
1292
  "you will have settings panel where you need to enable Give sync and select "
1293
  "the list in which you want to add people whenever they make donation."
1294
  msgstr ""
1295
 
1296
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:514
1297
  msgid "Sync Contacts"
1298
  msgstr ""
1299
 
1300
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:515
1301
  msgid ""
1302
  "We found that you are using Ninja Forms. Want to add your contact to a "
1303
  "mailing list? You can use this integration to add your contact to add into "
1304
  "mailing list"
1305
  msgstr ""
1306
 
1307
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:546
1308
  msgid "Sync Customers"
1309
  msgstr ""
1310
 
1311
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:547
1312
  msgid ""
1313
  "We found that you are using EDD to sell digital goods online. You can use "
1314
  "this integration to send Newsletters/ Post Notifications to your customers."
1315
  msgstr ""
1316
 
1317
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:550
1318
  msgid ""
1319
  "you will have settings panel where you need to enable EDD sync and select "
1320
  "the list in which you want to add people whenever they purchase something "
1321
  "from you."
1322
  msgstr ""
1323
 
1324
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:659
1325
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:675
1326
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:689
1327
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:719
1328
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:788
1329
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:94
1330
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:724
1331
+ msgid "Premium"
1332
+ msgstr ""
1333
+
1334
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:771
1335
+ msgid ""
1336
+ "Link Tracking, UTM Tracking and Scheduling Options are part of Email "
1337
+ "Subscribers PRO"
1338
+ msgstr ""
1339
+
1340
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/class-email-subscribers-public.php:110
1341
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-subscription.php:420
1342
  msgid "Please enter email address"
1390
  msgstr ""
1391
 
1392
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:111
1393
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:192
1394
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:35
1395
  msgid "Post Notification"
1396
  msgstr ""
1403
  msgid "In Queue"
1404
  msgstr ""
1405
 
1406
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:60
1407
+ msgid "Started at"
1408
+ msgstr ""
1409
+
1410
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:79
1411
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:136
1412
+ msgid "Opens"
1413
+ msgstr ""
1414
+
1415
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:88
1416
+ msgid "Clicks"
1417
+ msgstr ""
1418
+
1419
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:97
1420
+ msgid "Lost"
1421
+ msgstr ""
1422
+
1423
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:75
1424
+ msgid "Create"
1425
+ msgstr ""
1426
+
1427
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:86
1428
+ msgid "New Broadcast"
1429
+ msgstr ""
1430
+
1431
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:88
1432
+ msgid "New Post Notification"
1433
+ msgstr ""
1434
+
1435
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:91
1436
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:93
1437
+ msgid "New Sequence"
1438
+ msgstr ""
1439
+
1440
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:99
1441
+ msgid "New Template"
1442
+ msgstr ""
1443
+
1444
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:103
1445
+ msgid "New Form"
1446
+ msgstr ""
1447
+
1448
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:104
1449
+ msgid "New List"
1450
+ msgstr ""
1451
+
1452
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:105
1453
+ msgid "New Contact"
1454
+ msgstr ""
1455
+
1456
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:120
1457
+ msgid " active contacts"
1458
+ msgstr ""
1459
+
1460
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:128
1461
+ msgid "Last 60 days"
1462
+ msgstr ""
1463
+
1464
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:144
1465
+ msgid " Avg Open Rate"
1466
+ msgstr ""
1467
+
1468
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:152
1469
+ msgid "Messages Sent"
1470
+ msgstr ""
1471
+
1472
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:160
1473
+ msgid "Avg Click Rate"
1474
+ msgstr ""
1475
+
1476
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:193
1477
+ msgid "Jump to: "
1478
+ msgstr ""
1479
+
1480
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:193
1481
+ msgid "Templates"
1482
+ msgstr ""
1483
+
1484
  #. Author of the plugin
1485
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/help.php:28
1486
  msgid "Icegram"
1560
  msgid "Contact US"
1561
  msgstr ""
1562
 
1563
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/help.php:158
1564
+ msgid "Other awesome plugins from same author"
1565
+ msgstr ""
1566
+
1567
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/help.php:185
1568
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:486
1569
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:311
1570
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:92
1571
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:274
1572
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:294
1573
  msgid "Status"
1574
  msgstr ""
1575
 
1576
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/help.php:191
1577
+ msgid "Not Installed"
1578
+ msgstr ""
1579
+
1580
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/help.php:202
1581
+ msgid "Install"
1582
+ msgstr ""
1583
+
1584
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/help.php:205
1585
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:322
1586
+ msgid "Activate"
1587
+ msgstr ""
1588
+
1589
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/onboarding.php:9
1590
  #, php-format
1591
  msgid ""
1628
  msgstr ""
1629
 
1630
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/onboarding.php:20
1631
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:167
1632
  msgid "Sender"
1633
  msgstr ""
1634
 
1719
  msgid "You do not have permission to update settings"
1720
  msgstr ""
1721
 
1722
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:123
1723
  msgid "General"
1724
  msgstr ""
1725
 
1726
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:124
1727
  msgid "Notifications"
1728
  msgstr ""
1729
 
1730
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:125
1731
  msgid "Email Sending"
1732
  msgstr ""
1733
 
1734
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:126
1735
  msgid "Security"
1736
  msgstr ""
1737
 
1738
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:171
1739
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:174
1740
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:482
1741
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:957
1742
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:358
1743
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:818
1744
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:535
1745
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/partials/class-es-shortcode.php:152
1746
  msgid "Name"
1747
  msgstr ""
1748
 
1749
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:172
1750
  msgid "Choose a FROM name for all the emails to be sent from this plugin."
1751
  msgstr ""
1752
 
1753
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:181
 
 
 
 
 
 
 
 
 
 
1754
  msgid ""
1755
  "Choose a FROM email address for all the emails to be sent from this plugin"
1756
  msgstr ""
1757
 
1758
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:183
1759
  msgid "Email Address"
1760
  msgstr ""
1761
 
1762
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:191
1763
  msgid "Email Addresses"
1764
  msgstr ""
1765
 
1766
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:193
1767
  msgid ""
1768
  "Enter the admin email addresses that should receive notifications (separated "
1769
  "by comma)."
1770
  msgstr ""
1771
 
1772
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:199
1773
  msgid "Opt-in Type"
1774
  msgstr ""
1775
 
1776
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:208
1777
  msgid "Image Size"
1778
  msgstr ""
1779
 
1780
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:211
1781
  msgid ""
1782
+ "Select image size for {{POSTIMAGE}} to be shown in the Post Notification "
1783
+ "Emails."
1784
  msgstr ""
1785
 
1786
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:217
1787
  msgid "Track Opens"
1788
  msgstr ""
1789
 
1790
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:229
 
 
 
 
1791
  msgid "Message to display after form submission"
1792
  msgstr ""
1793
 
1794
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:239
1795
  msgid "Show Unsubscribe Message In Email Footer"
1796
  msgstr ""
1797
 
1798
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:240
1799
  msgid ""
1800
  "Add text which you want your contact to see in footer to unsubscribe. Use "
1801
  "{{UNSUBSCRIBE-LINK}} keyword to add unsubscribe link."
1802
  msgstr ""
1803
 
1804
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:247
1805
  msgid "Subscription Success/ Error Messages"
1806
  msgstr ""
1807
 
1808
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:254
1809
  msgid "You have been subscribed successfully!"
1810
  msgstr ""
1811
 
1812
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:256
1813
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:286
1814
  msgid "Success Message"
1815
  msgstr ""
1816
 
1817
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:257
1818
  msgid ""
1819
  "Show this message if contact is successfully subscribed from Double Opt-In "
1820
  "(Confirmation) Email"
1821
  msgstr ""
1822
 
1823
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:265
1824
  msgid ""
1825
  "Oops.. Your request couldn't be completed. This email address seems to be "
1826
  "already subscribed / blocked."
1827
  msgstr ""
1828
 
1829
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:267
1830
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:298
1831
  msgid "Error Message"
1832
  msgstr ""
1833
 
1834
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:268
1835
  msgid ""
1836
  "Show this message if any error occured after clicking confirmation link from "
1837
  "Double Opt-In (Confirmation) Email."
1838
  msgstr ""
1839
 
1840
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:276
1841
  msgid "Unsubscribe Success/ Error Messages"
1842
  msgstr ""
1843
 
1844
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:284
1845
  msgid ""
1846
  "Thank You, You have been successfully unsubscribed. You will no longer hear "
1847
  "from us."
1848
  msgstr ""
1849
 
1850
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:287
1851
  msgid ""
1852
  "Once contact clicks on unsubscribe link, he/she will be redirected to a page "
1853
  "where this message will be shown."
1854
  msgstr ""
1855
 
1856
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:299
1857
  msgid ""
1858
  "Show this message if any error occured after clicking on unsubscribe link."
1859
  msgstr ""
1860
 
1861
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:329
1862
  msgid "Welcome Email"
1863
  msgstr ""
1864
 
1865
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:330
1866
+ msgid "Send welcome email to new contact after signup."
1867
  msgstr ""
1868
 
1869
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:335
1870
+ msgid "Enable?"
1871
  msgstr ""
1872
 
1873
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:348
1874
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:376
1875
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:411
1876
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:448
1877
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:321
1878
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:272
1879
  msgid "Subject"
1880
  msgstr ""
1881
 
1882
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:359
1883
  msgid ""
1884
  "Available keywords. {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}, {{EMAIL}}, {{LIST}"
1885
  "}, {{UNSUBSCRIBE-LINK}}"
1886
  msgstr ""
1887
 
1888
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:366
1889
  msgid "Confirmation Email"
1890
  msgstr ""
1891
 
1892
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:388
1893
  msgid ""
1894
  "If Double Optin is set, contact will receive confirmation email with above "
1895
  "content. You can use {{FIRSTNAME}}, {{LASTNAME}}, {{NAME}}, {{EMAIL}}, "
1896
  "{{SUBSCRIBE-LINK}} keywords"
1897
  msgstr ""
1898
 
1899
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:396
1900
  msgid "Admin Notification On New Subscription"
1901
  msgstr ""
1902
 
1903
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:397
1904
+ msgid "Notify admin(s) for new contact signup."
 
1905
  msgstr ""
1906
 
1907
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:402
1908
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:435
1909
+ msgid "Notify?"
1910
  msgstr ""
1911
 
1912
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:413
1928
  msgid "Admin Notification On Every Campaign Sent"
1929
  msgstr ""
1930
 
1931
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:430
1932
+ msgid "Notify admin(s) on every campaign sent."
1933
  msgstr ""
1934
 
1935
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:446
1936
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-mailer.php:354
1937
  msgid "Campaign Sent!"
1938
  msgstr ""
1939
 
1940
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:460
1941
  msgid ""
1942
  "Send report to admin(s) whenever campaign is successfully sent to all "
1943
  "contacts. Available Keywords: {{DATE}}, {{SUBJECT}}, {{COUNT}}"
1944
  msgstr ""
1945
 
1946
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:477
1947
  msgid "Cron URL"
1948
  msgstr ""
1949
 
1950
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:478
1951
+ #, php-format
1952
+ msgid ""
1953
+ "You need to visit this URL to send email notifications. Know <a href='%s' "
1954
+ "target='_blank'>how to run this in background</a>"
1955
+ msgstr ""
1956
+
1957
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:486
1958
  msgid "Disable WordPress Cron"
1959
  msgstr ""
1960
 
1961
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:487
1962
  msgid ""
1963
+ "Check this if you do not want Email Subscribers to use WP Cron to send "
1964
+ "emails."
1965
  msgstr ""
1966
 
1967
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:492
1968
  msgid "Send Emails At Most Every"
1969
  msgstr ""
1970
 
1971
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:495
1972
+ msgid "Optional if a real cron service is used"
1973
  msgstr ""
1974
 
1975
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:505
1976
  msgid "Maximum Emails To Send In An Hour"
1977
  msgstr ""
1978
 
1979
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:506
1980
  msgid "Total emails your host can send in an hour."
1981
  msgstr ""
1982
 
1983
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:516
1984
  msgid "Maximum Emails To Send At once"
1985
  msgstr ""
1986
 
1987
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:517
1988
  msgid "Maximum emails you want to send on every cron request."
1989
  msgstr ""
1990
 
1991
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:527
1992
  msgid "Send Test Email"
1993
  msgstr ""
1994
 
1995
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:528
1996
  msgid "Enter email address to send test email."
1997
  msgstr ""
1998
 
1999
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:538
2000
  msgid "Select Mailer"
2001
  msgstr ""
2002
 
2003
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:550
2004
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:872
2005
  msgid "Pepipost API key"
2006
  msgstr ""
2007
 
2008
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:567
2009
  msgid "Select a mailer to send mail"
2010
  msgstr ""
2011
 
2012
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:577
2013
  msgid "Blocked Domain(s)"
2014
  msgstr ""
2015
 
2016
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:579
2017
  msgid ""
2018
  "Seeing spam signups from particular domains? Enter domains names (one per "
2019
  "line) that you want to block here."
2020
  msgstr ""
2021
 
2022
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:871
2023
  msgid "Signup for Pepipost"
2024
  msgstr ""
2025
 
2026
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:872
2027
  msgid "How to find"
2028
  msgstr ""
2029
 
2036
  msgid "Number of campaigns per page"
2037
  msgstr ""
2038
 
2039
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:98
2040
+ msgid "Broadcast has been created successfully."
2041
+ msgstr ""
2042
+
2043
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:104
2044
  msgid "Create Post Notification"
2045
  msgstr ""
2046
 
2047
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:105
2048
  msgid "Send Broadcast"
2049
  msgstr ""
2050
 
2051
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:113
2052
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:115
2053
  msgid "Onsite Campaigns"
2054
  msgstr ""
2055
 
2056
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:118
2057
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:272
 
2058
  msgid "Manage Templates"
2059
  msgstr ""
2060
 
2061
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:230
2062
  msgid "No Campaigns Found."
2063
  msgstr ""
2064
 
2065
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:245
2066
  msgid "In Active"
2067
  msgstr ""
2068
 
2069
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:247
2070
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:403
2071
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:437
2072
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-timing.php:37
2073
  msgid "Scheduled"
2074
  msgstr ""
2075
 
2076
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:248
2077
  msgid "Queued"
2078
  msgstr ""
2079
 
2080
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:249
2081
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:455
2082
  msgid "Paused"
2083
  msgstr ""
2084
 
2085
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:250
2086
  msgid "Finished"
2087
  msgstr ""
2088
 
2089
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:291
2090
  msgid "All"
2091
  msgstr ""
2092
 
2093
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:339
2094
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:352
2095
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:517
2096
  #, php-format
2097
  msgid ""
2098
  "<a href=\"?page=%s&action=%s&list=%s&_wpnonce=%s\" class=\"text-indigo-600\">"
2099
  "Edit</a>"
2100
  msgstr ""
2101
 
2102
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:356
2103
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:518
2104
  #, php-format
2105
  msgid ""
2106
  "<a href=\"?page=%s&action=%s&list=%s&_wpnonce=%s\" onclick=\"return "
2107
  "checkDelete()\">Delete</a>"
2108
  msgstr ""
2109
 
2110
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:410
2111
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:446
2112
+ msgid "Sending"
2113
+ msgstr ""
2114
+
2115
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:417
2116
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:463
2117
+ msgid "Sent"
2118
+ msgstr ""
2119
+
2120
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:428
2121
+ msgid "Draft"
2122
+ msgstr ""
2123
+
2124
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:483
2125
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:273
2126
  msgid "Type"
2127
  msgstr ""
2128
 
2129
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:484
2130
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:310
2131
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:36
2132
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/workflows/actions/class-es-action-move-to-list.php:31
2133
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/workflows/actions/class-es-action-remove-from-list.php:29
2135
  msgid "List"
2136
  msgstr ""
2137
 
2138
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:485
2139
  msgid "Categories"
2140
  msgstr ""
2141
 
2142
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:535
2143
  msgid "Search Campaigns"
2144
  msgstr ""
2145
 
2146
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:578
2147
  msgid "You are not allowed to delete campaign."
2148
  msgstr ""
2149
 
2150
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:584
2151
  msgid "Campaign has been deleted successfully!"
2152
  msgstr ""
2153
 
2154
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:602
2155
  msgid "Campaign(s) have been deleted successfully!"
2156
  msgstr ""
2157
 
2158
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:606
2159
  msgid "Please check campaign(s) to delete."
2160
  msgstr ""
2161
 
2166
  msgstr ""
2167
 
2168
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:54
2169
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:197
2170
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:76
2171
  msgid "Contacts"
2172
  msgstr ""
2180
  msgstr ""
2181
 
2182
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:113
2183
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:312
2184
  msgid "Import Contacts"
2185
  msgstr ""
2186
 
2187
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:122
2188
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:67
2189
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:142
2190
  msgid "Export Contacts"
2191
  msgstr ""
2192
 
2199
  msgstr ""
2200
 
2201
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:140
2202
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:337
2203
  msgid "Manage Lists"
2204
  msgstr ""
2205
 
2206
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:193
2207
+ msgid ""
2208
+ "Audience <svg fill=\"none\" stroke-linecap=\"round\" stroke-"
2209
+ "linejoin=\"round\" stroke-width=\"2\" stroke=\"currentColor\" viewBox=\"0 0 "
2210
+ "24 24\" class=\"w-4 h-4 inline-block align-middle text-gray-900\"><path "
2211
+ "d=\"M9 5l7 7-7 7\"></path></svg>"
2212
  msgstr ""
2213
 
2214
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:271
2215
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:77
2216
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:277
2217
+ msgid "Total Contacts"
2218
+ msgstr ""
2219
+
2220
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:283
2221
  msgid "Last 60 Days"
2222
  msgstr ""
2223
 
2224
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:306
2225
  msgid "Opened"
2226
  msgstr ""
2227
 
2228
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:336
2229
  msgid " Add New Contact"
2230
  msgstr ""
2231
 
2232
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:341
2233
  msgid " Edit Contact"
2234
  msgstr ""
2235
 
2236
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:342
2237
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:85
2238
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:77
2239
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:259
2240
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:270
2241
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:153
2242
  msgid "Add New"
2243
  msgstr ""
2244
 
2245
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:390
2246
  msgid "Contact already exist."
2247
  msgstr ""
2248
 
2249
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:457
2250
  msgid "Contact has been added successfully!"
2251
  msgstr ""
2252
 
2253
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:459
2254
  msgid "Contact has been updated successfully!"
2255
  msgstr ""
2256
 
2257
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:466
2258
  msgid "Please Enter First Name"
2259
  msgstr ""
2260
 
2261
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:471
2262
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:33
2263
  msgid "Please Select List"
2264
  msgstr ""
2265
 
2266
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:476
2267
  msgid "Please Enter Valid Email Address"
2268
  msgstr ""
2269
 
2270
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:499
2271
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:254
2272
  msgid "Audience "
2273
  msgstr ""
2274
 
2275
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:655
2276
  msgid "No list found"
2277
  msgstr ""
2278
 
2279
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:665
2280
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:307
2281
  msgid "First Name"
2282
  msgstr ""
2283
 
2284
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:677
2285
+ msgid "Enter First Name"
2286
+ msgstr ""
2287
+
2288
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:686
2289
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:308
2290
  msgid "Last Name"
2291
  msgstr ""
2292
 
2293
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:697
2294
+ msgid "Enter Last Name"
2295
+ msgstr ""
2296
+
2297
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:716
2298
+ msgid "Enter Email"
2299
+ msgstr ""
2300
+
2301
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:726
2302
  msgid "Send Welcome Email?"
2303
  msgstr ""
2304
 
2305
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:751
2306
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:959
2307
  msgid "List(s)"
2308
  msgstr ""
2309
 
2310
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:769
2311
+ msgid "Save Contact"
2312
+ msgstr ""
2313
+
2314
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:772
2315
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:486
2316
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:298
2317
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:372
2318
  msgid "Save Changes"
2319
  msgstr ""
2320
 
2321
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:791
2322
  msgid "No contacts avaliable."
2323
  msgstr ""
2324
 
2325
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:937
2326
  #, php-format
2327
  msgid ""
2328
  "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\" class=\"text-indigo-"
2329
  "600\">Edit</a>"
2330
  msgstr ""
2331
 
2332
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:938
2333
  #, php-format
2334
  msgid ""
2335
  "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\" onclick=\"return "
2336
  "checkDelete()\">Delete</a>"
2337
  msgstr ""
2338
 
2339
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:941
2340
  #, php-format
2341
  msgid ""
2342
  "<a href=\"?page=%s&action=%s&subscriber=%s&_wpnonce=%s\" class=\"text-indigo-"
2343
  "600\">Resend Confirmation<a>"
2344
  msgstr ""
2345
 
2346
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:960
2347
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:820
2348
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:540
2349
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:293
2350
  msgid "Created"
2351
  msgstr ""
2352
 
2353
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:993
2354
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:848
2355
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:569
2356
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:255
2357
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:339
2358
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:263
2359
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:324
2360
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/action.php:30
2361
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-save.php:46
2362
  msgid "Delete"
2363
  msgstr ""
2364
 
2365
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:994
2366
  msgid "Move To List"
2367
  msgstr ""
2368
 
2369
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:995
2370
  msgid "Add To List"
2371
  msgstr ""
2372
 
2373
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:996
2374
  msgid "Change Status"
2375
  msgstr ""
2376
 
2377
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1017
2378
  msgid "Search Contacts"
2379
  msgstr ""
2380
 
2381
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1022
2382
  msgid "All Statuses"
2383
  msgstr ""
2384
 
2385
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1028
2386
  msgid "All Lists"
2387
  msgstr ""
2388
 
2389
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1133
2390
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1198
2391
  msgid "Contact(s) have been deleted successfully!"
2392
  msgstr ""
2393
 
2394
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1159
2395
  msgid "Confirmation email has been sent successfully!"
2396
  msgstr ""
2397
 
2398
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1186
2399
  msgid "Please select subscribers to update."
2400
  msgstr ""
2401
 
2402
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1209
2403
  msgid "Please select status."
2404
  msgstr ""
2405
 
2406
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1219
2407
  msgid "Status has been changed successfully!"
2408
  msgstr ""
2409
 
2410
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1239
2411
  msgid "Contact(s) have been moved to list successfully!"
2412
  msgstr ""
2413
 
2414
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:1260
2415
  msgid "Contact(s) have been added to list successfully!"
2416
  msgstr ""
2417
 
2435
  msgid "30 minutes"
2436
  msgstr ""
2437
 
2438
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:544
2439
  msgid "Emails sent successfully!"
2440
  msgstr ""
2441
 
2442
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:545
2443
  msgid "Emails not found."
2444
  msgstr ""
2445
 
2446
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:546
2447
  msgid "No notifications found to send."
2448
  msgstr ""
2449
 
2450
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:547
2451
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:548
2452
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:549
 
2453
  msgid "Invalid GUID."
2454
  msgstr ""
2455
 
2456
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:550
2457
  msgid "Not allowed to process request."
2458
  msgstr ""
2459
 
2460
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:551
2461
  msgid "GUID is empty."
2462
  msgstr ""
2463
 
2464
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:552
2465
  msgid "Please try after sometime."
2466
  msgstr ""
2467
 
2468
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:553
2469
  msgid ""
2470
  "You have hit your hourly email sending limit. Please try after sometime."
2471
  msgstr ""
2472
 
2473
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-cron.php:554
2474
  msgid "Cron lock enabled. Please try after sometime."
2475
  msgstr ""
2476
 
2482
  msgid "No."
2483
  msgstr ""
2484
 
 
 
 
 
 
2485
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:78
2486
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:541
2487
  msgid "Export"
2488
  msgstr ""
2489
 
2490
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:92
2491
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:539
2492
  msgid "All Contacts"
2493
  msgstr ""
2494
 
2504
  msgid "Unconfirmed Contacts"
2505
  msgstr ""
2506
 
2507
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:238
 
 
 
 
 
 
 
 
 
2508
  msgid "Export the Subscribers"
2509
  msgstr ""
2510
 
2511
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:312
2512
  msgid "Opt-In Type"
2513
  msgstr ""
2514
 
2515
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:313
2516
  msgid "Created On"
2517
  msgstr ""
2518
 
2524
  msgid "Number of forms per page"
2525
  msgstr ""
2526
 
2527
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:118
2528
  msgid "You do not have permission to edit this form."
2529
  msgstr ""
2530
 
2531
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:121
2532
  msgid "Please add form name."
2533
  msgstr ""
2534
 
2535
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:126
2536
  msgid "Please select list(s) in which contact will be subscribed."
2537
  msgstr ""
2538
 
2539
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:174
2540
  msgid "Form has been added successfully!"
2541
  msgstr ""
2542
 
2543
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:222
2544
  msgid "Form has been updated successfully!"
2545
  msgstr ""
2546
 
2547
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:231
2548
  msgid "Sorry, form not found"
2549
  msgstr ""
2550
 
2551
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:255
2552
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/partials/class-es-shortcode.php:130
2553
  msgid "Subscribe"
2554
  msgstr ""
2555
 
2556
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:275
2557
  msgid "Forms "
2558
  msgstr ""
2559
 
2560
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:278
2561
  msgid " New Form"
2562
  msgstr ""
2563
 
2564
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:280
2565
  msgid " Edit Form"
2566
  msgstr ""
2567
 
2568
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:299
2569
  msgid "Form Name"
2570
  msgstr ""
2571
 
2572
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:313
2573
  msgid "Description"
2574
  msgstr ""
2575
 
2576
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:327
2577
  msgid "Form Fields"
2578
  msgstr ""
2579
 
2580
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:334
2581
  msgid "Field"
2582
  msgstr ""
2583
 
2584
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:335
2585
  msgid "Show?"
2586
  msgstr ""
2587
 
2588
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:336
2589
  msgid "Required?"
2590
  msgstr ""
2591
 
2592
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:337
2593
  msgid "Label"
2594
  msgstr ""
2595
 
2596
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:338
2597
  msgid "Place Holder"
2598
  msgstr ""
2599
 
2600
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:378
2601
  msgid "Button"
2602
  msgstr ""
2603
 
2604
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:392
2605
  msgid "Contacts will be added into selected list(s)"
2606
  msgstr ""
2607
 
2608
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:415
2609
  msgid "Allow contact to choose list(s)"
2610
  msgstr ""
2611
 
2612
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:416
2613
  msgid "Allow contacts to choose list(s) in which they want to subscribe."
2614
  msgstr ""
2615
 
2616
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:447
2617
  msgid "Show GDPR consent checkbox"
2618
  msgstr ""
2619
 
2620
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:448
2621
  msgid ""
2622
  "Show consent checkbox to get the consent of a contact before adding them to "
2623
  "list(s)"
2624
  msgstr ""
2625
 
2626
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:472
2627
  msgid ""
2628
  "Consent text will show up at subscription form next to consent checkbox."
2629
  msgstr ""
2630
 
2631
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:483
2632
+ msgid "Save Form"
 
 
 
 
2633
  msgstr ""
2634
 
2635
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:802
2636
  #, php-format
2637
  msgid ""
2638
  "<a href=\"?page=%s&action=%s&form=%s&_wpnonce=%s\" class=\"text-indigo-600\">"
2639
  "Edit</a>"
2640
  msgstr ""
2641
 
2642
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:803
2643
  #, php-format
2644
  msgid ""
2645
  "<a href=\"?page=%s&action=%s&form=%s&_wpnonce=%s\" onclick=\"return "
2646
  "checkDelete()\">Delete</a>"
2647
  msgstr ""
2648
 
2649
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:819
2650
  msgid "Shortcode"
2651
  msgstr ""
2652
 
2653
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:865
2654
  msgid "Search Forms"
2655
  msgstr ""
2656
 
2657
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:902
2658
  msgid "You do not have permission to delete this form."
2659
  msgstr ""
2660
 
2661
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:909
2662
  msgid "Form has been deleted successfully!"
2663
  msgstr ""
2664
 
2665
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:924
2666
  msgid "Form(s) have been deleted successfully!"
2667
  msgstr ""
2668
 
2669
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:927
2670
  msgid "Please select form(s) to delete."
2671
  msgstr ""
2672
 
2673
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:938
2674
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:676
2675
  msgid "Enable"
2676
  msgstr ""
2677
 
2678
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:939
2679
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:677
2680
  msgid "Disable"
2681
  msgstr ""
2682
 
2683
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:951
2684
  msgid "No Forms avaliable."
2685
  msgstr ""
2686
 
2732
  "class=\"text-indigo-400\">Create new workflows</a>"
2733
  msgstr ""
2734
 
2735
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-ig-redirect.php:29
2736
+ msgid ""
2737
+ "Create Onsite Campaigns Using <a href=\"https://wordpress."
2738
+ "org/plugins/icegram\">Icegram</a>"
2739
+ msgstr ""
2740
+
2741
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-ig-redirect.php:32
2742
+ msgid ""
2743
+ "Create Popups using <a href=\"https://wordpress.org/plugins/icegram\">"
2744
+ "Icegram</a>"
2745
+ msgstr ""
2746
+
2747
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-ig-redirect.php:73
2748
+ msgid "Activate Icegram"
2749
+ msgstr ""
2750
+
2751
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-ig-redirect.php:75
2752
+ msgid "Install Icegram"
2753
+ msgstr ""
2754
+
2755
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:34
2756
  msgid "Sorry, you do not have permission to import contacts."
2757
  msgstr ""
2758
 
2759
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:173
 
2760
  #, php-format
2761
  msgid "Total %d contacts have been imported successfully!"
2762
  msgstr ""
2763
 
2764
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:179
2765
  #, php-format
2766
+ msgid "%d contact(s) are already exists."
2767
  msgstr ""
2768
 
2769
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:184
2770
  #, php-format
2771
+ msgid "%d contact(s) are invalid."
2772
  msgstr ""
2773
 
2774
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:192
2775
  msgid "Error: Please Select List"
2776
  msgstr ""
2777
 
2778
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:196
2779
  msgid "Error: Please select status"
2780
  msgstr ""
2781
 
2782
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:200
2783
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:211
2784
+ #, php-format
2785
+ msgid ""
2786
+ "The file you are trying to upload is larger than %s. Please upload a smaller "
2787
+ "file."
2788
+ msgstr ""
2789
+
2790
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:204
2791
  msgid "Error: Please Upload only CSV File"
2792
  msgstr ""
2793
 
2794
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:214
2795
+ msgid "There was a problem with your upload."
2796
+ msgstr ""
2797
+
2798
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:218
2799
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:224
2800
  msgid "Error: Please Upload File"
2801
  msgstr ""
2802
 
2803
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:246
2804
  msgid "Select CSV file"
2805
  msgstr ""
2806
 
2807
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:248
2808
+ #, php-format
2809
+ msgid "File size should be less than %s"
2810
+ msgstr ""
2811
+
2812
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:250
2813
  msgid "Check CSV structure"
2814
  msgstr ""
2815
 
2816
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:251
2817
  msgid "from here"
2818
  msgstr ""
2819
 
2820
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:260
2821
  msgid "Select status"
2822
  msgstr ""
2823
 
2824
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:272
2825
  msgid "Select list"
2826
  msgstr ""
2827
 
2828
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:286
2829
  msgid "Import"
2830
  msgstr ""
2831
 
 
 
 
 
2832
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-info.php:20
2833
  msgid "<span class=\"es-fire-sale\"> 🔥 </span> Go Pro"
2834
  msgstr ""
2837
  msgid "Number of lists per page"
2838
  msgstr ""
2839
 
2840
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:113
2841
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:624
2842
  msgid "You do not have permission to edit list"
2843
  msgstr ""
2844
 
2845
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:115
2846
  msgid "Please add list name"
2847
  msgstr ""
2848
 
2849
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:117
2850
  msgid "List already exists. Please choose different name"
2851
  msgstr ""
2852
 
2853
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:162
2854
  msgid "List has been added successfully!"
2855
  msgstr ""
2856
 
2857
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:211
2858
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:628
2859
  msgid "List has been updated successfully!"
2860
  msgstr ""
2861
 
2862
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:255
2863
  msgid " Lists "
2864
  msgstr ""
2865
 
2866
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:261
2867
  msgid "Edit List"
2868
  msgstr ""
2869
 
2870
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:280
2871
  msgid "List Name"
2872
  msgstr ""
2873
 
2874
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:295
2875
+ msgid "Save List"
2876
+ msgstr ""
2877
+
2878
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:433
2879
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:444
2880
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:455
2881
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:466
2882
  #, php-format
2883
  msgid "<a href=\"%s\" target=\"_blank\">%d</a>"
2884
  msgstr ""
2885
 
2886
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:588
2887
  msgid "Search Lists"
2888
  msgstr ""
2889
 
2890
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:640
2891
  msgid "You do not have permission to delete list"
2892
  msgstr ""
2893
 
2894
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:647
2895
  msgid "List has been deleted successfully!"
2896
  msgstr ""
2897
 
2898
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:662
2899
  msgid "List(s) have been deleted successfully"
2900
  msgstr ""
2901
 
2902
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:689
2903
  msgid "No lists avaliable."
2904
  msgstr ""
2905
 
2906
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-mailer.php:298
2907
  msgid "Thanks!"
2908
  msgstr ""
2909
 
2910
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-mailer.php:511
2911
  #, php-format
2912
  msgid "Test email to %s"
2913
  msgstr ""
2914
 
2915
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:113
2916
+ msgid "Please add a broadcast subject."
2917
+ msgstr ""
2918
+
2919
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:120
2920
  msgid "Please add message body or select template"
2921
  msgstr ""
2922
 
2923
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:132
2924
  msgid "Please add the subject"
2925
  msgstr ""
2926
 
2927
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:201
2928
+ msgid "Scheduling is disabled for this broadcast since it is being sent."
2929
  msgstr ""
2930
 
2931
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:203
2932
+ msgid ""
2933
+ "Scheduling is disabled for this broadcast since it has been sent already."
2934
  msgstr ""
2935
 
2936
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:251
2937
+ msgid "Summary"
2938
  msgstr ""
2939
 
2940
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:260
2941
+ msgid "Next"
2942
  msgstr ""
2943
 
2944
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:274
2945
+ msgid "Previous"
2946
  msgstr ""
2947
 
2948
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:283
2949
+ msgid "Save Draft"
2950
  msgstr ""
2951
 
2952
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:297
2953
+ msgid "Schedule"
2954
  msgstr ""
2955
 
2956
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:325
2957
+ msgid "From Name"
2958
+ msgstr ""
2959
+
2960
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:329
2961
+ msgid "From Email"
2962
+ msgstr ""
2963
+
2964
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:334
2965
+ msgid "Message"
2966
+ msgstr ""
2967
+
2968
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:352
2969
+ msgid "Design Template"
2970
+ msgstr ""
2971
+
2972
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:358
2973
  msgid "Recipients"
2974
  msgstr ""
2975
 
2976
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:369
2977
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:378
2978
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:404
2979
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:256
2980
+ msgid "Preview"
2981
+ msgstr ""
2982
+
2983
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:372
2984
+ msgid "Browser"
2985
+ msgstr ""
2986
+
2987
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:381
2988
+ msgid "In Browser"
2989
+ msgstr ""
2990
+
2991
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:390
2992
+ msgid ""
2993
+ "There could be a slight variation on how your customer will view the email "
2994
+ "content."
2995
+ msgstr ""
2996
+
2997
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:407
2998
+ msgid "Email Sent Successfully "
2999
+ msgstr ""
3000
+
3001
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:408
3002
+ msgid "Something went wrong. Please try again later"
3003
+ msgstr ""
3004
+
3005
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:425
3006
+ msgid "Email Content Preview"
3007
+ msgstr ""
3008
+
3009
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:465
3010
+ msgid "Open Tracking"
3011
  msgstr ""
3012
 
3013
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-old-widget.php:72
3055
  msgid " Edit Post Notification"
3056
  msgstr ""
3057
 
3058
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:261
3059
  msgid "Campaigns "
3060
  msgstr ""
3061
 
3062
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:292
3063
  msgid ""
3064
  "Contacts from the selected list will be notified about new post notification."
3065
  msgstr ""
3066
 
3067
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:334
3068
  msgid "Select Post Category"
3069
  msgstr ""
3070
 
3071
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:335
3072
  msgid ""
3073
  "Notification will be sent out when any post from selected categories will be "
3074
  "published."
3075
  msgstr ""
3076
 
3077
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:348
3078
  msgid "Select custom post type(s)"
3079
  msgstr ""
3080
 
3081
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:349
3082
  msgid ""
3083
  "(Optional) Select custom post type for which you want to send notification."
3084
  msgstr ""
3085
 
3086
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-post-notifications.php:369
3087
+ msgid "Save Campaign"
3088
+ msgstr ""
3089
+
3090
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:19
3091
  msgid "Report"
3092
  msgstr ""
3093
 
3094
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:42
3095
  #, php-format
3096
  msgid ""
3097
+ "<a href='%s' class='px-4 py-2 ig-es-imp-button'>Send Queued Emails Now</a>"
 
3098
  msgstr ""
3099
 
3100
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:44
3101
  msgid ""
3102
  "<span class='ig-es-send-queue-emails button-disabled'>Send Queued Emails "
3103
  "Now</span>"
3104
  msgstr ""
3105
 
3106
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:45
3107
  msgid "<br /><span class='es-helper'>No emails found in queue</span>"
3108
  msgstr ""
3109
 
3110
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:90
3111
  msgid "Sr No"
3112
  msgstr ""
3113
 
3114
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:93
3115
  msgid "Sent Date"
3116
  msgstr ""
3117
 
3118
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:94
3119
  msgid "Viewed Status"
3120
  msgstr ""
3121
 
3122
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:95
3123
  msgid "Viewed Date"
3124
  msgstr ""
3125
 
3126
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:159
3127
  msgid "Viewed"
3128
  msgstr ""
3129
 
3130
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:159
3131
  msgid "Not yet viewed"
3132
  msgstr ""
3133
 
3134
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:172
3135
  msgid "No Reports avaliable."
3136
  msgstr ""
3137
 
3138
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:214
3139
  msgid "Completed"
3140
  msgstr ""
3141
 
3142
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:254
3143
  msgid "View"
3144
  msgstr ""
3145
 
3146
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:275
 
 
 
 
3147
  msgid "Start Date"
3148
  msgstr ""
3149
 
3150
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:276
3151
  msgid "End Date"
3152
  msgstr ""
3153
 
3154
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:424
3155
  msgid "You do not have permission to view notification"
3156
  msgstr ""
3157
 
3158
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:436
3159
  msgid "You do not have permission to delete notification"
3160
  msgstr ""
3161
 
3162
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:442
3163
  msgid "Report has been deleted successfully!"
3164
  msgstr ""
3165
 
3166
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:451
3167
  msgid "You do not have permission to preview notification"
3168
  msgstr ""
3169
 
3170
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:469
3171
  msgid "Reports have been deleted successfully!"
3172
  msgstr ""
3173
 
3174
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:481
3175
  msgid "Preview Email"
3176
  msgstr ""
3177
 
3178
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:484
3179
  msgid ""
3180
  "This is how the email you sent may look. <br>Note: Different email services "
3181
  "(like gmail, yahoo etc) display email content differently. So there could be "
3204
  msgid "Preview Template"
3205
  msgstr ""
3206
 
3207
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:243
3208
  msgid "Template Type"
3209
  msgstr ""
3210
 
3211
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:280
3212
  msgid "Duplicate"
3213
  msgstr ""
3214
 
3215
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:304
3216
+ msgid "Copy"
3217
+ msgstr ""
3218
+
3219
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-tools.php:54
3220
  msgid "Email has been sent. Please check your inbox"
3221
  msgstr ""
3245
  msgid "%s ago"
3246
  msgstr ""
3247
 
3248
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflow.php:888
3249
  msgid "Missing action_name key in array."
3250
  msgstr ""
3251
 
3252
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflow.php:894
3253
  msgid "Could not retrieve the action."
3254
  msgstr ""
3255
 
3287
  msgid "An error has occured. Please try again later"
3288
  msgstr ""
3289
 
3290
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:209
3291
  msgid "No Workflows Found."
3292
  msgstr ""
3293
 
3294
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:262
3295
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/action.php:29
3296
  msgid "Edit"
3297
  msgstr ""
3298
 
3299
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:281
3300
  msgid "Toggle Status"
3301
  msgstr ""
3302
 
3303
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:292
3304
  msgid "Title"
3305
  msgstr ""
3306
 
3307
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:323
 
 
 
 
3308
  msgid "Deactivate"
3309
  msgstr ""
3310
 
3311
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:344
3312
  msgid "Search Workflows"
3313
  msgstr ""
3314
 
3315
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:389
3316
  msgid "You are not allowed to delete workflow."
3317
  msgstr ""
3318
 
3319
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:395
3320
  msgid "Workflow has been deleted successfully!"
3321
  msgstr ""
3322
 
3323
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:412
3324
  msgid "Workflow(s) have been deleted successfully!"
3325
  msgstr ""
3326
 
3327
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:416
3328
  msgid "Please check workflow(s) to delete."
3329
  msgstr ""
3330
 
3331
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:430
3332
  msgid "activated"
3333
  msgstr ""
3334
 
3335
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:430
3336
  msgid "deactivated"
3337
  msgstr ""
3338
 
3339
  #. %s: Workflow action
3340
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:433
3341
  #, php-format
3342
  msgid "Workflow(s) have been %s successfully!"
3343
  msgstr ""
3344
 
3345
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:438
3346
  msgid "activate"
3347
  msgstr ""
3348
 
3349
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:438
3350
  msgid "deactivate"
3351
  msgstr ""
3352
 
3353
  #. %s: Workflow action
3354
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:441
3355
  #, php-format
3356
  msgid "Please check workflow(s) to %s."
3357
  msgstr ""
3358
 
3359
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/partials/class-es-shortcode.php:252
3360
  msgid "Select List(s)"
3361
  msgstr ""
3362
 
3377
  msgstr ""
3378
 
3379
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-cf7-submitted.php:23
3380
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:381
3381
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:26
3382
  msgid "Contact Form 7 Submitted"
3383
  msgstr ""
3384
 
3387
  msgstr ""
3388
 
3389
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-cf7-submitted.php:25
3390
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-forminator-forms-submitted.php:33
3391
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-gravity-forms-submitted.php:25
3392
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-ninja-forms-submitted.php:25
3393
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-wpforms-submitted.php:25
3395
  msgstr ""
3396
 
3397
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-comment-added.php:23
 
 
3398
  msgid "Comment added"
3399
  msgstr ""
3400
 
3411
  msgstr ""
3412
 
3413
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-edd-purchase-completed.php:23
 
 
3414
  msgid "EDD purchase completed"
3415
  msgstr ""
3416
 
3424
  msgid "Order"
3425
  msgstr ""
3426
 
3427
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-forminator-forms-submitted.php:31
3428
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:30
3429
+ msgid "Forminator Form Submitted"
3430
+ msgstr ""
3431
+
3432
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-forminator-forms-submitted.php:32
3433
+ msgid "Fires whenever someone fill Forminator Plugin's form."
3434
+ msgstr ""
3435
+
3436
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-forminator-forms-submitted.php:44
3437
+ msgid "Any Form"
3438
+ msgstr ""
3439
+
3440
+ #. %s: Forminator form ID.
3441
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-forminator-forms-submitted.php:63
3442
+ #, php-format
3443
+ msgid "(ID: %s)"
3444
+ msgstr ""
3445
+
3446
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-forminator-forms-submitted.php:74
3447
+ msgid "Select Form"
3448
+ msgstr ""
3449
+
3450
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-forminator-forms-submitted.php:76
3451
+ msgid ""
3452
+ "Supported Form Types: Custom, Contact, Quote Request, Newsletter, "
3453
+ "Registration Forms"
3454
+ msgstr ""
3455
+
3456
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-give-donation-made.php:23
 
3457
  msgid "Give donation"
3458
  msgstr ""
3459
 
3462
  msgstr ""
3463
 
3464
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-gravity-forms-submitted.php:23
3465
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:397
3466
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:29
3467
  msgid "Gravity Form Submitted"
3468
  msgstr ""
3469
 
3472
  msgstr ""
3473
 
3474
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-ninja-forms-submitted.php:23
3475
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:385
3476
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:28
3477
  msgid "Ninja Form Submitted"
3478
  msgstr ""
3479
 
3482
  msgstr ""
3483
 
3484
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-wc-order-completed.php:23
 
 
3485
  msgid "WooCommerce order completed"
3486
  msgstr ""
3487
 
3490
  msgstr ""
3491
 
3492
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/workflows/triggers/class-es-trigger-wpforms-submitted.php:23
3493
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:389
3494
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:27
3495
  msgid "WP Form Submitted"
3496
  msgstr ""
3497
 
3532
 
3533
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/abstracts/class-es-workflow-action.php:168
3534
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/abstracts/class-es-workflow-action.php:183
3535
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/abstracts/class-es-workflow-trigger.php:353
3536
  msgid "Other"
3537
  msgstr ""
3538
 
3557
  msgstr ""
3558
 
3559
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/class-es-workflow-admin-edit.php:232
3560
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:46
3561
  msgid "Trigger"
3562
  msgstr ""
3563
 
3574
  msgid "Options"
3575
  msgstr ""
3576
 
3577
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:365
3578
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/triggers/class-es-trigger-user-registered.php:31
3579
+ msgid "User Registered"
 
 
 
 
3580
  msgstr ""
3581
 
3582
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:369
3583
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:23
3584
+ msgid "Comment Added"
3585
  msgstr ""
3586
 
3587
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:373
3588
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:33
3589
+ msgid "WooCommerce Order Completed"
3590
  msgstr ""
3591
 
3592
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:377
3593
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:34
3594
+ msgid "EDD Purchase Completed"
3595
  msgstr ""
3596
 
3597
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:393
3598
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:35
3599
+ msgid "Give Donation Added"
3600
  msgstr ""
3601
 
3602
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:417
 
3603
  msgid "User deleted"
3604
  msgstr ""
3605
 
3606
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/db/class-es-db-workflows.php:425
 
3607
  msgid "User updated"
3608
  msgstr ""
3609
 
3620
  msgstr ""
3621
 
3622
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/fields/class-es-select.php:80
3623
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-trigger.php:50
3624
  msgid "[Select]"
3625
  msgstr ""
3626
 
3650
  "database."
3651
  msgstr ""
3652
 
3653
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/triggers/class-es-trigger-user-deleted.php:31
3654
+ msgid "User Deleted"
3655
+ msgstr ""
3656
+
3657
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/triggers/class-es-trigger-user-deleted.php:32
3658
  msgid "Fires when user deleted from WordPress ."
3659
  msgstr ""
3668
  msgid "Fires when someone signup."
3669
  msgstr ""
3670
 
3671
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/triggers/class-es-trigger-user-updated.php:31
3672
+ msgid "User Updated"
3673
+ msgstr ""
3674
+
3675
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/triggers/class-es-trigger-user-updated.php:32
3676
  msgid "Fires when a user is updated."
3677
  msgstr ""
lite/public/partials/class-es-shortcode.php CHANGED
@@ -61,9 +61,7 @@ class ES_Shortcode {
61
  public static function render_es_form( $atts ) {
62
  ob_start();
63
 
64
- $atts = shortcode_atts( array(
65
- 'id' => ''
66
- ), $atts, 'email-subscribers-form' );
67
 
68
  $id = $atts['id'];
69
 
@@ -165,7 +163,6 @@ class ES_Shortcode {
165
  $hp_style = "position:absolute;top:-99999px;" . ( is_rtl() ? 'right' : 'left' ) . ":-99999px;z-index:-99;";
166
  $nonce = wp_create_nonce( 'es-subscribe' );
167
 
168
-
169
  // Name
170
  $name_html = $required = '';
171
  if ( ! empty( $show_name ) && 'no' !== $show_name ) {
@@ -226,17 +223,17 @@ class ES_Shortcode {
226
  <input type="hidden" name="status" value="Unconfirmed"/>
227
  <input type="hidden" name="es-subscribe" id="es-subscribe" value="<?php echo $nonce; ?>"/>
228
  <label style="<?php echo $hp_style; ?>"><input type="email" name="es_hp_email" class="es_required_field" tabindex="-1" autocomplete="-1" value=""/></label>
229
- <?php do_action( 'ig_es_after_form_fields' ) ?>
230
  <?php
231
 
 
232
 
233
- if($gdpr_consent === 'yes') { ?>
234
- <p><input type="checkbox" name="es_gdpr_consent" value="true" required />&nbsp;<label style="display: inline"><?php echo $gdpr_consent_text; ?></label></p>
235
- <?php } else if ( ( in_array( 'gdpr/gdpr.php', $active_plugins ) || array_key_exists( 'gdpr/gdpr.php', $active_plugins ) ) ) {
236
  echo GDPR::consent_checkboxes();
237
  }
238
 
239
- ?>
240
  <input type="submit" name="submit" class="es_subscription_form_submit es_submit_button es_textbox_button" id="es_subscription_form_submit_<?php echo $unique_id; ?>" value="<?php echo $button_label; ?>"/>
241
 
242
  <?php $spinner_image_path = ES_PLUGIN_URL . 'lite/public/images/spinner.gif'; ?>
61
  public static function render_es_form( $atts ) {
62
  ob_start();
63
 
64
+ $atts = shortcode_atts( array( 'id' => '' ), $atts, 'email-subscribers-form' );
 
 
65
 
66
  $id = $atts['id'];
67
 
163
  $hp_style = "position:absolute;top:-99999px;" . ( is_rtl() ? 'right' : 'left' ) . ":-99999px;z-index:-99;";
164
  $nonce = wp_create_nonce( 'es-subscribe' );
165
 
 
166
  // Name
167
  $name_html = $required = '';
168
  if ( ! empty( $show_name ) && 'no' !== $show_name ) {
223
  <input type="hidden" name="status" value="Unconfirmed"/>
224
  <input type="hidden" name="es-subscribe" id="es-subscribe" value="<?php echo $nonce; ?>"/>
225
  <label style="<?php echo $hp_style; ?>"><input type="email" name="es_hp_email" class="es_required_field" tabindex="-1" autocomplete="-1" value=""/></label>
 
226
  <?php
227
 
228
+ do_action( 'ig_es_after_form_fields', $data );
229
 
230
+ if ( $gdpr_consent === 'yes' ) { ?>
231
+ <p><input type="checkbox" name="es_gdpr_consent" value="true" required/>&nbsp;<label style="display: inline"><?php echo $gdpr_consent_text; ?></label></p>
232
+ <?php } elseif ( ( in_array( 'gdpr/gdpr.php', $active_plugins ) || array_key_exists( 'gdpr/gdpr.php', $active_plugins ) ) ) {
233
  echo GDPR::consent_checkboxes();
234
  }
235
 
236
+ ?>
237
  <input type="submit" name="submit" class="es_subscription_form_submit es_submit_button es_textbox_button" id="es_subscription_form_submit_<?php echo $unique_id; ?>" value="<?php echo $button_label; ?>"/>
238
 
239
  <?php $spinner_image_path = ES_PLUGIN_URL . 'lite/public/images/spinner.gif'; ?>
readme.txt CHANGED
@@ -4,9 +4,9 @@ Donate link: https://www.paypal.com/cgi-bin/webscr?cmd=_s-xclick&hosted_button_i
4
  Author URI: https://www.icegram.com/
5
  Tags: subscription, newsletter, email marketing, post notification, email newsletter form, email signup, email widget, newsletter signup, subscribe, subscription form, bulk emails, signup form, list builder, lead generation, welcome email, contacts
6
  Requires at least: 3.9
7
- Tested up to: 5.4
8
  Requires PHP: 5.6
9
- Stable tag: 4.4.6
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses
12
 
@@ -246,7 +246,9 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
246
 
247
  4. Campaigns
248
 
249
- 5. Send Broadcasts
 
 
250
 
251
  6. New Post Notification
252
 
@@ -279,9 +281,21 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
279
 
280
  == Changelog ==
281
 
 
 
 
 
 
 
 
 
 
 
 
 
282
  **4.4.6 (23.04.2020)**
283
 
284
- * New: Integrate [Forminator](https://wordpress.org/plugins/forminator/) form plugin (**Premium**)
285
  * Update: Improved Import/ Export feature
286
  * Update: Improved manage lists UI
287
  * Update: Improved Export contacts UI
4
  Author URI: https://www.icegram.com/
5
  Tags: subscription, newsletter, email marketing, post notification, email newsletter form, email signup, email widget, newsletter signup, subscribe, subscription form, bulk emails, signup form, list builder, lead generation, welcome email, contacts
6
  Requires at least: 3.9
7
+ Tested up to: 5.4.1
8
  Requires PHP: 5.6
9
+ Stable tag: 4.4.7
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses
12
 
246
 
247
  4. Campaigns
248
 
249
+ 5. Broadcasts Content
250
+
251
+ 5_1. Broadcast Summary
252
 
253
  6. New Post Notification
254
 
281
 
282
  == Changelog ==
283
 
284
+ **4.4.7 (14.05.2020)**
285
+
286
+ * New: Improved Broadcast UI
287
+ * New: Now, able to draft broadcast and send later
288
+ * New: Added campaign level open/ view tracking
289
+ * New: Form level captcha is available (**PRO**)
290
+ * New: Added campaign level Link tracking (**PRO**)
291
+ * New: Added campaign level UTM tracking (**PRO**)
292
+ * Update: Use date formate which set in WordPress
293
+ * Update: UI improvements
294
+ * Fix: Import/ Export issues
295
+
296
  **4.4.6 (23.04.2020)**
297
 
298
+ * New: Integrate [Forminator](https://wordpress.org/plugins/forminator/) form plugin (**PRO**)
299
  * Update: Improved Import/ Export feature
300
  * Update: Improved manage lists UI
301
  * Update: Improved Export contacts UI
uninstall.php CHANGED
@@ -17,7 +17,7 @@
17
  * general skeleton and outline for how the file should work.
18
  *
19
  * For more information, see the following discussion:
20
- * https://github.com/tommcfarlin/WordPress-Plugin-Boilerplate/pull/123#issuecomment-28541913
21
  *
22
  * @link http://example.com
23
  * @since 4.0
17
  * general skeleton and outline for how the file should work.
18
  *
19
  * For more information, see the following discussion:
20
+ *
21
  *
22
  * @link http://example.com
23
  * @since 4.0