Email Subscribers & Newsletters - Version 4.5.0

Version Description

Download this release

Release Info

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

Code changes from version 4.4.10.1 to 4.5.0

email-subscribers.php CHANGED
@@ -3,7 +3,7 @@
3
  * Plugin Name: Email Subscribers & Newsletters
4
  * Plugin URI: https://www.icegram.com/
5
  * Description: Add subscription forms on website, send HTML newsletters & automatically notify subscribers about new blog posts once it is published.
6
- * Version: 4.4.10.1
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
@@ -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.10.1' );
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.5.0
7
  * Author: Icegram
8
  * Author URI: https://www.icegram.com/
9
  * Requires at least: 3.9
156
  /* ***************************** Initial Compatibility Work (End) ******************* */
157
 
158
  if ( ! defined( 'ES_PLUGIN_VERSION' ) ) {
159
+ define( 'ES_PLUGIN_VERSION', '4.5.0' );
160
  }
161
 
162
  // Plugin Folder Path.
lite/admin/class-email-subscribers-admin.php CHANGED
@@ -156,7 +156,7 @@ class Email_Subscribers_Admin {
156
  wp_enqueue_script( $this->email_subscribers . '-timepicker' );
157
 
158
  $get_page = ig_es_get_request_data( 'page' );
159
- if ( ! empty( $get_page ) && 'es_dashboard' === $get_page ) {
160
  wp_enqueue_script( 'frappe-js', plugin_dir_url( __FILE__ ) . 'js/frappe-charts.min.life.js', array( 'jquery' ), $this->version, false );
161
  }
162
 
156
  wp_enqueue_script( $this->email_subscribers . '-timepicker' );
157
 
158
  $get_page = ig_es_get_request_data( 'page' );
159
+ if ( ! empty( $get_page ) && 'es_dashboard' === $get_page || 'es_reports' === $get_page ) {
160
  wp_enqueue_script( 'frappe-js', plugin_dir_url( __FILE__ ) . 'js/frappe-charts.min.life.js', array( 'jquery' ), $this->version, false );
161
  }
162
 
lite/admin/css/email-subscribers-admin.css CHANGED
@@ -1,3 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  #menu-content-change:focus {
2
  box-shadow: none;
3
  color: #FFFFFF;
@@ -1508,11 +1524,6 @@ table.ig_es_form_table td {
1508
  cursor: default;
1509
  }
1510
 
1511
- #post-body .postbox .inside {
1512
- padding: 0;
1513
- margin: 0;
1514
- }
1515
-
1516
  .postbox .ig-es-metabox-footer {
1517
  padding: 9px 15px;
1518
  background: #f5f5f5;
1
+ .locker-content-middle {
2
+ transition: .5s ease;
3
+ opacity: 0;
4
+ position: absolute;
5
+ top:10%;
6
+ left: 50%;
7
+ transform: translate(-50%, -50%);
8
+ -ms-transform: translate(-50%, -50%);
9
+ }
10
+ .locker-content:hover .locker-content-middle {
11
+ opacity: 1;
12
+ }
13
+ .locker-content:hover {
14
+ opacity: 0.3;
15
+ }
16
+
17
  #menu-content-change:focus {
18
  box-shadow: none;
19
  color: #FFFFFF;
1524
  cursor: default;
1525
  }
1526
 
 
 
 
 
 
1527
  .postbox .ig-es-metabox-footer {
1528
  padding: 9px 15px;
1529
  background: #f5f5f5;
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{--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{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-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}.wp-core-ui .button,.wp-core-ui .button-secondary{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{font-size:.875rem;border-radius:.375rem;border-width:1px;line-height:1.25rem;font-weight:500;--text-opacity:1}.wp-core-ui .button-primary{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.wp-core-ui .button-primary:hover,.wp-core-ui .button:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.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-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,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}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.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}.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\: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-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%}}
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{--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-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}.wp-core-ui .button,.wp-core-ui .button-secondary{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));color:#5850ec;color:rgba(88,80,236,var(--text-opacity))}.wp-core-ui .button,.wp-core-ui .button-primary,.wp-core-ui .button-secondary{font-size:.875rem;border-radius:.375rem;border-width:1px;line-height:1.25rem;font-weight:500;--text-opacity:1}.wp-core-ui .button-primary{--bg-opacity:1;background-color:#5850ec;background-color:rgba(88,80,236,var(--bg-opacity));color:#fff;color:rgba(255,255,255,var(--text-opacity));-webkit-transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,-webkit-box-shadow,-webkit-transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,-webkit-box-shadow,-webkit-transform;-webkit-transition-timing-function:cubic-bezier(.4,0,.2,1);transition-timing-function:cubic-bezier(.4,0,.2,1);-webkit-transition-duration:.15s;transition-duration:.15s}.wp-core-ui .button-primary:hover,.wp-core-ui .button:hover{--border-opacity:1;border-color:#5850ec;border-color:rgba(88,80,236,var(--border-opacity));--text-opacity:1;color:#6875f5;color:rgba(104,117,245,var(--text-opacity))}.bg-white{--bg-opacity:1;background-color:#fff;background-color:rgba(255,255,255,var(--bg-opacity))}.bg-black{--bg-opacity:1;background-color:#000;background-color:rgba(0,0,0,var(--bg-opacity))}.bg-gray-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-blue-50{--bg-opacity:1;background-color:#ebf5ff;background-color:rgba(235,245,255,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}.rounded-r-lg{border-top-right-radius:.5rem;border-bottom-right-radius:.5rem}.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}.self-start{-ms-flex-item-align:start;align-self:flex-start}.justify-start{-webkit-box-pack:start;-ms-flex-pack:start;justify-content:flex-start}.justify-center{-webkit-box-pack:center;-ms-flex-pack:center;justify-content:center}.justify-between{-webkit-box-pack:justify;-ms-flex-pack:justify;justify-content:space-between}.flex-1{-webkit-box-flex:1;-ms-flex:1 1 0%;flex:1 1 0%}.flex-auto{-webkit-box-flex:1;-ms-flex:1 1 auto;flex:1 1 auto}.flex-none{-webkit-box-flex:0;-ms-flex:none;flex:none}.flex-shrink-0{-ms-flex-negative:0;flex-shrink:0}.float-right{float:right}.float-left{float:left}.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}.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}.pr-2{padding-right:.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}.pt-5{padding-top:1.25rem}.pl-5{padding-left:1.25rem}.pt-6{padding-top:1.5rem}.pr-6{padding-right:1.5rem}.pb-6{padding-bottom:1.5rem}.pl-6{padding-left:1.5rem}.pt-7{padding-top:1.75rem}.pt-8{padding-top:2rem}.pb-8{padding-bottom:2rem}.pl-8{padding-left:2rem}.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)}.table-fixed{table-layout:fixed}.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}.break-words{overflow-wrap:break-word}.break-all{word-break:break-all}.truncate{overflow:hidden;text-overflow:ellipsis;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\/2{width:50%}.w-1\/3{width:33.333333%}.w-2\/3{width:66.666667%}.w-1\/4{width:25%}.w-2\/4{width:50%}.w-3\/4{width:75%}.w-1\/5{width:20%}.w-2\/5{width:40%}.w-3\/5{width:60%}.w-4\/5{width:80%}.w-3\/6{width:50%}.w-4\/6{width:66.666667%}.w-5\/6{width:83.333333%}.w-1\/12{width:8.333333%}.w-2\/12{width:16.666667%}.w-3\/12{width:25%}.w-4\/12{width:33.333333%}.w-5\/12{width:41.666667%}.w-8\/12{width:66.666667%}.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\: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-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/graph.png ADDED
Binary file
lite/admin/partials/dashboard.php CHANGED
@@ -246,7 +246,7 @@ $topics_indexes = array_rand( $topics, 3 );
246
  if (labels != '' && values != '') {
247
  const data = {
248
  labels: labels,
249
- datasets: [
250
  {
251
  values: values
252
  },
246
  if (labels != '' && values != '') {
247
  const data = {
248
  labels: labels,
249
+ datasets: [
250
  {
251
  values: values
252
  },
lite/includes/class-email-subscribers.php CHANGED
@@ -635,6 +635,8 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
635
  'lite/includes/classes/class-es-tracking.php',
636
  'lite/includes/classes/class-es-compatibility.php',
637
  'lite/includes/classes/class-es-ig-redirect.php',
 
 
638
 
639
  // Core Functions
640
  'lite/includes/es-core-functions.php',
@@ -1093,7 +1095,7 @@ if ( ! class_exists( 'Email_Subscribers' ) ) {
1093
 
1094
  self::$instance->logger = get_ig_logger();
1095
 
1096
- self::$instance->mailer = new ES_Mailer();
1097
 
1098
  add_action( 'widgets_init', array( self::$instance, 'register_es_widget' ) );
1099
 
635
  'lite/includes/classes/class-es-tracking.php',
636
  'lite/includes/classes/class-es-compatibility.php',
637
  'lite/includes/classes/class-es-ig-redirect.php',
638
+ 'lite/includes/classes/class-es-geolocation.php',
639
+ 'lite/includes/classes/class-es-browser.php',
640
 
641
  // Core Functions
642
  'lite/includes/es-core-functions.php',
1095
 
1096
  self::$instance->logger = get_ig_logger();
1097
 
1098
+ self::$instance->mailer = new ES_Mailer();
1099
 
1100
  add_action( 'widgets_init', array( self::$instance, 'register_es_widget' ) );
1101
 
lite/includes/class-es-install.php CHANGED
@@ -212,6 +212,11 @@ if ( ! class_exists( 'ES_Install' ) ) {
212
  '4.4.10' => array(
213
  'ig_es_update_4410_load_templates',
214
  'ig_es_update_4410_db_version'
 
 
 
 
 
215
  )
216
 
217
  );
@@ -1055,6 +1060,12 @@ if ( ! class_exists( 'ES_Install' ) ) {
1055
  `count` int(11) UNSIGNED NOT NULL DEFAULT 0,
1056
  `link_id` bigint(20) UNSIGNED NOT NULL DEFAULT 0,
1057
  `list_id` int(11) UNSIGNED NOT NULL DEFAULT 0,
 
 
 
 
 
 
1058
  `created_at` int(11) UNSIGNED NOT NULL DEFAULT 0,
1059
  `updated_at` int(11) UNSIGNED NOT NULL DEFAULT 0,
1060
  UNIQUE KEY `id` (`contact_id`,`message_id`, `campaign_id`,`type`,`link_id`, `list_id`),
212
  '4.4.10' => array(
213
  'ig_es_update_4410_load_templates',
214
  'ig_es_update_4410_db_version'
215
+ ),
216
+
217
+ '4.5.0' => array(
218
+ 'ig_es_update_450_alter_actions_table',
219
+ 'ig_es_update_450_db_version'
220
  )
221
 
222
  );
1060
  `count` int(11) UNSIGNED NOT NULL DEFAULT 0,
1061
  `link_id` bigint(20) UNSIGNED NOT NULL DEFAULT 0,
1062
  `list_id` int(11) UNSIGNED NOT NULL DEFAULT 0,
1063
+ `ip` varchar(50) DEFAULT NULL,
1064
+ `country` varchar(50) DEFAULT NULL,
1065
+ `device` varchar(50) DEFAULT NULL,
1066
+ `browser` varchar(50) DEFAULT NULL,
1067
+ `email_client` varchar(50) DEFAULT NULL,
1068
+ `os` varchar(50) DEFAULT NULL,
1069
  `created_at` int(11) UNSIGNED NOT NULL DEFAULT 0,
1070
  `updated_at` int(11) UNSIGNED NOT NULL DEFAULT 0,
1071
  UNIQUE KEY `id` (`contact_id`,`message_id`, `campaign_id`,`type`,`link_id`, `list_id`),
lite/includes/classes/class-es-actions.php CHANGED
@@ -95,9 +95,15 @@ if ( ! class_exists( 'ES_Actions' ) ) {
95
  private function add( $args, $explicit = true ) {
96
 
97
  $args = wp_parse_args( $args, array(
98
- 'created_at' => ig_es_get_current_gmt_timestamp(),
99
- 'updated_at' => ig_es_get_current_gmt_timestamp(),
100
- 'count' => 1,
 
 
 
 
 
 
101
  ) );
102
 
103
  return $this->db->add( $args, $explicit );
@@ -189,12 +195,17 @@ if ( ! class_exists( 'ES_Actions' ) ) {
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,
195
  'campaign_id' => $campaign_id,
196
  'type' => IG_MESSAGE_OPEN,
197
- ), $explicit );
 
 
 
 
 
198
  }
199
  }
200
 
@@ -216,13 +227,18 @@ if ( ! class_exists( 'ES_Actions' ) ) {
216
  // Track Email Open
217
  $this->open( $contact_id, $message_id, $campaign_id, false );
218
 
219
- return $this->add_contact_action( array(
220
  'contact_id' => $contact_id,
221
  'campaign_id' => $campaign_id,
222
  'message_id' => $message_id,
223
  'link_id' => $link_id,
224
  'type' => IG_LINK_CLICK,
225
- ), $explicit );
 
 
 
 
 
226
  }
227
 
228
  /**
@@ -313,6 +329,42 @@ if ( ! class_exists( 'ES_Actions' ) ) {
313
 
314
  return $wpdb->query( $sql );
315
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
316
  }
317
  }
318
 
95
  private function add( $args, $explicit = true ) {
96
 
97
  $args = wp_parse_args( $args, array(
98
+ 'created_at' => ig_es_get_current_gmt_timestamp(),
99
+ 'updated_at' => ig_es_get_current_gmt_timestamp(),
100
+ 'count' => 1,
101
+ 'ip' => '',
102
+ 'country' => '',
103
+ 'browser' => '',
104
+ 'device' => '',
105
+ 'os' => '',
106
+ 'email_client' => '',
107
  ) );
108
 
109
  return $this->db->add( $args, $explicit );
195
 
196
  $this->update_viewed_status( $contact_id, $campaign_id, $message_id );
197
 
198
+ $action_data = array(
199
  'contact_id' => $contact_id,
200
  'message_id' => $message_id,
201
  'campaign_id' => $campaign_id,
202
  'type' => IG_MESSAGE_OPEN,
203
+ );
204
+
205
+ $device_info = $this->get_user_device_info();
206
+ $action_data = array_merge( $action_data, $device_info);
207
+
208
+ return $this->add_action( $action_data, $explicit );
209
  }
210
  }
211
 
227
  // Track Email Open
228
  $this->open( $contact_id, $message_id, $campaign_id, false );
229
 
230
+ $action_data = array(
231
  'contact_id' => $contact_id,
232
  'campaign_id' => $campaign_id,
233
  'message_id' => $message_id,
234
  'link_id' => $link_id,
235
  'type' => IG_LINK_CLICK,
236
+ );
237
+
238
+ $device_info = $this->get_user_device_info();
239
+ $action_data = array_merge( $action_data, $device_info );
240
+
241
+ return $this->add_contact_action( $action_data, $explicit );
242
  }
243
 
244
  /**
329
 
330
  return $wpdb->query( $sql );
331
  }
332
+
333
+ /**
334
+ * Method to get current device information
335
+ *
336
+ * @since 4.5.0
337
+ */
338
+ public function get_user_device_info() {
339
+
340
+ $browser = new ES_Browser();
341
+ $device_info = array();
342
+
343
+ if( $browser->isMobile() ) {
344
+ $device_info['device'] = 'mobile';
345
+ } else if( $browser->isTablet() ) {
346
+ $device_info['device'] = 'tablet';
347
+ } else {
348
+ $device_info['device'] = 'desktop';
349
+ }
350
+
351
+ $device_ip_address = ig_es_get_ip();
352
+ if( ! empty( $device_ip_address ) && 'UNKNOWN' !== $device_ip_address ) {
353
+ $device_location_data = ES_Geolocation::geolocate_ip( $device_ip_address );
354
+ $device_country_code = ! empty( $device_location_data['country_code'] ) ? $device_location_data['country_code'] : '';
355
+ $device_info['country'] = $device_country_code;
356
+ } else {
357
+ $device_ip_address = '';
358
+ $device_info['country'] = '';
359
+ }
360
+
361
+ $device_info['ip'] = $device_ip_address;
362
+ $device_info['browser'] = $browser->getBrowser();
363
+ $device_info['os'] = $browser->getPlatform();
364
+ $device_info['email_client'] = $browser->get_email_client();
365
+
366
+ return $device_info;
367
+ }
368
  }
369
  }
370
 
lite/includes/classes/class-es-browser.php ADDED
@@ -0,0 +1,1904 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * File: Browser.php
4
+ * Author: Chris Schuld (http://chrisschuld.com/)
5
+ * Last Modified: April 14th, 2020
6
+ * @version 1.9.6
7
+ *
8
+ * Copyright 2019 Chris Schuld
9
+ *
10
+ * Permission is hereby granted, free of charge, to any person obtaining a
11
+ * copy of this software and associated documentation files (the "Software"),
12
+ * to deal in the Software without restriction, including without
13
+ * limitation the rights to use, copy, modify, merge, publish, distribute,
14
+ * sublicense, and/or sell copies of the Software, and to permit persons to
15
+ * whom the Software is furnished to do so, subject to the following
16
+ * conditions:
17
+ *
18
+ * The above copyright notice and this permission notice shall be included
19
+ * in all copies or substantial portions of the Software.
20
+ *
21
+ * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
22
+ * OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
23
+ * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
24
+ * IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
25
+ * CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
26
+ * TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
27
+ * SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
28
+ *
29
+ * Typical Usage:
30
+ *
31
+ * $browser = new Browser();
32
+ * if( $browser->getBrowser() == Browser::BROWSER_FIREFOX && $browser->getVersion() >= 2 ) {
33
+ * echo 'You have FireFox version 2 or greater';
34
+ * }
35
+ *
36
+ * User Agents Sampled from: http://www.useragentstring.com/
37
+ *
38
+ * This implementation is based on the original work from Gary White
39
+ * http://apptools.com/phptools/browser/
40
+ *
41
+ */
42
+ class ES_Browser {
43
+ private $_agent = '';
44
+ private $_browser_name = '';
45
+ private $_version = '';
46
+ private $_platform = '';
47
+ private $_os = '';
48
+ private $_is_aol = false;
49
+ private $_is_mobile = false;
50
+ private $_is_tablet = false;
51
+ private $_is_robot = false;
52
+ private $_is_facebook = false;
53
+ private $_aol_version = '';
54
+
55
+ const BROWSER_UNKNOWN = 'unknown';
56
+ const VERSION_UNKNOWN = 'unknown';
57
+
58
+ const BROWSER_OPERA = 'Opera'; // http://www.opera.com/
59
+ const BROWSER_OPERA_MINI = 'Opera Mini'; // http://www.opera.com/mini/
60
+ const BROWSER_WEBTV = 'WebTV'; // http://www.webtv.net/pc/
61
+ const BROWSER_EDGE = 'Edge'; // https://www.microsoft.com/edge
62
+ const BROWSER_IE = 'Internet Explorer'; // http://www.microsoft.com/ie/
63
+ const BROWSER_POCKET_IE = 'Pocket Internet Explorer'; // http://en.wikipedia.org/wiki/Internet_Explorer_Mobile
64
+ const BROWSER_KONQUEROR = 'Konqueror'; // http://www.konqueror.org/
65
+ const BROWSER_ICAB = 'iCab'; // http://www.icab.de/
66
+ const BROWSER_OMNIWEB = 'OmniWeb'; // http://www.omnigroup.com/applications/omniweb/
67
+ const BROWSER_FIREBIRD = 'Firebird'; // http://www.ibphoenix.com/
68
+ const BROWSER_FIREFOX = 'Firefox'; // https://www.mozilla.org/en-US/firefox/
69
+ const BROWSER_BRAVE = 'Brave'; // https://brave.com/
70
+ const BROWSER_PALEMOON = 'Palemoon'; // https://www.palemoon.org/
71
+ const BROWSER_ICEWEASEL = 'Iceweasel'; // http://www.geticeweasel.org/
72
+ const BROWSER_SHIRETOKO = 'Shiretoko'; // http://wiki.mozilla.org/Projects/shiretoko
73
+ const BROWSER_MOZILLA = 'Mozilla'; // http://www.mozilla.com/en-US/
74
+ const BROWSER_AMAYA = 'Amaya'; // http://www.w3.org/Amaya/
75
+ const BROWSER_LYNX = 'Lynx'; // http://en.wikipedia.org/wiki/Lynx
76
+ const BROWSER_SAFARI = 'Safari'; // http://apple.com
77
+ const BROWSER_IPHONE = 'iPhone'; // http://apple.com
78
+ const BROWSER_IPOD = 'iPod'; // http://apple.com
79
+ const BROWSER_IPAD = 'iPad'; // http://apple.com
80
+ const BROWSER_CHROME = 'Chrome'; // http://www.google.com/chrome
81
+ const BROWSER_ANDROID = 'Android'; // http://www.android.com/
82
+ const BROWSER_GOOGLEBOT = 'GoogleBot'; // http://en.wikipedia.org/wiki/Googlebot
83
+ const BROWSER_CURL = 'cURL'; // https://en.wikipedia.org/wiki/CURL
84
+ const BROWSER_WGET = 'Wget'; // https://en.wikipedia.org/wiki/Wget
85
+ const BROWSER_UCBROWSER = 'UCBrowser'; // https://www.ucweb.com/
86
+
87
+
88
+ const BROWSER_YANDEXBOT = 'YandexBot'; // http://yandex.com/bots
89
+ const BROWSER_YANDEXIMAGERESIZER_BOT = 'YandexImageResizer'; // http://yandex.com/bots
90
+ const BROWSER_YANDEXIMAGES_BOT = 'YandexImages'; // http://yandex.com/bots
91
+ const BROWSER_YANDEXVIDEO_BOT = 'YandexVideo'; // http://yandex.com/bots
92
+ const BROWSER_YANDEXMEDIA_BOT = 'YandexMedia'; // http://yandex.com/bots
93
+ const BROWSER_YANDEXBLOGS_BOT = 'YandexBlogs'; // http://yandex.com/bots
94
+ const BROWSER_YANDEXFAVICONS_BOT = 'YandexFavicons'; // http://yandex.com/bots
95
+ const BROWSER_YANDEXWEBMASTER_BOT = 'YandexWebmaster'; // http://yandex.com/bots
96
+ const BROWSER_YANDEXDIRECT_BOT = 'YandexDirect'; // http://yandex.com/bots
97
+ const BROWSER_YANDEXMETRIKA_BOT = 'YandexMetrika'; // http://yandex.com/bots
98
+ const BROWSER_YANDEXNEWS_BOT = 'YandexNews'; // http://yandex.com/bots
99
+ const BROWSER_YANDEXCATALOG_BOT = 'YandexCatalog'; // http://yandex.com/bots
100
+
101
+ const BROWSER_SLURP = 'Yahoo! Slurp'; // http://en.wikipedia.org/wiki/Yahoo!_Slurp
102
+ const BROWSER_W3CVALIDATOR = 'W3C Validator'; // http://validator.w3.org/
103
+ const BROWSER_BLACKBERRY = 'BlackBerry'; // http://www.blackberry.com/
104
+ const BROWSER_ICECAT = 'IceCat'; // http://en.wikipedia.org/wiki/GNU_IceCat
105
+ const BROWSER_NOKIA_S60 = 'Nokia S60 OSS Browser'; // http://en.wikipedia.org/wiki/Web_Browser_for_S60
106
+ const BROWSER_NOKIA = 'Nokia Browser'; // * all other WAP-based browsers on the Nokia Platform
107
+ const BROWSER_MSN = 'MSN Browser'; // http://explorer.msn.com/
108
+ const BROWSER_MSNBOT = 'MSN Bot'; // http://search.msn.com/msnbot.htm
109
+ const BROWSER_BINGBOT = 'Bing Bot'; // http://en.wikipedia.org/wiki/Bingbot
110
+ const BROWSER_VIVALDI = 'Vivaldi'; // https://vivaldi.com/
111
+ const BROWSER_YANDEX = 'Yandex'; // https://browser.yandex.ua/
112
+
113
+ const BROWSER_NETSCAPE_NAVIGATOR = 'Netscape Navigator'; // http://browser.netscape.com/ (DEPRECATED)
114
+ const BROWSER_GALEON = 'Galeon'; // http://galeon.sourceforge.net/ (DEPRECATED)
115
+ const BROWSER_NETPOSITIVE = 'NetPositive'; // http://en.wikipedia.org/wiki/NetPositive (DEPRECATED)
116
+ const BROWSER_PHOENIX = 'Phoenix'; // http://en.wikipedia.org/wiki/History_of_Mozilla_Firefox (DEPRECATED)
117
+ const BROWSER_PLAYSTATION = "PlayStation";
118
+ const BROWSER_SAMSUNG = "SamsungBrowser";
119
+ const BROWSER_SILK = "Silk";
120
+ const BROWSER_I_FRAME = "Iframely";
121
+ const BROWSER_COCOA = "CocoaRestClient";
122
+
123
+ const PLATFORM_UNKNOWN = 'unknown';
124
+ const PLATFORM_WINDOWS = 'Windows';
125
+ const PLATFORM_WINDOWS_CE = 'Windows CE';
126
+ const PLATFORM_APPLE = 'Apple';
127
+ const PLATFORM_LINUX = 'Linux';
128
+ const PLATFORM_OS2 = 'OS/2';
129
+ const PLATFORM_BEOS = 'BeOS';
130
+ const PLATFORM_IPHONE = 'iPhone';
131
+ const PLATFORM_IPOD = 'iPod';
132
+ const PLATFORM_IPAD = 'iPad';
133
+ const PLATFORM_BLACKBERRY = 'BlackBerry';
134
+ const PLATFORM_NOKIA = 'Nokia';
135
+ const PLATFORM_FREEBSD = 'FreeBSD';
136
+ const PLATFORM_OPENBSD = 'OpenBSD';
137
+ const PLATFORM_NETBSD = 'NetBSD';
138
+ const PLATFORM_SUNOS = 'SunOS';
139
+ const PLATFORM_OPENSOLARIS = 'OpenSolaris';
140
+ const PLATFORM_ANDROID = 'Android';
141
+ const PLATFORM_PLAYSTATION = "Sony PlayStation";
142
+ const PLATFORM_ROKU = "Roku";
143
+ const PLATFORM_APPLE_TV = "Apple TV";
144
+ const PLATFORM_TERMINAL = "Terminal";
145
+ const PLATFORM_FIRE_OS = "Fire OS";
146
+ const PLATFORM_SMART_TV = "SMART-TV";
147
+ const PLATFORM_CHROME_OS = "Chrome OS";
148
+ const PLATFORM_JAVA_ANDROID = "Java/Android";
149
+ const PLATFORM_POSTMAN = "Postman";
150
+ const PLATFORM_I_FRAME = "Iframely";
151
+
152
+ const OPERATING_SYSTEM_UNKNOWN = 'unknown';
153
+
154
+ /**
155
+ * Class constructor
156
+ * @param string $userAgent
157
+ */
158
+ public function __construct($userAgent = '')
159
+ {
160
+ if ($userAgent != '') {
161
+ $this->setUserAgent($userAgent);
162
+ } else {
163
+ $this->reset();
164
+ $this->determine();
165
+ }
166
+ }
167
+
168
+ /**
169
+ * Reset all properties
170
+ */
171
+ public function reset()
172
+ {
173
+ $this->_agent = isset($_SERVER['HTTP_USER_AGENT']) ? $_SERVER['HTTP_USER_AGENT'] : '';
174
+ $this->_browser_name = self::BROWSER_UNKNOWN;
175
+ $this->_version = self::VERSION_UNKNOWN;
176
+ $this->_platform = self::PLATFORM_UNKNOWN;
177
+ $this->_os = self::OPERATING_SYSTEM_UNKNOWN;
178
+ $this->_is_aol = false;
179
+ $this->_is_mobile = false;
180
+ $this->_is_tablet = false;
181
+ $this->_is_robot = false;
182
+ $this->_is_facebook = false;
183
+ $this->_aol_version = self::VERSION_UNKNOWN;
184
+ }
185
+
186
+ /**
187
+ * Check to see if the specific browser is valid
188
+ * @param string $browserName
189
+ * @return bool True if the browser is the specified browser
190
+ */
191
+ function isBrowser($browserName)
192
+ {
193
+ return (0 == strcasecmp($this->_browser_name, trim($browserName)));
194
+ }
195
+
196
+ /**
197
+ * The name of the browser. All return types are from the class contants
198
+ * @return string Name of the browser
199
+ */
200
+ public function getBrowser()
201
+ {
202
+ return $this->_browser_name;
203
+ }
204
+
205
+ /**
206
+ * Set the name of the browser
207
+ * @param $browser string The name of the Browser
208
+ */
209
+ public function setBrowser($browser)
210
+ {
211
+ $this->_browser_name = $browser;
212
+ }
213
+
214
+ /**
215
+ * The name of the platform. All return types are from the class contants
216
+ * @return string Name of the browser
217
+ */
218
+ public function getPlatform()
219
+ {
220
+ return $this->_platform;
221
+ }
222
+
223
+ /**
224
+ * Set the name of the platform
225
+ * @param string $platform The name of the Platform
226
+ */
227
+ public function setPlatform($platform)
228
+ {
229
+ $this->_platform = $platform;
230
+ }
231
+
232
+ /**
233
+ * The version of the browser.
234
+ * @return string Version of the browser (will only contain alpha-numeric characters and a period)
235
+ */
236
+ public function getVersion()
237
+ {
238
+ return $this->_version;
239
+ }
240
+
241
+ /**
242
+ * Set the version of the browser
243
+ * @param string $version The version of the Browser
244
+ */
245
+ public function setVersion($version)
246
+ {
247
+ $this->_version = preg_replace('/[^0-9,.,a-z,A-Z-]/', '', $version);
248
+ }
249
+
250
+ /**
251
+ * The version of AOL.
252
+ * @return string Version of AOL (will only contain alpha-numeric characters and a period)
253
+ */
254
+ public function getAolVersion()
255
+ {
256
+ return $this->_aol_version;
257
+ }
258
+
259
+ /**
260
+ * Set the version of AOL
261
+ * @param string $version The version of AOL
262
+ */
263
+ public function setAolVersion($version)
264
+ {
265
+ $this->_aol_version = preg_replace('/[^0-9,.,a-z,A-Z]/', '', $version);
266
+ }
267
+
268
+ /**
269
+ * Is the browser from AOL?
270
+ * @return boolean True if the browser is from AOL otherwise false
271
+ */
272
+ public function isAol()
273
+ {
274
+ return $this->_is_aol;
275
+ }
276
+
277
+ /**
278
+ * Is the browser from a mobile device?
279
+ * @return boolean True if the browser is from a mobile device otherwise false
280
+ */
281
+ public function isMobile()
282
+ {
283
+ return $this->_is_mobile;
284
+ }
285
+
286
+ /**
287
+ * Is the browser from a tablet device?
288
+ * @return boolean True if the browser is from a tablet device otherwise false
289
+ */
290
+ public function isTablet()
291
+ {
292
+ return $this->_is_tablet;
293
+ }
294
+
295
+ /**
296
+ * Is the browser from a robot (ex Slurp,GoogleBot)?
297
+ * @return boolean True if the browser is from a robot otherwise false
298
+ */
299
+ public function isRobot()
300
+ {
301
+ return $this->_is_robot;
302
+ }
303
+
304
+ /**
305
+ * Is the browser from facebook?
306
+ * @return boolean True if the browser is from facebook otherwise false
307
+ */
308
+ public function isFacebook()
309
+ {
310
+ return $this->_is_facebook;
311
+ }
312
+
313
+ /**
314
+ * Set the browser to be from AOL
315
+ * @param $isAol
316
+ */
317
+ public function setAol($isAol)
318
+ {
319
+ $this->_is_aol = $isAol;
320
+ }
321
+
322
+ /**
323
+ * Set the Browser to be mobile
324
+ * @param boolean $value is the browser a mobile browser or not
325
+ */
326
+ protected function setMobile($value = true)
327
+ {
328
+ $this->_is_mobile = $value;
329
+ }
330
+
331
+ /**
332
+ * Set the Browser to be tablet
333
+ * @param boolean $value is the browser a tablet browser or not
334
+ */
335
+ protected function setTablet($value = true)
336
+ {
337
+ $this->_is_tablet = $value;
338
+ }
339
+
340
+ /**
341
+ * Set the Browser to be a robot
342
+ * @param boolean $value is the browser a robot or not
343
+ */
344
+ protected function setRobot($value = true)
345
+ {
346
+ $this->_is_robot = $value;
347
+ }
348
+
349
+ /**
350
+ * Set the Browser to be a Facebook request
351
+ * @param boolean $value is the browser a robot or not
352
+ */
353
+ protected function setFacebook($value = true)
354
+ {
355
+ $this->_is_facebook = $value;
356
+ }
357
+
358
+ /**
359
+ * Get the user agent value in use to determine the browser
360
+ * @return string The user agent from the HTTP header
361
+ */
362
+ public function getUserAgent()
363
+ {
364
+ return $this->_agent;
365
+ }
366
+
367
+ /**
368
+ * Set the user agent value (the construction will use the HTTP header value - this will overwrite it)
369
+ * @param string $agent_string The value for the User Agent
370
+ */
371
+ public function setUserAgent($agent_string)
372
+ {
373
+ $this->reset();
374
+ $this->_agent = $agent_string;
375
+ $this->determine();
376
+ }
377
+
378
+ /**
379
+ * Used to determine if the browser is actually "chromeframe"
380
+ * @since 1.7
381
+ * @return boolean True if the browser is using chromeframe
382
+ */
383
+ public function isChromeFrame()
384
+ {
385
+ return (strpos($this->_agent, "chromeframe") !== false);
386
+ }
387
+
388
+ /**
389
+ * Returns a formatted string with a summary of the details of the browser.
390
+ * @return string formatted string with a summary of the browser
391
+ */
392
+ public function __toString()
393
+ {
394
+ return "<strong>Browser Name:</strong> {$this->getBrowser()}<br/>\n" .
395
+ "<strong>Browser Version:</strong> {$this->getVersion()}<br/>\n" .
396
+ "<strong>Browser User Agent String:</strong> {$this->getUserAgent()}<br/>\n" .
397
+ "<strong>Platform:</strong> {$this->getPlatform()}<br/>";
398
+ }
399
+
400
+ /**
401
+ * Protected routine to calculate and determine what the browser is in use (including platform)
402
+ */
403
+ protected function determine()
404
+ {
405
+ $this->checkPlatform();
406
+ $this->checkBrowsers();
407
+ $this->checkForAol();
408
+ }
409
+
410
+ /**
411
+ * Protected routine to determine the browser type
412
+ * @return boolean True if the browser was detected otherwise false
413
+ */
414
+ protected function checkBrowsers()
415
+ {
416
+ return (
417
+ // well-known, well-used
418
+ // Special Notes:
419
+ // (1) Opera must be checked before FireFox due to the odd
420
+ // user agents used in some older versions of Opera
421
+ // (2) WebTV is strapped onto Internet Explorer so we must
422
+ // check for WebTV before IE
423
+ // (3) (deprecated) Galeon is based on Firefox and needs to be
424
+ // tested before Firefox is tested
425
+ // (4) OmniWeb is based on Safari so OmniWeb check must occur
426
+ // before Safari
427
+ // (5) Netscape 9+ is based on Firefox so Netscape checks
428
+ // before FireFox are necessary
429
+ // (6) Vivaldi is UA contains both Firefox and Chrome so Vivaldi checks
430
+ // before Firefox and Chrome
431
+ $this->checkBrowserWebTv() ||
432
+ $this->checkBrowserBrave() ||
433
+ $this->checkBrowserUCBrowser() ||
434
+ $this->checkBrowserEdge() ||
435
+ $this->checkBrowserInternetExplorer() ||
436
+ $this->checkBrowserOpera() ||
437
+ $this->checkBrowserGaleon() ||
438
+ $this->checkBrowserNetscapeNavigator9Plus() ||
439
+ $this->checkBrowserVivaldi() ||
440
+ $this->checkBrowserYandex() ||
441
+ $this->checkBrowserPalemoon() ||
442
+ $this->checkBrowserFirefox() ||
443
+ $this->checkBrowserChrome() ||
444
+ $this->checkBrowserOmniWeb() ||
445
+
446
+ // common mobile
447
+ $this->checkBrowserAndroid() ||
448
+ $this->checkBrowseriPad() ||
449
+ $this->checkBrowseriPod() ||
450
+ $this->checkBrowseriPhone() ||
451
+ $this->checkBrowserBlackBerry() ||
452
+ $this->checkBrowserNokia() ||
453
+
454
+ // common bots
455
+ $this->checkBrowserGoogleBot() ||
456
+ $this->checkBrowserMSNBot() ||
457
+ $this->checkBrowserBingBot() ||
458
+ $this->checkBrowserSlurp() ||
459
+
460
+ // Yandex bots
461
+ $this->checkBrowserYandexBot() ||
462
+ $this->checkBrowserYandexImageResizerBot() ||
463
+ $this->checkBrowserYandexBlogsBot() ||
464
+ $this->checkBrowserYandexCatalogBot() ||
465
+ $this->checkBrowserYandexDirectBot() ||
466
+ $this->checkBrowserYandexFaviconsBot() ||
467
+ $this->checkBrowserYandexImagesBot() ||
468
+ $this->checkBrowserYandexMediaBot() ||
469
+ $this->checkBrowserYandexMetrikaBot() ||
470
+ $this->checkBrowserYandexNewsBot() ||
471
+ $this->checkBrowserYandexVideoBot() ||
472
+ $this->checkBrowserYandexWebmasterBot() ||
473
+
474
+ // check for facebook external hit when loading URL
475
+ $this->checkFacebookExternalHit() ||
476
+
477
+ // WebKit base check (post mobile and others)
478
+ $this->checkBrowserSamsung() ||
479
+ $this->checkBrowserSilk() ||
480
+ $this->checkBrowserSafari() ||
481
+
482
+ // everyone else
483
+ $this->checkBrowserNetPositive() ||
484
+ $this->checkBrowserFirebird() ||
485
+ $this->checkBrowserKonqueror() ||
486
+ $this->checkBrowserIcab() ||
487
+ $this->checkBrowserPhoenix() ||
488
+ $this->checkBrowserAmaya() ||
489
+ $this->checkBrowserLynx() ||
490
+ $this->checkBrowserShiretoko() ||
491
+ $this->checkBrowserIceCat() ||
492
+ $this->checkBrowserIceweasel() ||
493
+ $this->checkBrowserW3CValidator() ||
494
+ $this->checkBrowserCurl() ||
495
+ $this->checkBrowserWget() ||
496
+ $this->checkBrowserPlayStation() ||
497
+ $this->checkBrowserIframely() ||
498
+ $this->checkBrowserCocoa() ||
499
+ $this->checkBrowserMozilla() /* Mozilla is such an open standard that you must check it last */);
500
+ }
501
+
502
+ /**
503
+ * Determine if the user is using a BlackBerry (last updated 1.7)
504
+ * @return boolean True if the browser is the BlackBerry browser otherwise false
505
+ */
506
+ protected function checkBrowserBlackBerry()
507
+ {
508
+ if (stripos($this->_agent, 'blackberry') !== false) {
509
+ $aresult = explode('/', stristr($this->_agent, "BlackBerry"));
510
+ if (isset($aresult[1])) {
511
+ $aversion = explode(' ', $aresult[1]);
512
+ $this->setVersion($aversion[0]);
513
+ $this->_browser_name = self::BROWSER_BLACKBERRY;
514
+ $this->setMobile(true);
515
+ return true;
516
+ }
517
+ }
518
+ return false;
519
+ }
520
+
521
+ /**
522
+ * Determine if the user is using an AOL User Agent (last updated 1.7)
523
+ * @return boolean True if the browser is from AOL otherwise false
524
+ */
525
+ protected function checkForAol()
526
+ {
527
+ $this->setAol(false);
528
+ $this->setAolVersion(self::VERSION_UNKNOWN);
529
+
530
+ if (stripos($this->_agent, 'aol') !== false) {
531
+ $aversion = explode(' ', stristr($this->_agent, 'AOL'));
532
+ if (isset($aversion[1])) {
533
+ $this->setAol(true);
534
+ $this->setAolVersion(preg_replace('/[^0-9\.a-z]/i', '', $aversion[1]));
535
+ return true;
536
+ }
537
+ }
538
+ return false;
539
+ }
540
+
541
+ /**
542
+ * Determine if the browser is the GoogleBot or not (last updated 1.7)
543
+ * @return boolean True if the browser is the GoogletBot otherwise false
544
+ */
545
+ protected function checkBrowserGoogleBot()
546
+ {
547
+ if (stripos($this->_agent, 'googlebot') !== false) {
548
+ $aresult = explode('/', stristr($this->_agent, 'googlebot'));
549
+ if (isset($aresult[1])) {
550
+ $aversion = explode(' ', $aresult[1]);
551
+ $this->setVersion(str_replace(';', '', $aversion[0]));
552
+ $this->_browser_name = self::BROWSER_GOOGLEBOT;
553
+ $this->setRobot(true);
554
+ return true;
555
+ }
556
+ }
557
+ return false;
558
+ }
559
+
560
+ /**
561
+ * Determine if the browser is the YandexBot or not
562
+ * @return boolean True if the browser is the YandexBot otherwise false
563
+ */
564
+ protected function checkBrowserYandexBot()
565
+ {
566
+ if (stripos($this->_agent, 'YandexBot') !== false) {
567
+ $aresult = explode('/', stristr($this->_agent, 'YandexBot'));
568
+ if (isset($aresult[1])) {
569
+ $aversion = explode(' ', $aresult[1]);
570
+ $this->setVersion(str_replace(';', '', $aversion[0]));
571
+ $this->_browser_name = self::BROWSER_YANDEXBOT;
572
+ $this->setRobot(true);
573
+ return true;
574
+ }
575
+ }
576
+ return false;
577
+ }
578
+
579
+ /**
580
+ * Determine if the browser is the YandexImageResizer or not
581
+ * @return boolean True if the browser is the YandexImageResizer otherwise false
582
+ */
583
+ protected function checkBrowserYandexImageResizerBot()
584
+ {
585
+ if (stripos($this->_agent, 'YandexImageResizer') !== false) {
586
+ $aresult = explode('/', stristr($this->_agent, 'YandexImageResizer'));
587
+ if (isset($aresult[1])) {
588
+ $aversion = explode(' ', $aresult[1]);
589
+ $this->setVersion(str_replace(';', '', $aversion[0]));
590
+ $this->_browser_name = self::BROWSER_YANDEXIMAGERESIZER_BOT;
591
+ $this->setRobot(true);
592
+ return true;
593
+ }
594
+ }
595
+ return false;
596
+ }
597
+
598
+ /**
599
+ * Determine if the browser is the YandexCatalog or not
600
+ * @return boolean True if the browser is the YandexCatalog otherwise false
601
+ */
602
+ protected function checkBrowserYandexCatalogBot()
603
+ {
604
+ if (stripos($this->_agent, 'YandexCatalog') !== false) {
605
+ $aresult = explode('/', stristr($this->_agent, 'YandexCatalog'));
606
+ if (isset($aresult[1])) {
607
+ $aversion = explode(' ', $aresult[1]);
608
+ $this->setVersion(str_replace(';', '', $aversion[0]));
609
+ $this->_browser_name = self::BROWSER_YANDEXCATALOG_BOT;
610
+ $this->setRobot(true);
611
+ return true;
612
+ }
613
+ }
614
+ return false;
615
+ }
616
+
617
+ /**
618
+ * Determine if the browser is the YandexNews or not
619
+ * @return boolean True if the browser is the YandexNews otherwise false
620
+ */
621
+ protected function checkBrowserYandexNewsBot()
622
+ {
623
+ if (stripos($this->_agent, 'YandexNews') !== false) {
624
+ $aresult = explode('/', stristr($this->_agent, 'YandexNews'));
625
+ if (isset($aresult[1])) {
626
+ $aversion = explode(' ', $aresult[1]);
627
+ $this->setVersion(str_replace(';', '', $aversion[0]));
628
+ $this->_browser_name = self::BROWSER_YANDEXNEWS_BOT;
629
+ $this->setRobot(true);
630
+ return true;
631
+ }
632
+ }
633
+ return false;
634
+ }
635
+
636
+ /**
637
+ * Determine if the browser is the YandexMetrika or not
638
+ * @return boolean True if the browser is the YandexMetrika otherwise false
639
+ */
640
+ protected function checkBrowserYandexMetrikaBot()
641
+ {
642
+ if (stripos($this->_agent, 'YandexMetrika') !== false) {
643
+ $aresult = explode('/', stristr($this->_agent, 'YandexMetrika'));
644
+ if (isset($aresult[1])) {
645
+ $aversion = explode(' ', $aresult[1]);
646
+ $this->setVersion(str_replace(';', '', $aversion[0]));
647
+ $this->_browser_name = self::BROWSER_YANDEXMETRIKA_BOT;
648
+ $this->setRobot(true);
649
+ return true;
650
+ }
651
+ }
652
+ return false;
653
+ }
654
+
655
+ /**
656
+ * Determine if the browser is the YandexDirect or not
657
+ * @return boolean True if the browser is the YandexDirect otherwise false
658
+ */
659
+ protected function checkBrowserYandexDirectBot()
660
+ {
661
+ if (stripos($this->_agent, 'YandexDirect') !== false) {
662
+ $aresult = explode('/', stristr($this->_agent, 'YandexDirect'));
663
+ if (isset($aresult[1])) {
664
+ $aversion = explode(' ', $aresult[1]);
665
+ $this->setVersion(str_replace(';', '', $aversion[0]));
666
+ $this->_browser_name = self::BROWSER_YANDEXDIRECT_BOT;
667
+ $this->setRobot(true);
668
+ return true;
669
+ }
670
+ }
671
+ return false;
672
+ }
673
+
674
+ /**
675
+ * Determine if the browser is the YandexWebmaster or not
676
+ * @return boolean True if the browser is the YandexWebmaster otherwise false
677
+ */
678
+ protected function checkBrowserYandexWebmasterBot()
679
+ {
680
+ if (stripos($this->_agent, 'YandexWebmaster') !== false) {
681
+ $aresult = explode('/', stristr($this->_agent, 'YandexWebmaster'));
682
+ if (isset($aresult[1])) {
683
+ $aversion = explode(' ', $aresult[1]);
684
+ $this->setVersion(str_replace(';', '', $aversion[0]));
685
+ $this->_browser_name = self::BROWSER_YANDEXWEBMASTER_BOT;
686
+ $this->setRobot(true);
687
+ return true;
688
+ }
689
+ }
690
+ return false;
691
+ }
692
+
693
+ /**
694
+ * Determine if the browser is the YandexFavicons or not
695
+ * @return boolean True if the browser is the YandexFavicons otherwise false
696
+ */
697
+ protected function checkBrowserYandexFaviconsBot()
698
+ {
699
+ if (stripos($this->_agent, 'YandexFavicons') !== false) {
700
+ $aresult = explode('/', stristr($this->_agent, 'YandexFavicons'));
701
+ if (isset($aresult[1])) {
702
+ $aversion = explode(' ', $aresult[1]);
703
+ $this->setVersion(str_replace(';', '', $aversion[0]));
704
+ $this->_browser_name = self::BROWSER_YANDEXFAVICONS_BOT;
705
+ $this->setRobot(true);
706
+ return true;
707
+ }
708
+ }
709
+ return false;
710
+ }
711
+
712
+ /**
713
+ * Determine if the browser is the YandexBlogs or not
714
+ * @return boolean True if the browser is the YandexBlogs otherwise false
715
+ */
716
+ protected function checkBrowserYandexBlogsBot()
717
+ {
718
+ if (stripos($this->_agent, 'YandexBlogs') !== false) {
719
+ $aresult = explode('/', stristr($this->_agent, 'YandexBlogs'));
720
+ if (isset($aresult[1])) {
721
+ $aversion = explode(' ', $aresult[1]);
722
+ $this->setVersion(str_replace(';', '', $aversion[0]));
723
+ $this->_browser_name = self::BROWSER_YANDEXBLOGS_BOT;
724
+ $this->setRobot(true);
725
+ return true;
726
+ }
727
+ }
728
+ return false;
729
+ }
730
+
731
+ /**
732
+ * Determine if the browser is the YandexMedia or not
733
+ * @return boolean True if the browser is the YandexMedia otherwise false
734
+ */
735
+ protected function checkBrowserYandexMediaBot()
736
+ {
737
+ if (stripos($this->_agent, 'YandexMedia') !== false) {
738
+ $aresult = explode('/', stristr($this->_agent, 'YandexMedia'));
739
+ if (isset($aresult[1])) {
740
+ $aversion = explode(' ', $aresult[1]);
741
+ $this->setVersion(str_replace(';', '', $aversion[0]));
742
+ $this->_browser_name = self::BROWSER_YANDEXMEDIA_BOT;
743
+ $this->setRobot(true);
744
+ return true;
745
+ }
746
+ }
747
+ return false;
748
+ }
749
+
750
+ /**
751
+ * Determine if the browser is the YandexVideo or not
752
+ * @return boolean True if the browser is the YandexVideo otherwise false
753
+ */
754
+ protected function checkBrowserYandexVideoBot()
755
+ {
756
+ if (stripos($this->_agent, 'YandexVideo') !== false) {
757
+ $aresult = explode('/', stristr($this->_agent, 'YandexVideo'));
758
+ if (isset($aresult[1])) {
759
+ $aversion = explode(' ', $aresult[1]);
760
+ $this->setVersion(str_replace(';', '', $aversion[0]));
761
+ $this->_browser_name = self::BROWSER_YANDEXVIDEO_BOT;
762
+ $this->setRobot(true);
763
+ return true;
764
+ }
765
+ }
766
+ return false;
767
+ }
768
+
769
+ /**
770
+ * Determine if the browser is the YandexImages or not
771
+ * @return boolean True if the browser is the YandexImages otherwise false
772
+ */
773
+ protected function checkBrowserYandexImagesBot()
774
+ {
775
+ if (stripos($this->_agent, 'YandexImages') !== false) {
776
+ $aresult = explode('/', stristr($this->_agent, 'YandexImages'));
777
+ if (isset($aresult[1])) {
778
+ $aversion = explode(' ', $aresult[1]);
779
+ $this->setVersion(str_replace(';', '', $aversion[0]));
780
+ $this->_browser_name = self::BROWSER_YANDEXIMAGES_BOT;
781
+ $this->setRobot(true);
782
+ return true;
783
+ }
784
+ }
785
+ return false;
786
+ }
787
+
788
+ /**
789
+ * Determine if the browser is the MSNBot or not (last updated 1.9)
790
+ * @return boolean True if the browser is the MSNBot otherwise false
791
+ */
792
+ protected function checkBrowserMSNBot()
793
+ {
794
+ if (stripos($this->_agent, "msnbot") !== false) {
795
+ $aresult = explode("/", stristr($this->_agent, "msnbot"));
796
+ if (isset($aresult[1])) {
797
+ $aversion = explode(" ", $aresult[1]);
798
+ $this->setVersion(str_replace(";", '', $aversion[0]));
799
+ $this->_browser_name = self::BROWSER_MSNBOT;
800
+ $this->setRobot(true);
801
+ return true;
802
+ }
803
+ }
804
+ return false;
805
+ }
806
+
807
+ /**
808
+ * Determine if the browser is the BingBot or not (last updated 1.9)
809
+ * @return boolean True if the browser is the BingBot otherwise false
810
+ */
811
+ protected function checkBrowserBingBot()
812
+ {
813
+ if (stripos($this->_agent, "bingbot") !== false) {
814
+ $aresult = explode("/", stristr($this->_agent, "bingbot"));
815
+ if (isset($aresult[1])) {
816
+ $aversion = explode(" ", $aresult[1]);
817
+ $this->setVersion(str_replace(";", '', $aversion[0]));
818
+ $this->_browser_name = self::BROWSER_BINGBOT;
819
+ $this->setRobot(true);
820
+ return true;
821
+ }
822
+ }
823
+ return false;
824
+ }
825
+
826
+ /**
827
+ * Determine if the browser is the W3C Validator or not (last updated 1.7)
828
+ * @return boolean True if the browser is the W3C Validator otherwise false
829
+ */
830
+ protected function checkBrowserW3CValidator()
831
+ {
832
+ if (stripos($this->_agent, 'W3C-checklink') !== false) {
833
+ $aresult = explode('/', stristr($this->_agent, 'W3C-checklink'));
834
+ if (isset($aresult[1])) {
835
+ $aversion = explode(' ', $aresult[1]);
836
+ $this->setVersion($aversion[0]);
837
+ $this->_browser_name = self::BROWSER_W3CVALIDATOR;
838
+ return true;
839
+ }
840
+ } else if (stripos($this->_agent, 'W3C_Validator') !== false) {
841
+ // Some of the Validator versions do not delineate w/ a slash - add it back in
842
+ $ua = str_replace("W3C_Validator ", "W3C_Validator/", $this->_agent);
843
+ $aresult = explode('/', stristr($ua, 'W3C_Validator'));
844
+ if (isset($aresult[1])) {
845
+ $aversion = explode(' ', $aresult[1]);
846
+ $this->setVersion($aversion[0]);
847
+ $this->_browser_name = self::BROWSER_W3CVALIDATOR;
848
+ return true;
849
+ }
850
+ } else if (stripos($this->_agent, 'W3C-mobileOK') !== false) {
851
+ $this->_browser_name = self::BROWSER_W3CVALIDATOR;
852
+ $this->setMobile(true);
853
+ return true;
854
+ }
855
+ return false;
856
+ }
857
+
858
+ /**
859
+ * Determine if the browser is the Yahoo! Slurp Robot or not (last updated 1.7)
860
+ * @return boolean True if the browser is the Yahoo! Slurp Robot otherwise false
861
+ */
862
+ protected function checkBrowserSlurp()
863
+ {
864
+ if (stripos($this->_agent, 'slurp') !== false) {
865
+ $aresult = explode('/', stristr($this->_agent, 'Slurp'));
866
+ if (isset($aresult[1])) {
867
+ $aversion = explode(' ', $aresult[1]);
868
+ $this->setVersion($aversion[0]);
869
+ $this->_browser_name = self::BROWSER_SLURP;
870
+ $this->setRobot(true);
871
+ $this->setMobile(false);
872
+ return true;
873
+ }
874
+ }
875
+ return false;
876
+ }
877
+
878
+ /**
879
+ * Determine if the browser is Brave or not
880
+ * @return boolean True if the browser is Brave otherwise false
881
+ */
882
+ protected function checkBrowserBrave()
883
+ {
884
+ if (stripos($this->_agent, 'Brave/') !== false) {
885
+ $aResult = explode('/', stristr($this->_agent, 'Brave'));
886
+ if (isset($aResult[1])) {
887
+ $aversion = explode(' ', $aResult[1]);
888
+ $this->setVersion($aversion[0]);
889
+ $this->setBrowser(self::BROWSER_BRAVE);
890
+ return true;
891
+ }
892
+ } elseif (stripos($this->_agent, ' Brave ') !== false) {
893
+ $this->setBrowser(self::BROWSER_BRAVE);
894
+ // this version of the UA did not ship with a version marker
895
+ // e.g. Mozilla/5.0 (Linux; Android 7.0; SM-G955F Build/NRD90M) AppleWebKit/537.36 (KHTML, like Gecko) Brave Chrome/68.0.3440.91 Mobile Safari/537.36
896
+ $this->setVersion('');
897
+ return true;
898
+ }
899
+ return false;
900
+ }
901
+
902
+ /**
903
+ * Determine if the browser is Edge or not
904
+ * @return boolean True if the browser is Edge otherwise false
905
+ */
906
+ protected function checkBrowserEdge()
907
+ {
908
+ if ($name = (stripos($this->_agent, 'Edge/') !== false ? 'Edge' : ((stripos($this->_agent, 'Edg/') !== false || stripos($this->_agent, 'EdgA/') !== false) ? 'Edg' : false))) {
909
+ $aresult = explode('/', stristr($this->_agent, $name));
910
+ if (isset($aresult[1])) {
911
+ $aversion = explode(' ', $aresult[1]);
912
+ $this->setVersion($aversion[0]);
913
+ $this->setBrowser(self::BROWSER_EDGE);
914
+ if (stripos($this->_agent, 'Windows Phone') !== false || stripos($this->_agent, 'Android') !== false) {
915
+ $this->setMobile(true);
916
+ }
917
+ return true;
918
+ }
919
+ }
920
+ return false;
921
+ }
922
+
923
+ /**
924
+ * Determine if the browser is Internet Explorer or not (last updated 1.7)
925
+ * @return boolean True if the browser is Internet Explorer otherwise false
926
+ */
927
+ protected function checkBrowserInternetExplorer()
928
+ {
929
+ // Test for IE11
930
+ if (stripos($this->_agent, 'Trident/7.0; rv:11.0') !== false) {
931
+ $this->setBrowser(self::BROWSER_IE);
932
+ $this->setVersion('11.0');
933
+ return true;
934
+ } // Test for v1 - v1.5 IE
935
+ else if (stripos($this->_agent, 'microsoft internet explorer') !== false) {
936
+ $this->setBrowser(self::BROWSER_IE);
937
+ $this->setVersion('1.0');
938
+ $aresult = stristr($this->_agent, '/');
939
+ if (preg_match('/308|425|426|474|0b1/i', $aresult)) {
940
+ $this->setVersion('1.5');
941
+ }
942
+ return true;
943
+ } // Test for versions > 1.5
944
+ else if (stripos($this->_agent, 'msie') !== false && stripos($this->_agent, 'opera') === false) {
945
+ // See if the browser is the odd MSN Explorer
946
+ if (stripos($this->_agent, 'msnb') !== false) {
947
+ $aresult = explode(' ', stristr(str_replace(';', '; ', $this->_agent), 'MSN'));
948
+ if (isset($aresult[1])) {
949
+ $this->setBrowser(self::BROWSER_MSN);
950
+ $this->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1]));
951
+ return true;
952
+ }
953
+ }
954
+ $aresult = explode(' ', stristr(str_replace(';', '; ', $this->_agent), 'msie'));
955
+ if (isset($aresult[1])) {
956
+ $this->setBrowser(self::BROWSER_IE);
957
+ $this->setVersion(str_replace(array('(', ')', ';'), '', $aresult[1]));
958
+ if (stripos($this->_agent, 'IEMobile') !== false) {
959
+ $this->setBrowser(self::BROWSER_POCKET_IE);
960
+ $this->setMobile(true);
961
+ }
962
+ return true;
963
+ }
964
+ } // Test for versions > IE 10
965
+ else if (stripos($this->_agent, 'trident') !== false) {
966
+ $this->setBrowser(self::BROWSER_IE);
967
+ $result = explode('rv:', $this->_agent);
968
+ if (isset($result[1])) {
969
+ $this->setVersion(preg_replace('/[^0-9.]+/', '', $result[1]));
970
+ $this->_agent = str_replace(array("Mozilla", "Gecko"), "MSIE", $this->_agent);
971
+ }
972
+ } // Test for Pocket IE
973
+ else if (stripos($this->_agent, 'mspie') !== false || stripos($this->_agent, 'pocket') !== false) {
974
+ $aresult = explode(' ', stristr($this->_agent, 'mspie'));
975
+ if (isset($aresult[1])) {
976
+ $this->setPlatform(self::PLATFORM_WINDOWS_CE);
977
+ $this->setBrowser(self::BROWSER_POCKET_IE);
978
+ $this->setMobile(true);
979
+
980
+ if (stripos($this->_agent, 'mspie') !== false) {
981
+ $this->setVersion($aresult[1]);
982
+ } else {
983
+ $aversion = explode('/', $this->_agent);
984
+ if (isset($aversion[1])) {
985
+ $this->setVersion($aversion[1]);
986
+ }
987
+ }
988
+ return true;
989
+ }
990
+ }
991
+ return false;
992
+ }
993
+
994
+ /**
995
+ * Determine if the browser is Opera or not (last updated 1.7)
996
+ * @return boolean True if the browser is Opera otherwise false
997
+ */
998
+ protected function checkBrowserOpera()
999
+ {
1000
+ if (stripos($this->_agent, 'opera mini') !== false) {
1001
+ $resultant = stristr($this->_agent, 'opera mini');
1002
+ if (preg_match('/\//', $resultant)) {
1003
+ $aresult = explode('/', $resultant);
1004
+ if (isset($aresult[1])) {
1005
+ $aversion = explode(' ', $aresult[1]);
1006
+ $this->setVersion($aversion[0]);
1007
+ }
1008
+ } else {
1009
+ $aversion = explode(' ', stristr($resultant, 'opera mini'));
1010
+ if (isset($aversion[1])) {
1011
+ $this->setVersion($aversion[1]);
1012
+ }
1013
+ }
1014
+ $this->_browser_name = self::BROWSER_OPERA_MINI;
1015
+ $this->setMobile(true);
1016
+ return true;
1017
+ } else if (stripos($this->_agent, 'opera') !== false) {
1018
+ $resultant = stristr($this->_agent, 'opera');
1019
+ if (preg_match('/Version\/(1*.*)$/', $resultant, $matches)) {
1020
+ $this->setVersion($matches[1]);
1021
+ } else if (preg_match('/\//', $resultant)) {
1022
+ $aresult = explode('/', str_replace("(", " ", $resultant));
1023
+ if (isset($aresult[1])) {
1024
+ $aversion = explode(' ', $aresult[1]);
1025
+ $this->setVersion($aversion[0]);
1026
+ }
1027
+ } else {
1028
+ $aversion = explode(' ', stristr($resultant, 'opera'));
1029
+ $this->setVersion(isset($aversion[1]) ? $aversion[1] : '');
1030
+ }
1031
+ if (stripos($this->_agent, 'Opera Mobi') !== false) {
1032
+ $this->setMobile(true);
1033
+ }
1034
+ $this->_browser_name = self::BROWSER_OPERA;
1035
+ return true;
1036
+ } else if (stripos($this->_agent, 'OPR') !== false) {
1037
+ $resultant = stristr($this->_agent, 'OPR');
1038
+ if (preg_match('/\//', $resultant)) {
1039
+ $aresult = explode('/', str_replace("(", " ", $resultant));
1040
+ if (isset($aresult[1])) {
1041
+ $aversion = explode(' ', $aresult[1]);
1042
+ $this->setVersion($aversion[0]);
1043
+ }
1044
+ }
1045
+ if (stripos($this->_agent, 'Mobile') !== false) {
1046
+ $this->setMobile(true);
1047
+ }
1048
+ $this->_browser_name = self::BROWSER_OPERA;
1049
+ return true;
1050
+ }
1051
+ return false;
1052
+ }
1053
+
1054
+ /**
1055
+ * Determine if the browser is Chrome or not (last updated 1.7)
1056
+ * @return boolean True if the browser is Chrome otherwise false
1057
+ */
1058
+ protected function checkBrowserChrome()
1059
+ {
1060
+ if (stripos($this->_agent, 'Chrome') !== false) {
1061
+ $aresult = preg_split('/[\/;]+/', stristr($this->_agent, 'Chrome'));
1062
+ if (isset($aresult[1])) {
1063
+ $aversion = explode(' ', $aresult[1]);
1064
+ $this->setVersion($aversion[0]);
1065
+ $this->setBrowser(self::BROWSER_CHROME);
1066
+ //Chrome on Android
1067
+ if (stripos($this->_agent, 'Android') !== false) {
1068
+ if (stripos($this->_agent, 'Mobile') !== false) {
1069
+ $this->setMobile(true);
1070
+ } else {
1071
+ $this->setTablet(true);
1072
+ }
1073
+ }
1074
+ return true;
1075
+ }
1076
+ }
1077
+ return false;
1078
+ }
1079
+
1080
+
1081
+ /**
1082
+ * Determine if the browser is WebTv or not (last updated 1.7)
1083
+ * @return boolean True if the browser is WebTv otherwise false
1084
+ */
1085
+ protected function checkBrowserWebTv()
1086
+ {
1087
+ if (stripos($this->_agent, 'webtv') !== false) {
1088
+ $aresult = explode('/', stristr($this->_agent, 'webtv'));
1089
+ if (isset($aresult[1])) {
1090
+ $aversion = explode(' ', $aresult[1]);
1091
+ $this->setVersion($aversion[0]);
1092
+ $this->setBrowser(self::BROWSER_WEBTV);
1093
+ return true;
1094
+ }
1095
+ }
1096
+ return false;
1097
+ }
1098
+
1099
+ /**
1100
+ * Determine if the browser is NetPositive or not (last updated 1.7)
1101
+ * @return boolean True if the browser is NetPositive otherwise false
1102
+ */
1103
+ protected function checkBrowserNetPositive()
1104
+ {
1105
+ if (stripos($this->_agent, 'NetPositive') !== false) {
1106
+ $aresult = explode('/', stristr($this->_agent, 'NetPositive'));
1107
+ if (isset($aresult[1])) {
1108
+ $aversion = explode(' ', $aresult[1]);
1109
+ $this->setVersion(str_replace(array('(', ')', ';'), '', $aversion[0]));
1110
+ $this->setBrowser(self::BROWSER_NETPOSITIVE);
1111
+ return true;
1112
+ }
1113
+ }
1114
+ return false;
1115
+ }
1116
+
1117
+ /**
1118
+ * Determine if the browser is Galeon or not (last updated 1.7)
1119
+ * @return boolean True if the browser is Galeon otherwise false
1120
+ */
1121
+ protected function checkBrowserGaleon()
1122
+ {
1123
+ if (stripos($this->_agent, 'galeon') !== false) {
1124
+ $aresult = explode(' ', stristr($this->_agent, 'galeon'));
1125
+ $aversion = explode('/', $aresult[0]);
1126
+ if (isset($aversion[1])) {
1127
+ $this->setVersion($aversion[1]);
1128
+ $this->setBrowser(self::BROWSER_GALEON);
1129
+ return true;
1130
+ }
1131
+ }
1132
+ return false;
1133
+ }
1134
+
1135
+ /**
1136
+ * Determine if the browser is Konqueror or not (last updated 1.7)
1137
+ * @return boolean True if the browser is Konqueror otherwise false
1138
+ */
1139
+ protected function checkBrowserKonqueror()
1140
+ {
1141
+ if (stripos($this->_agent, 'Konqueror') !== false) {
1142
+ $aresult = explode(' ', stristr($this->_agent, 'Konqueror'));
1143
+ $aversion = explode('/', $aresult[0]);
1144
+ if (isset($aversion[1])) {
1145
+ $this->setVersion($aversion[1]);
1146
+ $this->setBrowser(self::BROWSER_KONQUEROR);
1147
+ return true;
1148
+ }
1149
+ }
1150
+ return false;
1151
+ }
1152
+
1153
+ /**
1154
+ * Determine if the browser is iCab or not (last updated 1.7)
1155
+ * @return boolean True if the browser is iCab otherwise false
1156
+ */
1157
+ protected function checkBrowserIcab()
1158
+ {
1159
+ if (stripos($this->_agent, 'icab') !== false) {
1160
+ $aversion = explode(' ', stristr(str_replace('/', ' ', $this->_agent), 'icab'));
1161
+ if (isset($aversion[1])) {
1162
+ $this->setVersion($aversion[1]);
1163
+ $this->setBrowser(self::BROWSER_ICAB);
1164
+ return true;
1165
+ }
1166
+ }
1167
+ return false;
1168
+ }
1169
+
1170
+ /**
1171
+ * Determine if the browser is OmniWeb or not (last updated 1.7)
1172
+ * @return boolean True if the browser is OmniWeb otherwise false
1173
+ */
1174
+ protected function checkBrowserOmniWeb()
1175
+ {
1176
+ if (stripos($this->_agent, 'omniweb') !== false) {
1177
+ $aresult = explode('/', stristr($this->_agent, 'omniweb'));
1178
+ $aversion = explode(' ', isset($aresult[1]) ? $aresult[1] : '');
1179
+ $this->setVersion($aversion[0]);
1180
+ $this->setBrowser(self::BROWSER_OMNIWEB);
1181
+ return true;
1182
+ }
1183
+ return false;
1184
+ }
1185
+
1186
+ /**
1187
+ * Determine if the browser is Phoenix or not (last updated 1.7)
1188
+ * @return boolean True if the browser is Phoenix otherwise false
1189
+ */
1190
+ protected function checkBrowserPhoenix()
1191
+ {
1192
+ if (stripos($this->_agent, 'Phoenix') !== false) {
1193
+ $aversion = explode('/', stristr($this->_agent, 'Phoenix'));
1194
+ if (isset($aversion[1])) {
1195
+ $this->setVersion($aversion[1]);
1196
+ $this->setBrowser(self::BROWSER_PHOENIX);
1197
+ return true;
1198
+ }
1199
+ }
1200
+ return false;
1201
+ }
1202
+
1203
+ /**
1204
+ * Determine if the browser is Firebird or not (last updated 1.7)
1205
+ * @return boolean True if the browser is Firebird otherwise false
1206
+ */
1207
+ protected function checkBrowserFirebird()
1208
+ {
1209
+ if (stripos($this->_agent, 'Firebird') !== false) {
1210
+ $aversion = explode('/', stristr($this->_agent, 'Firebird'));
1211
+ if (isset($aversion[1])) {
1212
+ $this->setVersion($aversion[1]);
1213
+ $this->setBrowser(self::BROWSER_FIREBIRD);
1214
+ return true;
1215
+ }
1216
+ }
1217
+ return false;
1218
+ }
1219
+
1220
+ /**
1221
+ * Determine if the browser is Netscape Navigator 9+ or not (last updated 1.7)
1222
+ * NOTE: (http://browser.netscape.com/ - Official support ended on March 1st, 2008)
1223
+ * @return boolean True if the browser is Netscape Navigator 9+ otherwise false
1224
+ */
1225
+ protected function checkBrowserNetscapeNavigator9Plus()
1226
+ {
1227
+ if (stripos($this->_agent, 'Firefox') !== false && preg_match('/Navigator\/([^ ]*)/i', $this->_agent, $matches)) {
1228
+ $this->setVersion($matches[1]);
1229
+ $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR);
1230
+ return true;
1231
+ } else if (stripos($this->_agent, 'Firefox') === false && preg_match('/Netscape6?\/([^ ]*)/i', $this->_agent, $matches)) {
1232
+ $this->setVersion($matches[1]);
1233
+ $this->setBrowser(self::BROWSER_NETSCAPE_NAVIGATOR);
1234
+ return true;
1235
+ }
1236
+ return false;
1237
+ }
1238
+
1239
+ /**
1240
+ * Determine if the browser is Shiretoko or not (https://wiki.mozilla.org/Projects/shiretoko) (last updated 1.7)
1241
+ * @return boolean True if the browser is Shiretoko otherwise false
1242
+ */
1243
+ protected function checkBrowserShiretoko()
1244
+ {
1245
+ if (stripos($this->_agent, 'Mozilla') !== false && preg_match('/Shiretoko\/([^ ]*)/i', $this->_agent, $matches)) {
1246
+ $this->setVersion($matches[1]);
1247
+ $this->setBrowser(self::BROWSER_SHIRETOKO);
1248
+ return true;
1249
+ }
1250
+ return false;
1251
+ }
1252
+
1253
+ /**
1254
+ * Determine if the browser is Ice Cat or not (http://en.wikipedia.org/wiki/GNU_IceCat) (last updated 1.7)
1255
+ * @return boolean True if the browser is Ice Cat otherwise false
1256
+ */
1257
+ protected function checkBrowserIceCat()
1258
+ {
1259
+ if (stripos($this->_agent, 'Mozilla') !== false && preg_match('/IceCat\/([^ ]*)/i', $this->_agent, $matches)) {
1260
+ $this->setVersion($matches[1]);
1261
+ $this->setBrowser(self::BROWSER_ICECAT);
1262
+ return true;
1263
+ }
1264
+ return false;
1265
+ }
1266
+
1267
+ /**
1268
+ * Determine if the browser is Nokia or not (last updated 1.7)
1269
+ * @return boolean True if the browser is Nokia otherwise false
1270
+ */
1271
+ protected function checkBrowserNokia()
1272
+ {
1273
+ if (preg_match("/Nokia([^\/]+)\/([^ SP]+)/i", $this->_agent, $matches)) {
1274
+ $this->setVersion($matches[2]);
1275
+ if (stripos($this->_agent, 'Series60') !== false || strpos($this->_agent, 'S60') !== false) {
1276
+ $this->setBrowser(self::BROWSER_NOKIA_S60);
1277
+ } else {
1278
+ $this->setBrowser(self::BROWSER_NOKIA);
1279
+ }
1280
+ $this->setMobile(true);
1281
+ return true;
1282
+ }
1283
+ return false;
1284
+ }
1285
+
1286
+ /**
1287
+ * Determine if the browser is Palemoon or not
1288
+ * @return boolean True if the browser is Palemoon otherwise false
1289
+ */
1290
+ protected function checkBrowserPalemoon()
1291
+ {
1292
+ if (stripos($this->_agent, 'safari') === false) {
1293
+ if (preg_match("/Palemoon[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches)) {
1294
+ $this->setVersion($matches[1]);
1295
+ $this->setBrowser(self::BROWSER_PALEMOON);
1296
+ return true;
1297
+ } else if (preg_match("/Palemoon([0-9a-zA-Z\.]+)/i", $this->_agent, $matches)) {
1298
+ $this->setVersion($matches[1]);
1299
+ $this->setBrowser(self::BROWSER_PALEMOON);
1300
+ return true;
1301
+ } else if (preg_match("/Palemoon/i", $this->_agent, $matches)) {
1302
+ $this->setVersion('');
1303
+ $this->setBrowser(self::BROWSER_PALEMOON);
1304
+ return true;
1305
+ }
1306
+ }
1307
+ return false;
1308
+ }
1309
+
1310
+ /**
1311
+ * Determine if the browser is UCBrowser or not
1312
+ * @return boolean True if the browser is UCBrowser otherwise false
1313
+ */
1314
+ protected function checkBrowserUCBrowser()
1315
+ {
1316
+ if (preg_match('/UC ?Browser\/?([\d\.]+)/', $this->_agent, $matches)) {
1317
+ if (isset($matches[1])) {
1318
+ $this->setVersion($matches[1]);
1319
+ }
1320
+ if (stripos($this->_agent, 'Mobile') !== false) {
1321
+ $this->setMobile(true);
1322
+ } else {
1323
+ $this->setTablet(true);
1324
+ }
1325
+ $this->setBrowser(self::BROWSER_UCBROWSER);
1326
+ return true;
1327
+ }
1328
+ return false;
1329
+ }
1330
+
1331
+ /**
1332
+ * Determine if the browser is Firefox or not
1333
+ * @return boolean True if the browser is Firefox otherwise false
1334
+ */
1335
+ protected function checkBrowserFirefox()
1336
+ {
1337
+ if (stripos($this->_agent, 'safari') === false) {
1338
+ if (preg_match("/Firefox[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches)) {
1339
+ $this->setVersion($matches[1]);
1340
+ $this->setBrowser(self::BROWSER_FIREFOX);
1341
+ //Firefox on Android
1342
+ if (stripos($this->_agent, 'Android') !== false || stripos($this->_agent, 'iPhone') !== false) {
1343
+ if (stripos($this->_agent, 'Mobile') !== false || stripos($this->_agent, 'Tablet') !== false) {
1344
+ $this->setMobile(true);
1345
+ } else {
1346
+ $this->setTablet(true);
1347
+ }
1348
+ }
1349
+ return true;
1350
+ } else if (preg_match("/Firefox([0-9a-zA-Z\.]+)/i", $this->_agent, $matches)) {
1351
+ $this->setVersion($matches[1]);
1352
+ $this->setBrowser(self::BROWSER_FIREFOX);
1353
+ return true;
1354
+ } else if (preg_match("/Firefox$/i", $this->_agent, $matches)) {
1355
+ $this->setVersion('');
1356
+ $this->setBrowser(self::BROWSER_FIREFOX);
1357
+ return true;
1358
+ }
1359
+ } elseif (preg_match("/FxiOS[\/ \(]([^ ;\)]+)/i", $this->_agent, $matches)) {
1360
+ $this->setVersion($matches[1]);
1361
+ $this->setBrowser(self::BROWSER_FIREFOX);
1362
+ //Firefox on Android
1363
+ if (stripos($this->_agent, 'Android') !== false || stripos($this->_agent, 'iPhone') !== false) {
1364
+ if (stripos($this->_agent, 'Mobile') !== false || stripos($this->_agent, 'Tablet') !== false) {
1365
+ $this->setMobile(true);
1366
+ } else {
1367
+ $this->setTablet(true);
1368
+ }
1369
+ }
1370
+ return true;
1371
+ }
1372
+ return false;
1373
+ }
1374
+
1375
+ /**
1376
+ * Determine if the browser is Firefox or not (last updated 1.7)
1377
+ * @return boolean True if the browser is Firefox otherwise false
1378
+ */
1379
+ protected function checkBrowserIceweasel()
1380
+ {
1381
+ if (stripos($this->_agent, 'Iceweasel') !== false) {
1382
+ $aresult = explode('/', stristr($this->_agent, 'Iceweasel'));
1383
+ if (isset($aresult[1])) {
1384
+ $aversion = explode(' ', $aresult[1]);
1385
+ $this->setVersion($aversion[0]);
1386
+ $this->setBrowser(self::BROWSER_ICEWEASEL);
1387
+ return true;
1388
+ }
1389
+ }
1390
+ return false;
1391
+ }
1392
+
1393
+ /**
1394
+ * Determine if the browser is Mozilla or not (last updated 1.7)
1395
+ * @return boolean True if the browser is Mozilla otherwise false
1396
+ */
1397
+ protected function checkBrowserMozilla()
1398
+ {
1399
+ if (stripos($this->_agent, 'mozilla') !== false && preg_match('/rv:[0-9].[0-9][a-b]?/i', $this->_agent) && stripos($this->_agent, 'netscape') === false) {
1400
+ $aversion = explode(' ', stristr($this->_agent, 'rv:'));
1401
+ preg_match('/rv:[0-9].[0-9][a-b]?/i', $this->_agent, $aversion);
1402
+ $this->setVersion(str_replace('rv:', '', $aversion[0]));
1403
+ $this->setBrowser(self::BROWSER_MOZILLA);
1404
+ return true;
1405
+ } else if (stripos($this->_agent, 'mozilla') !== false && preg_match('/rv:[0-9]\.[0-9]/i', $this->_agent) && stripos($this->_agent, 'netscape') === false) {
1406
+ $aversion = explode('', stristr($this->_agent, 'rv:'));
1407
+ $this->setVersion(str_replace('rv:', '', $aversion[0]));
1408
+ $this->setBrowser(self::BROWSER_MOZILLA);
1409
+ return true;
1410
+ } else if (stripos($this->_agent, 'mozilla') !== false && preg_match('/mozilla\/([^ ]*)/i', $this->_agent, $matches) && stripos($this->_agent, 'netscape') === false) {
1411
+ $this->setVersion($matches[1]);
1412
+ $this->setBrowser(self::BROWSER_MOZILLA);
1413
+ return true;
1414
+ }
1415
+ return false;
1416
+ }
1417
+
1418
+ /**
1419
+ * Determine if the browser is Lynx or not (last updated 1.7)
1420
+ * @return boolean True if the browser is Lynx otherwise false
1421
+ */
1422
+ protected function checkBrowserLynx()
1423
+ {
1424
+ if (stripos($this->_agent, 'lynx') !== false) {
1425
+ $aresult = explode('/', stristr($this->_agent, 'Lynx'));
1426
+ $aversion = explode(' ', (isset($aresult[1]) ? $aresult[1] : ''));
1427
+ $this->setVersion($aversion[0]);
1428
+ $this->setBrowser(self::BROWSER_LYNX);
1429
+ return true;
1430
+ }
1431
+ return false;
1432
+ }
1433
+
1434
+ /**
1435
+ * Determine if the browser is Amaya or not (last updated 1.7)
1436
+ * @return boolean True if the browser is Amaya otherwise false
1437
+ */
1438
+ protected function checkBrowserAmaya()
1439
+ {
1440
+ if (stripos($this->_agent, 'amaya') !== false) {
1441
+ $aresult = explode('/', stristr($this->_agent, 'Amaya'));
1442
+ if (isset($aresult[1])) {
1443
+ $aversion = explode(' ', $aresult[1]);
1444
+ $this->setVersion($aversion[0]);
1445
+ $this->setBrowser(self::BROWSER_AMAYA);
1446
+ return true;
1447
+ }
1448
+ }
1449
+ return false;
1450
+ }
1451
+
1452
+ /**
1453
+ * Determine if the browser is Safari or not (last updated 1.7)
1454
+ * @return boolean True if the browser is Safari otherwise false
1455
+ */
1456
+ protected function checkBrowserSafari()
1457
+ {
1458
+ if (
1459
+ stripos($this->_agent, 'Safari') !== false
1460
+ && stripos($this->_agent, 'iPhone') === false
1461
+ && stripos($this->_agent, 'iPod') === false
1462
+ ) {
1463
+
1464
+ $aresult = explode('/', stristr($this->_agent, 'Version'));
1465
+ if (isset($aresult[1])) {
1466
+ $aversion = explode(' ', $aresult[1]);
1467
+ $this->setVersion($aversion[0]);
1468
+ } else {
1469
+ $this->setVersion(self::VERSION_UNKNOWN);
1470
+ }
1471
+ $this->setBrowser(self::BROWSER_SAFARI);
1472
+ return true;
1473
+ }
1474
+ return false;
1475
+ }
1476
+
1477
+ protected function checkBrowserSamsung()
1478
+ {
1479
+ if (stripos($this->_agent, 'SamsungBrowser') !== false) {
1480
+
1481
+ $aresult = explode('/', stristr($this->_agent, 'SamsungBrowser'));
1482
+ if (isset($aresult[1])) {
1483
+ $aversion = explode(' ', $aresult[1]);
1484
+ $this->setVersion($aversion[0]);
1485
+ } else {
1486
+ $this->setVersion(self::VERSION_UNKNOWN);
1487
+ }
1488
+ $this->setBrowser(self::BROWSER_SAMSUNG);
1489
+ return true;
1490
+ }
1491
+ return false;
1492
+ }
1493
+
1494
+ protected function checkBrowserSilk()
1495
+ {
1496
+ if (stripos($this->_agent, 'Silk') !== false) {
1497
+ $aresult = explode('/', stristr($this->_agent, 'Silk'));
1498
+ if (isset($aresult[1])) {
1499
+ $aversion = explode(' ', $aresult[1]);
1500
+ $this->setVersion($aversion[0]);
1501
+ } else {
1502
+ $this->setVersion(self::VERSION_UNKNOWN);
1503
+ }
1504
+ $this->setBrowser(self::BROWSER_SILK);
1505
+ return true;
1506
+ }
1507
+ return false;
1508
+ }
1509
+
1510
+ protected function checkBrowserIframely()
1511
+ {
1512
+ if (stripos($this->_agent, 'Iframely') !== false) {
1513
+ $aresult = explode('/', stristr($this->_agent, 'Iframely'));
1514
+ if (isset($aresult[1])) {
1515
+ $aversion = explode(' ', $aresult[1]);
1516
+ $this->setVersion($aversion[0]);
1517
+ } else {
1518
+ $this->setVersion(self::VERSION_UNKNOWN);
1519
+ }
1520
+ $this->setBrowser(self::BROWSER_I_FRAME);
1521
+ return true;
1522
+ }
1523
+ return false;
1524
+ }
1525
+
1526
+ protected function checkBrowserCocoa()
1527
+ {
1528
+ if (stripos($this->_agent, 'CocoaRestClient') !== false) {
1529
+ $aresult = explode('/', stristr($this->_agent, 'CocoaRestClient'));
1530
+ if (isset($aresult[1])) {
1531
+ $aversion = explode(' ', $aresult[1]);
1532
+ $this->setVersion($aversion[0]);
1533
+ } else {
1534
+ $this->setVersion(self::VERSION_UNKNOWN);
1535
+ }
1536
+ $this->setBrowser(self::BROWSER_COCOA);
1537
+ return true;
1538
+ }
1539
+ return false;
1540
+ }
1541
+
1542
+ /**
1543
+ * Detect if URL is loaded from FacebookExternalHit
1544
+ * @return boolean True if it detects FacebookExternalHit otherwise false
1545
+ */
1546
+ protected function checkFacebookExternalHit()
1547
+ {
1548
+ if (stristr($this->_agent, 'FacebookExternalHit')) {
1549
+ $this->setRobot(true);
1550
+ $this->setFacebook(true);
1551
+ return true;
1552
+ }
1553
+ return false;
1554
+ }
1555
+
1556
+ /**
1557
+ * Detect if URL is being loaded from internal Facebook browser
1558
+ * @return boolean True if it detects internal Facebook browser otherwise false
1559
+ */
1560
+ protected function checkForFacebookIos()
1561
+ {
1562
+ if (stristr($this->_agent, 'FBIOS')) {
1563
+ $this->setFacebook(true);
1564
+ return true;
1565
+ }
1566
+ return false;
1567
+ }
1568
+
1569
+ /**
1570
+ * Detect Version for the Safari browser on iOS devices
1571
+ * @return boolean True if it detects the version correctly otherwise false
1572
+ */
1573
+ protected function getSafariVersionOnIos()
1574
+ {
1575
+ $aresult = explode('/', stristr($this->_agent, 'Version'));
1576
+ if (isset($aresult[1])) {
1577
+ $aversion = explode(' ', $aresult[1]);
1578
+ $this->setVersion($aversion[0]);
1579
+ return true;
1580
+ }
1581
+ return false;
1582
+ }
1583
+
1584
+ /**
1585
+ * Detect Version for the Chrome browser on iOS devices
1586
+ * @return boolean True if it detects the version correctly otherwise false
1587
+ */
1588
+ protected function getChromeVersionOnIos()
1589
+ {
1590
+ $aresult = explode('/', stristr($this->_agent, 'CriOS'));
1591
+ if (isset($aresult[1])) {
1592
+ $aversion = explode(' ', $aresult[1]);
1593
+ $this->setVersion($aversion[0]);
1594
+ $this->setBrowser(self::BROWSER_CHROME);
1595
+ return true;
1596
+ }
1597
+ return false;
1598
+ }
1599
+
1600
+ /**
1601
+ * Determine if the browser is iPhone or not (last updated 1.7)
1602
+ * @return boolean True if the browser is iPhone otherwise false
1603
+ */
1604
+ protected function checkBrowseriPhone()
1605
+ {
1606
+ if (stripos($this->_agent, 'iPhone') !== false) {
1607
+ $this->setVersion(self::VERSION_UNKNOWN);
1608
+ $this->setBrowser(self::BROWSER_IPHONE);
1609
+ $this->getSafariVersionOnIos();
1610
+ $this->getChromeVersionOnIos();
1611
+ $this->checkForFacebookIos();
1612
+ $this->setMobile(true);
1613
+ return true;
1614
+ }
1615
+ return false;
1616
+ }
1617
+
1618
+ /**
1619
+ * Determine if the browser is iPad or not (last updated 1.7)
1620
+ * @return boolean True if the browser is iPad otherwise false
1621
+ */
1622
+ protected function checkBrowseriPad()
1623
+ {
1624
+ if (stripos($this->_agent, 'iPad') !== false) {
1625
+ $this->setVersion(self::VERSION_UNKNOWN);
1626
+ $this->setBrowser(self::BROWSER_IPAD);
1627
+ $this->getSafariVersionOnIos();
1628
+ $this->getChromeVersionOnIos();
1629
+ $this->checkForFacebookIos();
1630
+ $this->setTablet(true);
1631
+ return true;
1632
+ }
1633
+ return false;
1634
+ }
1635
+
1636
+ /**
1637
+ * Determine if the browser is iPod or not (last updated 1.7)
1638
+ * @return boolean True if the browser is iPod otherwise false
1639
+ */
1640
+ protected function checkBrowseriPod()
1641
+ {
1642
+ if (stripos($this->_agent, 'iPod') !== false) {
1643
+ $this->setVersion(self::VERSION_UNKNOWN);
1644
+ $this->setBrowser(self::BROWSER_IPOD);
1645
+ $this->getSafariVersionOnIos();
1646
+ $this->getChromeVersionOnIos();
1647
+ $this->checkForFacebookIos();
1648
+ $this->setMobile(true);
1649
+ return true;
1650
+ }
1651
+ return false;
1652
+ }
1653
+
1654
+ /**
1655
+ * Determine if the browser is Android or not (last updated 1.7)
1656
+ * @return boolean True if the browser is Android otherwise false
1657
+ */
1658
+ protected function checkBrowserAndroid()
1659
+ {
1660
+ if (stripos($this->_agent, 'Android') !== false) {
1661
+ $aresult = explode(' ', stristr($this->_agent, 'Android'));
1662
+ if (isset($aresult[1])) {
1663
+ $aversion = explode(' ', $aresult[1]);
1664
+ $this->setVersion($aversion[0]);
1665
+ } else {
1666
+ $this->setVersion(self::VERSION_UNKNOWN);
1667
+ }
1668
+ if (stripos($this->_agent, 'Mobile') !== false) {
1669
+ $this->setMobile(true);
1670
+ } else {
1671
+ $this->setTablet(true);
1672
+ }
1673
+ $this->setBrowser(self::BROWSER_ANDROID);
1674
+ return true;
1675
+ }
1676
+ return false;
1677
+ }
1678
+
1679
+ /**
1680
+ * Determine if the browser is Vivaldi
1681
+ * @return boolean True if the browser is Vivaldi otherwise false
1682
+ */
1683
+ protected function checkBrowserVivaldi()
1684
+ {
1685
+ if (stripos($this->_agent, 'Vivaldi') !== false) {
1686
+ $aresult = explode('/', stristr($this->_agent, 'Vivaldi'));
1687
+ if (isset($aresult[1])) {
1688
+ $aversion = explode(' ', $aresult[1]);
1689
+ $this->setVersion($aversion[0]);
1690
+ $this->setBrowser(self::BROWSER_VIVALDI);
1691
+ return true;
1692
+ }
1693
+ }
1694
+ return false;
1695
+ }
1696
+
1697
+ /**
1698
+ * Determine if the browser is Yandex
1699
+ * @return boolean True if the browser is Yandex otherwise false
1700
+ */
1701
+ protected function checkBrowserYandex()
1702
+ {
1703
+ if (stripos($this->_agent, 'YaBrowser') !== false) {
1704
+ $aresult = explode('/', stristr($this->_agent, 'YaBrowser'));
1705
+ if (isset($aresult[1])) {
1706
+ $aversion = explode(' ', $aresult[1]);
1707
+ $this->setVersion($aversion[0]);
1708
+ $this->setBrowser(self::BROWSER_YANDEX);
1709
+
1710
+ if (stripos($this->_agent, 'iPad') !== false) {
1711
+ $this->setTablet(true);
1712
+ } elseif (stripos($this->_agent, 'Mobile') !== false) {
1713
+ $this->setMobile(true);
1714
+ } elseif (stripos($this->_agent, 'Android') !== false) {
1715
+ $this->setTablet(true);
1716
+ }
1717
+
1718
+ return true;
1719
+ }
1720
+ }
1721
+
1722
+ return false;
1723
+ }
1724
+
1725
+ /**
1726
+ * Determine if the browser is a PlayStation
1727
+ * @return boolean True if the browser is PlayStation otherwise false
1728
+ */
1729
+ protected function checkBrowserPlayStation()
1730
+ {
1731
+ if (stripos($this->_agent, 'PlayStation ') !== false) {
1732
+ $aresult = explode(' ', stristr($this->_agent, 'PlayStation '));
1733
+ $this->setBrowser(self::BROWSER_PLAYSTATION);
1734
+ if (isset($aresult[0])) {
1735
+ $aversion = explode(')', $aresult[2]);
1736
+ $this->setVersion($aversion[0]);
1737
+ if (stripos($this->_agent, 'Portable)') !== false || stripos($this->_agent, 'Vita') !== false) {
1738
+ $this->setMobile(true);
1739
+ }
1740
+ return true;
1741
+ }
1742
+ }
1743
+ return false;
1744
+ }
1745
+
1746
+ /**
1747
+ * Determine if the browser is Wget or not (last updated 1.7)
1748
+ * @return boolean True if the browser is Wget otherwise false
1749
+ */
1750
+ protected function checkBrowserWget()
1751
+ {
1752
+ if (preg_match("!^Wget/([^ ]+)!i", $this->_agent, $aresult)) {
1753
+ $this->setVersion($aresult[1]);
1754
+ $this->setBrowser(self::BROWSER_WGET);
1755
+ return true;
1756
+ }
1757
+ return false;
1758
+ }
1759
+ /**
1760
+ * Determine if the browser is cURL or not (last updated 1.7)
1761
+ * @return boolean True if the browser is cURL otherwise false
1762
+ */
1763
+ protected function checkBrowserCurl()
1764
+ {
1765
+ if (strpos($this->_agent, 'curl') === 0) {
1766
+ $aresult = explode('/', stristr($this->_agent, 'curl'));
1767
+ if (isset($aresult[1])) {
1768
+ $aversion = explode(' ', $aresult[1]);
1769
+ $this->setVersion($aversion[0]);
1770
+ $this->setBrowser(self::BROWSER_CURL);
1771
+ return true;
1772
+ }
1773
+ }
1774
+ return false;
1775
+ }
1776
+
1777
+ /**
1778
+ * Determine the user's platform (last updated 2.0)
1779
+ */
1780
+ protected function checkPlatform()
1781
+ {
1782
+ if (stripos($this->_agent, 'windows') !== false) {
1783
+ $this->_platform = self::PLATFORM_WINDOWS;
1784
+ } else if (stripos($this->_agent, 'iPad') !== false) {
1785
+ $this->_platform = self::PLATFORM_IPAD;
1786
+ } else if (stripos($this->_agent, 'iPod') !== false) {
1787
+ $this->_platform = self::PLATFORM_IPOD;
1788
+ } else if (stripos($this->_agent, 'iPhone') !== false) {
1789
+ $this->_platform = self::PLATFORM_IPHONE;
1790
+ } elseif (stripos($this->_agent, 'mac') !== false) {
1791
+ $this->_platform = self::PLATFORM_APPLE;
1792
+ } elseif (stripos($this->_agent, 'android') !== false) {
1793
+ $this->_platform = self::PLATFORM_ANDROID;
1794
+ } elseif (stripos($this->_agent, 'Silk') !== false) {
1795
+ $this->_platform = self::PLATFORM_FIRE_OS;
1796
+ } elseif (stripos($this->_agent, 'linux') !== false && stripos($this->_agent, 'SMART-TV') !== false) {
1797
+ $this->_platform = self::PLATFORM_LINUX . '/' . self::PLATFORM_SMART_TV;
1798
+ } elseif (stripos($this->_agent, 'linux') !== false) {
1799
+ $this->_platform = self::PLATFORM_LINUX;
1800
+ } else if (stripos($this->_agent, 'Nokia') !== false) {
1801
+ $this->_platform = self::PLATFORM_NOKIA;
1802
+ } else if (stripos($this->_agent, 'BlackBerry') !== false) {
1803
+ $this->_platform = self::PLATFORM_BLACKBERRY;
1804
+ } elseif (stripos($this->_agent, 'FreeBSD') !== false) {
1805
+ $this->_platform = self::PLATFORM_FREEBSD;
1806
+ } elseif (stripos($this->_agent, 'OpenBSD') !== false) {
1807
+ $this->_platform = self::PLATFORM_OPENBSD;
1808
+ } elseif (stripos($this->_agent, 'NetBSD') !== false) {
1809
+ $this->_platform = self::PLATFORM_NETBSD;
1810
+ } elseif (stripos($this->_agent, 'OpenSolaris') !== false) {
1811
+ $this->_platform = self::PLATFORM_OPENSOLARIS;
1812
+ } elseif (stripos($this->_agent, 'SunOS') !== false) {
1813
+ $this->_platform = self::PLATFORM_SUNOS;
1814
+ } elseif (stripos($this->_agent, 'OS\/2') !== false) {
1815
+ $this->_platform = self::PLATFORM_OS2;
1816
+ } elseif (stripos($this->_agent, 'BeOS') !== false) {
1817
+ $this->_platform = self::PLATFORM_BEOS;
1818
+ } elseif (stripos($this->_agent, 'win') !== false) {
1819
+ $this->_platform = self::PLATFORM_WINDOWS;
1820
+ } elseif (stripos($this->_agent, 'Playstation') !== false) {
1821
+ $this->_platform = self::PLATFORM_PLAYSTATION;
1822
+ } elseif (stripos($this->_agent, 'Roku') !== false) {
1823
+ $this->_platform = self::PLATFORM_ROKU;
1824
+ } elseif (stripos($this->_agent, 'iOS') !== false) {
1825
+ $this->_platform = self::PLATFORM_IPHONE . '/' . self::PLATFORM_IPAD;
1826
+ } elseif (stripos($this->_agent, 'tvOS') !== false) {
1827
+ $this->_platform = self::PLATFORM_APPLE_TV;
1828
+ } elseif (stripos($this->_agent, 'curl') !== false) {
1829
+ $this->_platform = self::PLATFORM_TERMINAL;
1830
+ } elseif (stripos($this->_agent, 'CrOS') !== false) {
1831
+ $this->_platform = self::PLATFORM_CHROME_OS;
1832
+ } elseif (stripos($this->_agent, 'okhttp') !== false) {
1833
+ $this->_platform = self::PLATFORM_JAVA_ANDROID;
1834
+ } elseif (stripos($this->_agent, 'PostmanRuntime') !== false) {
1835
+ $this->_platform = self::PLATFORM_POSTMAN;
1836
+ } elseif (stripos($this->_agent, 'Iframely') !== false) {
1837
+ $this->_platform = self::PLATFORM_I_FRAME;
1838
+ }
1839
+ }
1840
+
1841
+ /**
1842
+ * Method to get email client.
1843
+ *
1844
+ * @return string $email_client Email client name.
1845
+ */
1846
+ public function get_email_client() {
1847
+
1848
+ if ( ! $this->_agent ) {
1849
+ return '';
1850
+ }
1851
+
1852
+ if ( preg_match( '# Thunderbird/([0-9a-z.]+)#i', $this->_agent, $hit ) ) {
1853
+ $email_client = 'Thunderbird';
1854
+ } else if ( preg_match( '#Airmail ([0-9a-z.]+)#i', $this->_agent, $hit ) ) {
1855
+ $email_client = 'Airmail';
1856
+ } else if ( preg_match( '# ANDROIDGMAILAPP#i', $this->_agent, $hit ) ) {
1857
+ $email_client = 'Gmail App (Android)';
1858
+ } else if ( preg_match( '# GoogleImageProxy#i', $this->_agent, $hit ) ) {
1859
+ $email_client = 'Gmail';
1860
+ } else if ( preg_match( '#(iPod|iPod touch).*OS ([0-9_]+)#i', $this->_agent, $hit ) ) {
1861
+ $email_client = 'iPod Touch';
1862
+ } else if ( preg_match( '#(iPhone|iPad).*OS ([0-9_]+)#i', $this->_agent, $hit ) ) {
1863
+ $email_client = $hit[1];
1864
+ } else if ( preg_match( '#(Android|BlackBerry|Windows Phone OS) ([0-9.]+)#i', $this->_agent, $hit ) ) {
1865
+ $email_client = $hit[1];
1866
+ } else if ( preg_match( '#(Kindle Fire|Kindle|IEMobile)/([0-9a-z.]+)#i', $this->_agent, $hit ) ) {
1867
+ $email_client = $hit[1];
1868
+ } else if ( preg_match( '#(Sparrow|Postbox|Eudora|Lotus-Notes|Shredder|PocoMail|Barca|BarcaPro)/([0-9a-z.]+)#i', $this->_agent, $hit ) ) {
1869
+ $email_client = str_replace( '-', ' ', $hit[1] );
1870
+ } else if ( preg_match( '#Outlook-Express/7\.0 \(MSIE ([0-9a-z.]+)#i', $this->_agent, $hit ) ) {
1871
+ $email_client = 'Windows Live Mail';
1872
+ } else if ( preg_match( '#Outlook-Express/6\.0#i', $this->_agent, $hit ) ) {
1873
+ $email_client = 'Outlook Express';
1874
+ } else if ( preg_match( '#(MSAppHost)/([0-9.]+)#i', $this->_agent, $hit ) ) {
1875
+ $email_client = 'Windows Live Mail';
1876
+ } else if ( preg_match( '# (Microsoft Outlook|MSOffice) ([0-9]+)#i', $this->_agent, $hit ) ) {
1877
+ $email_client = 'Microsoft Outlook';
1878
+ } else if ( preg_match( '#(Chrome|Safari|Firefox|Opera)/([0-9a-z.]+)#i', $this->_agent, $hit ) ) {
1879
+ $email_client = 'Web Client (' . $hit[1] . ')';
1880
+ } else if ( preg_match( '# Trident/.* rv:([0-9a-z.]+)#i', $this->_agent, $hit ) ) {
1881
+ $email_client = 'Web Client (Internet Explorer ' . (int) $hit[1] . ')';
1882
+ } else if ( preg_match( '#MSIE ([0-9.]+).* Trident/#i', $this->_agent, $hit ) ) {
1883
+ $version = (int) $hit[1];
1884
+ if ( $version <= 7 ) {
1885
+ //most likly Outlook 2000-2003
1886
+ $email_client = 'Microsoft Outlook';
1887
+ } else {
1888
+ $email_client = 'Web Client (Internet Explorer ' . $version . ')';
1889
+ }
1890
+ } else if ( preg_match( '# AppleWebKit/([0-9a-z.]+)#i', $this->_agent, $hit ) ) {
1891
+ if ( preg_match( '#Mac OS X 10_(\d+)#i', $this->_agent, $versionhit ) ) {
1892
+ $email_client = 'Apple Mail';
1893
+ } else {
1894
+ $email_client = 'Web Client (WebKit based)';
1895
+ }
1896
+ } else if ( preg_match( '#Mozilla/([0-9a-z.]+)#i', $this->_agent, $hit ) ) {
1897
+ $email_client = 'Web Client (Mozilla based)';
1898
+ } else {
1899
+ $email_client = 'Web Client ('.$this->_agent.')';
1900
+ }
1901
+
1902
+ return $email_client;
1903
+ }
1904
+ }
lite/includes/classes/class-es-geolocation.php ADDED
@@ -0,0 +1,391 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <?php
2
+ /**
3
+ * Geolocation class
4
+ *
5
+ * Handles geolocation and updating the geolocation database.
6
+ *
7
+ * @version 4.5.0
8
+ */
9
+
10
+ defined( 'ABSPATH' ) || exit;
11
+
12
+ /**
13
+ * ES_Geolocation Class.
14
+ */
15
+ class ES_Geolocation {
16
+
17
+ /**
18
+ * API endpoints for geolocating an IP address
19
+ *
20
+ * @var array
21
+ */
22
+ private static $geoip_apis = array(
23
+ 'icegram_api_url' => 'http://api.icegram.com/geo/%s',
24
+ 'ipinfo.io' => 'https://ipinfo.io/%s/json',
25
+ 'ip-api.com' => 'http://ip-api.com/json/%s',
26
+ );
27
+
28
+ /**
29
+ * Geolocate an IP address.
30
+ *
31
+ * @param string $ip_address IP Address.
32
+ *
33
+ * @return array
34
+ */
35
+ public static function geolocate_ip( $ip_address = '' ) {
36
+
37
+ /**
38
+ * Get geolocation filter.
39
+ *
40
+ * @param string $ip_address IP Address.
41
+ *
42
+ * @since 4.5.0
43
+ */
44
+ $geolocation = apply_filters(
45
+ 'ig_es_get_geolocation',
46
+ array(),
47
+ $ip_address
48
+ );
49
+
50
+ if ( ! empty( $geolocation ) ) {
51
+ return $geolocation;
52
+ }
53
+
54
+ if ( ! is_array( $geolocation ) ) {
55
+ $geolocation = array();
56
+ }
57
+
58
+ $geolocation = self::geolocate_via_api( $ip_address );
59
+
60
+ return $geolocation;
61
+ }
62
+
63
+ /**
64
+ * Use APIs to Geolocate the user.
65
+ *
66
+ * Geolocation APIs can be added through the use of the ig_es_geolocation_geoip_apis filter.
67
+ * Provide a name=>value pair for service-slug=>endpoint.
68
+ *
69
+ * If APIs are defined, one will be chosen at random to fulfil the request. After completing, the result
70
+ * will be cached in a transient.
71
+ *
72
+ * @param string $ip_address IP address.
73
+ *
74
+ * @return array
75
+ */
76
+ private static function geolocate_via_api( $ip_address ) {
77
+ $geo_ip_data = get_transient( 'ig_es_geoip_' . $ip_address );
78
+
79
+ if ( empty( $geo_ip_data ) ) {
80
+ $geo_ip_data = array();
81
+ $geoip_services = apply_filters( 'ig_es_geolocation_geoip_apis', self::$geoip_apis );
82
+
83
+ if ( empty( $geoip_services ) ) {
84
+ return $geo_ip_data;
85
+ }
86
+
87
+ $geoip_services_keys = array_keys( $geoip_services );
88
+
89
+ shuffle( $geoip_services_keys );
90
+
91
+ foreach ( $geoip_services_keys as $service_name ) {
92
+ $service_endpoint = $geoip_services[ $service_name ];
93
+ $response = wp_safe_remote_get( sprintf( $service_endpoint, $ip_address ), array( 'timeout' => 2 ) );
94
+
95
+ if ( ! is_wp_error( $response ) && $response['body'] ) {
96
+ switch ( $service_name ) {
97
+ case 'ipinfo.io':
98
+ $data = json_decode( $response['body'] );
99
+ $country_code = isset( $data->country ) ? $data->country : '';
100
+ break;
101
+ case 'ip-api.com':
102
+ $data = json_decode( $response['body'] );
103
+ $country_code = isset( $data->countryCode ) ? $data->countryCode : ''; // @codingStandardsIgnoreLine
104
+ break;
105
+ case 'icegram_api_url':
106
+ $data = json_decode( $response['body'] );
107
+ $country_code = isset( $data->country_code ) ? $data->country_code : ''; // @codingStandardsIgnoreLine
108
+ break;
109
+ default:
110
+ $country_code = apply_filters( 'ig_es_geolocation_geoip_response_' . $service_name, '', $response['body'] );
111
+ break;
112
+ }
113
+
114
+ $country_code = sanitize_text_field( strtoupper( $country_code ) );
115
+
116
+ if ( $country_code ) {
117
+ $geo_ip_data['country_code'] = $country_code;
118
+ break;
119
+ }
120
+ }
121
+ }
122
+
123
+ if ( ! empty( $geo_ip_data ) ) {
124
+ set_transient( 'ig_es_geoip_' . $ip_address, $geo_ip_data, WEEK_IN_SECONDS );
125
+ }
126
+ }
127
+
128
+ return $geo_ip_data;
129
+ }
130
+
131
+ /**
132
+ * Method to get country name based on ISO code.
133
+ *
134
+ * @since 4.5.0
135
+ */
136
+ public static function get_countries_iso_code_name_map( $country_code = '' ) {
137
+ $countries_data = [
138
+ 'AF' => 'Afghanistan',
139
+ 'AX' => 'Aland Islands',
140
+ 'AL' => 'Albania',
141
+ 'DZ' => 'Algeria',
142
+ 'AS' => 'American Samoa',
143
+ 'AD' => 'Andorra',
144
+ 'AO' => 'Angola',
145
+ 'AI' => 'Anguilla',
146
+ 'AQ' => 'Antarctica',
147
+ 'AG' => 'Antigua And Barbuda',
148
+ 'AR' => 'Argentina',
149
+ 'AM' => 'Armenia',
150
+ 'AW' => 'Aruba',
151
+ 'AU' => 'Australia',
152
+ 'AT' => 'Austria',
153
+ 'AZ' => 'Azerbaijan',
154
+ 'BS' => 'Bahamas',
155
+ 'BH' => 'Bahrain',
156
+ 'BD' => 'Bangladesh',
157
+ 'BB' => 'Barbados',
158
+ 'BY' => 'Belarus',
159
+ 'BE' => 'Belgium',
160
+ 'BZ' => 'Belize',
161
+ 'BJ' => 'Benin',
162
+ 'BM' => 'Bermuda',
163
+ 'BT' => 'Bhutan',
164
+ 'BO' => 'Bolivia',
165
+ 'BA' => 'Bosnia And Herzegovina',
166
+ 'BW' => 'Botswana',
167
+ 'BV' => 'Bouvet Island',
168
+ 'BR' => 'Brazil',
169
+ 'IO' => 'British Indian Ocean Territory',
170
+ 'BN' => 'Brunei Darussalam',
171
+ 'BG' => 'Bulgaria',
172
+ 'BF' => 'Burkina Faso',
173
+ 'BI' => 'Burundi',
174
+ 'KH' => 'Cambodia',
175
+ 'CM' => 'Cameroon',
176
+ 'CA' => 'Canada',
177
+ 'CV' => 'Cape Verde',
178
+ 'KY' => 'Cayman Islands',
179
+ 'CF' => 'Central African Republic',
180
+ 'TD' => 'Chad',
181
+ 'CL' => 'Chile',
182
+ 'CN' => 'China',
183
+ 'CX' => 'Christmas Island',
184
+ 'CC' => 'Cocos Island',
185
+ 'CO' => 'Colombia',
186
+ 'KM' => 'Comoros',
187
+ 'CG' => 'Congo',
188
+ 'CD' => 'Congo, Democratic Republic',
189
+ 'CK' => 'Cook Islands',
190
+ 'CR' => 'Costa Rica',
191
+ 'CI' => 'Cote D\'Ivoire',
192
+ 'HR' => 'Croatia',
193
+ 'CU' => 'Cuba',
194
+ 'CY' => 'Cyprus',
195
+ 'CZ' => 'Czech Republic',
196
+ 'DK' => 'Denmark',
197
+ 'DJ' => 'Djibouti',
198
+ 'DM' => 'Dominica',
199
+ 'DO' => 'Dominican Republic',
200
+ 'EC' => 'Ecuador',
201
+ 'EG' => 'Egypt',
202
+ 'SV' => 'El Salvador',
203
+ 'GQ' => 'Equatorial Guinea',
204
+ 'ER' => 'Eritrea',
205
+ 'EE' => 'Estonia',
206
+ 'ET' => 'Ethiopia',
207
+ 'FK' => 'Falkland Islands',
208
+ 'FO' => 'Faroe Islands',
209
+ 'FJ' => 'Fiji',
210
+ 'FI' => 'Finland',
211
+ 'FR' => 'France',
212
+ 'GF' => 'French Guiana',
213
+ 'PF' => 'French Polynesia',
214
+ 'TF' => 'French Southern Territories',
215
+ 'GA' => 'Gabon',
216
+ 'GM' => 'Gambia',
217
+ 'GE' => 'Georgia',
218
+ 'DE' => 'Germany',
219
+ 'GH' => 'Ghana',
220
+ 'GI' => 'Gibraltar',
221
+ 'GR' => 'Greece',
222
+ 'GL' => 'Greenland',
223
+ 'GD' => 'Grenada',
224
+ 'GP' => 'Guadeloupe',
225
+ 'GU' => 'Guam',
226
+ 'GT' => 'Guatemala',
227
+ 'GG' => 'Guernsey',
228
+ 'GN' => 'Guinea',
229
+ 'GW' => 'Guinea-Bissau',
230
+ 'GY' => 'Guyana',
231
+ 'HT' => 'Haiti',
232
+ 'HM' => 'Heard Island & Mcdonald Islands',
233
+ 'VA' => 'Holy See (Vatican City State)',
234
+ 'HN' => 'Honduras',
235
+ 'HK' => 'Hong Kong',
236
+ 'HU' => 'Hungary',
237
+ 'IS' => 'Iceland',
238
+ 'IN' => 'India',
239
+ 'ID' => 'Indonesia',
240
+ 'IR' => 'Iran, Islamic Republic Of',
241
+ 'IQ' => 'Iraq',
242
+ 'IE' => 'Ireland',
243
+ 'IM' => 'Isle Of Man',
244
+ 'IL' => 'Israel',
245
+ 'IT' => 'Italy',
246
+ 'JM' => 'Jamaica',
247
+ 'JP' => 'Japan',
248
+ 'JE' => 'Jersey',
249
+ 'JO' => 'Jordan',
250
+ 'KZ' => 'Kazakhstan',
251
+ 'KE' => 'Kenya',
252
+ 'KI' => 'Kiribati',
253
+ 'KR' => 'Korea',
254
+ 'KW' => 'Kuwait',
255
+ 'KG' => 'Kyrgyzstan',
256
+ 'LA' => 'Lao People\'s Democratic Republic',
257
+ 'LV' => 'Latvia',
258
+ 'LB' => 'Lebanon',
259
+ 'LS' => 'Lesotho',
260
+ 'LR' => 'Liberia',
261
+ 'LY' => 'Libyan Arab Jamahiriya',
262
+ 'LI' => 'Liechtenstein',
263
+ 'LT' => 'Lithuania',
264
+ 'LU' => 'Luxembourg',
265
+ 'MO' => 'Macao',
266
+ 'MK' => 'Macedonia',
267
+ 'MG' => 'Madagascar',
268
+ 'MW' => 'Malawi',
269
+ 'MY' => 'Malaysia',
270
+ 'MV' => 'Maldives',
271
+ 'ML' => 'Mali',
272
+ 'MT' => 'Malta',
273
+ 'MH' => 'Marshall Islands',
274
+ 'MQ' => 'Martinique',
275
+ 'MR' => 'Mauritania',
276
+ 'MU' => 'Mauritius',
277
+ 'YT' => 'Mayotte',
278
+ 'MX' => 'Mexico',
279
+ 'FM' => 'Micronesia',
280
+ 'MD' => 'Moldova',
281
+ 'MC' => 'Monaco',
282
+ 'MN' => 'Mongolia',
283
+ 'ME' => 'Montenegro',
284
+ 'MS' => 'Montserrat',
285
+ 'MA' => 'Morocco',
286
+ 'MZ' => 'Mozambique',
287
+ 'MM' => 'Myanmar',
288
+ 'NA' => 'Namibia',
289
+ 'NR' => 'Nauru',
290
+ 'NP' => 'Nepal',
291
+ 'NL' => 'Netherlands',
292
+ 'AN' => 'Netherlands',
293
+ 'NC' => 'New Caledonia',
294
+ 'NZ' => 'New Zealand',
295
+ 'NI' => 'Nicaragua',
296
+ 'NE' => 'Niger',
297
+ 'NG' => 'Nigeria',
298
+ 'NU' => 'Niue',
299
+ 'NF' => 'Norfolk Island',
300
+ 'MP' => 'Northern Mariana Islands',
301
+ 'NO' => 'Norway',
302
+ 'OM' => 'Oman',
303
+ 'PK' => 'Pakistan',
304
+ 'PW' => 'Palau',
305
+ 'PS' => 'Palestine',
306
+ 'PA' => 'Panama',
307
+ 'PG' => 'Papua New Guinea',
308
+ 'PY' => 'Paraguay',
309
+ 'PE' => 'Peru',
310
+ 'PH' => 'Philippines',
311
+ 'PN' => 'Pitcairn',
312
+ 'PL' => 'Poland',
313
+ 'PT' => 'Portugal',
314
+ 'PR' => 'Puerto Rico',
315
+ 'QA' => 'Qatar',
316
+ 'RE' => 'Reunion',
317
+ 'RO' => 'Romania',
318
+ 'RU' => 'Russia',
319
+ 'RW' => 'Rwanda',
320
+ 'BL' => 'Saint Barthelemy',
321
+ 'SH' => 'Saint Helena',
322
+ 'KN' => 'Saint Kitts And Nevis',
323
+ 'LC' => 'Saint Lucia',
324
+ 'MF' => 'Saint Martin',
325
+ 'PM' => 'Saint Pierre And Miquelon',
326
+ 'VC' => 'Saint Vincent And Grenadines',
327
+ 'WS' => 'Samoa',
328
+ 'SM' => 'San Marino',
329
+ 'ST' => 'Sao Tome And Principe',
330
+ 'SA' => 'Saudi Arabia',
331
+ 'SN' => 'Senegal',
332
+ 'RS' => 'Serbia',
333
+ 'SC' => 'Seychelles',
334
+ 'SL' => 'Sierra Leone',
335
+ 'SG' => 'Singapore',
336
+ 'SK' => 'Slovakia',
337
+ 'SI' => 'Slovenia',
338
+ 'SB' => 'Solomon Islands',
339
+ 'SO' => 'Somalia',
340
+ 'ZA' => 'South Africa',
341
+ 'GS' => 'South Georgia And Sandwich Isl.',
342
+ 'ES' => 'Spain',
343
+ 'LK' => 'Sri Lanka',
344
+ 'SD' => 'Sudan',
345
+ 'SR' => 'Suriname',
346
+ 'SJ' => 'Svalbard And Jan Mayen',
347
+ 'SZ' => 'Swaziland',
348
+ 'SE' => 'Sweden',
349
+ 'CH' => 'Switzerland',
350
+ 'SY' => 'Syrian Arab Republic',
351
+ 'TW' => 'Taiwan',
352
+ 'TJ' => 'Tajikistan',
353
+ 'TZ' => 'Tanzania',
354
+ 'TH' => 'Thailand',
355
+ 'TL' => 'Timor-Leste',
356
+ 'TG' => 'Togo',
357
+ 'TK' => 'Tokelau',
358
+ 'TO' => 'Tonga',
359
+ 'TT' => 'Trinidad And Tobago',
360
+ 'TN' => 'Tunisia',
361
+ 'TR' => 'Turkey',
362
+ 'TM' => 'Turkmenistan',
363
+ 'TC' => 'Turks And Caicos Islands',
364
+ 'TV' => 'Tuvalu',
365
+ 'UG' => 'Uganda',
366
+ 'UA' => 'Ukraine',
367
+ 'AE' => 'United Arab Emirates',
368
+ 'GB' => 'United Kingdom',
369
+ 'US' => 'United States',
370
+ 'UM' => 'United States Outlying Islands',
371
+ 'UY' => 'Uruguay',
372
+ 'UZ' => 'Uzbekistan',
373
+ 'VU' => 'Vanuatu',
374
+ 'VE' => 'Venezuela',
375
+ 'VN' => 'Viet Nam',
376
+ 'VG' => 'Virgin Islands, British',
377
+ 'VI' => 'Virgin Islands, U.S.',
378
+ 'WF' => 'Wallis And Futuna',
379
+ 'EH' => 'Western Sahara',
380
+ 'YE' => 'Yemen',
381
+ 'ZM' => 'Zambia',
382
+ 'ZW' => 'Zimbabwe',
383
+ ];
384
+
385
+ if ( isset( $countries_data[ $country_code ] ) ) {
386
+ return $countries_data[ $country_code ];
387
+ } else {
388
+ return '';
389
+ }
390
+ }
391
+ }
lite/includes/classes/class-es-mailer.php CHANGED
@@ -723,7 +723,9 @@ if ( ! class_exists( 'ES_Mailer' ) ) {
723
  $unsubscribe_message = $this->get_unsubscribe_text();
724
 
725
  // Can Track Email Open? Add pixel.
726
- $email_tracking_image = $this->get_tracking_pixel();
 
 
727
 
728
  $message->body = $message->body . $unsubscribe_message . $email_tracking_image;
729
 
723
  $unsubscribe_message = $this->get_unsubscribe_text();
724
 
725
  // Can Track Email Open? Add pixel.
726
+ $email_tracking_image = $this->get_tracking_pixel();
727
+
728
+ $email_tracking_user_device = apply_filters( 'ig_es_tracking_user_device', '' );
729
 
730
  $message->body = $message->body . $unsubscribe_message . $email_tracking_image;
731
 
lite/includes/classes/class-es-reports-table.php CHANGED
@@ -5,6 +5,7 @@ if ( ! defined( 'ABSPATH' ) ) {
5
  exit;
6
  }
7
 
 
8
  if ( ! class_exists( 'WP_List_Table' ) ) {
9
  require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
10
  }
@@ -33,8 +34,8 @@ class ES_Reports_Table extends WP_List_Table {
33
  } else {
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 ) {
@@ -46,24 +47,24 @@ class ES_Reports_Table extends WP_List_Table {
46
  }
47
  ?>
48
 
49
- <span class="ig-es-process-queue"><?php echo $content; ?></span>
50
 
51
 
52
- <div id="poststuff" class="es-items-lists">
53
- <div id="post-body" class="metabox-holder column-1">
54
- <div id="post-body-content">
55
- <div class="meta-box-sortables ui-sortable">
56
- <form method="post">
57
  <?php
58
  $this->prepare_items();
59
  $this->display(); ?>
60
- </form>
61
- </div>
62
- </div>
63
- </div>
64
- <br class="clear">
65
- </div>
66
- </div>
67
 
68
  <?php
69
  }
@@ -85,50 +86,66 @@ class ES_Reports_Table extends WP_List_Table {
85
  public function prepare_header_footer_row() {
86
 
87
  ?>
88
-
89
- <tr>
90
- <th width="6%" scope="col"><?php _e( 'Sr No', 'email-subscribers' ); ?></th>
91
- <th scope="col"><?php _e( 'Email', 'email-subscribers' ); ?></th>
92
- <th scope="col"><?php _e( 'Status', 'email-subscribers' ); ?></th>
93
- <th scope="col"><?php _e( 'Sent Date', 'email-subscribers' ); ?></th>
94
- <th scope="col"><?php _e( 'Viewed Status', 'email-subscribers' ); ?></th>
95
- <th scope="col"><?php _e( 'Viewed Date', 'email-subscribers' ); ?></th>
96
- </tr>
97
 
98
  <?php
99
  }
100
 
101
  public function view_list( $id ) {
102
- global $wpdb;
103
-
104
  $emails = ES_DB_Sending_Queue::get_emails_by_hash( $id );
105
  $email_viewed_count = ES_DB_Sending_Queue::get_viewed_count_by_hash( $id );
106
  $total_email_sent = ES_DB_Sending_Queue::get_total_email_count_by_hash( $id );
107
 
 
 
 
 
 
 
108
  ?>
109
- <div class="wrap">
110
- <div class="tool-box">
111
- <div class="tablenav">
112
- <div class="alignleft" style="padding-bottom:10px;"><?php echo 'Viewed ' . $email_viewed_count . '/' . $total_email_sent; ?></div>
113
- </div>
114
- <form name="frm_es_display" method="post">
115
- <table width="100%" class="widefat" id="straymanage">
116
- <thead>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
117
  <?php echo $this->prepare_header_footer_row(); ?>
118
- </thead>
119
- <tbody>
120
  <?php echo $this->prepare_body( $emails ); ?>
121
- </tbody>
122
- <tfoot>
123
  <?php echo $this->prepare_header_footer_row(); ?>
124
- </tfoot>
125
- </table>
126
- </form>
127
- </div>
128
- </div>
129
-
130
  <?php
131
-
132
  //$wpdb->update( EMAIL_SUBSCRIBERS_STATS_TABLE, array( 'viewdate' => date( 'Y-m-d H:i:s' ) ), array( 'viewdate' => $id ) );
133
 
134
  }
@@ -151,26 +168,26 @@ class ES_Reports_Table extends WP_List_Table {
151
 
152
  ?>
153
 
154
- <tr class="<?php echo $class; ?>">
155
- <td align="left"><?php echo $i; ?></td>
156
- <td><?php echo $email_id; ?></td>
157
- <td><span style="color:#03a025;font-weight:bold;"><?php echo $status; ?></span></td>
158
- <td><?php echo ig_es_format_date_time( $sent_at ); ?></td>
159
- <td><span><?php echo ( ! empty( $opened ) && $opened == 1 ) ? _e( 'Viewed', 'email-subscribers' ) : '<i title="' . __( 'Not yet viewed', 'email-subscribers' ) . '" class="dashicons dashicons-es dashicons-minus">' ?></span></td>
160
- <td><?php echo ig_es_format_date_time( $opened_at ); ?></td>
161
- </tr>
162
-
163
- <?php
164
- $i ++;
165
- }
166
 
 
 
167
  }
168
 
 
 
169
 
170
- /** Text displayed when no list data is available */
171
- public function no_items() {
172
- _e( 'No Reports avaliable.', 'email-subscribers' );
173
- }
174
 
175
  /**
176
  * Render a column when no column specific method exist.
@@ -186,41 +203,41 @@ class ES_Reports_Table extends WP_List_Table {
186
  switch ( $column_name ) {
187
  case 'start_at':
188
  case 'finish_at':
189
- return ig_es_format_date_time( $item[ $column_name ] );
190
  case 'type':
191
- if ( empty( $item['campaign_id'] ) ) {
192
- $type = __( 'Post Notification', 'email-subscribers' );
193
- } else {
194
- $type = ES()->campaigns_db->get_campaign_type_by_id( $item['campaign_id'] );
195
- $type = strtolower( $type );
196
- $type = ( 'newsletter' === $type ) ? __( 'Broadcast', 'email-subscribers' ) : $type;
197
- }
198
 
199
- $type = ucwords( str_replace( '_', ' ', $type ) );
200
 
201
- return $type;
202
  case 'subject':
203
  // case 'type':
204
  // return ucwords($item[ $column_name ]);
205
  case 'count':
206
- return $item[ $column_name ];
207
  default:
208
  return print_r( $item, true ); //Show the whole array for troubleshooting purposes
209
- }
210
  }
 
211
 
212
- function column_status( $item ) {
213
- if ( $item['status'] == 'Sent' ) {
214
- return __( 'Completed', 'email-subscribers' );
215
- } else {
216
 
217
- $actions = array(
218
- 'send_now' => $this->prepare_send_now_url( $item )
219
- );
220
 
221
- return $item['status'] . $this->row_actions( $actions, true );
222
- }
223
  }
 
224
 
225
  /**
226
  * Render the bulk edit checkbox
@@ -383,18 +400,18 @@ class ES_Reports_Table extends WP_List_Table {
383
  $where_columns = array();
384
  $where_args = array();
385
 
386
- if( ! empty( $campaign_id ) && is_numeric( $campaign_id ) ) {
387
  $where_columns[] = "campaign_id = %d";
388
- $where_args[] = $campaign_id;
389
  }
390
 
391
  $where_query = '';
392
- if( ! empty( $where_columns ) ) {
393
  $where_query = implode( " AND ", $where_columns );
394
  $where_query = $wpdb->prepare( $where_query, $where_args );
395
  }
396
 
397
- if( ! empty( $where_query ) ) {
398
  $sql .= ' WHERE ' . $where_query;
399
  }
400
 
@@ -495,15 +512,15 @@ class ES_Reports_Table extends WP_List_Table {
495
  public function preview_email( $report_id ) {
496
  ob_start();
497
  ?>
498
- <div class="wrap">
499
- <h2 style="margin-bottom:1em;">
500
  <?php echo __( 'Preview Email', 'email-subscribers' ); ?>
501
- </h2>
502
- <p>
503
  <?php echo __( 'This is how the email you sent may look. <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.', 'email-subscribers' ); ?>
504
- </p>
505
- <div class="tool-box">
506
- <div style="padding:15px;background-color:#FFFFFF;">
507
  <?php
508
  $preview = array();
509
  $preview = ES_DB_Mailing_Queue::get_email_by_id( $report_id );
@@ -519,9 +536,9 @@ class ES_Reports_Table extends WP_List_Table {
519
 
520
  echo stripslashes( $preview['body'] );
521
  ?>
522
- </div>
523
- </div>
524
- </div>
525
  <?php
526
  $html = ob_get_clean();
527
 
5
  exit;
6
  }
7
 
8
+
9
  if ( ! class_exists( 'WP_List_Table' ) ) {
10
  require_once( ABSPATH . 'wp-admin/includes/class-wp-list-table.php' );
11
  }
34
  } else {
35
  ?>
36
 
37
+ <div class="wrap">
38
+ <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>
39
  <?php
40
  $emails_to_be_sent = ES_DB_Sending_Queue::get_total_emails_to_be_sent();
41
  if ( $emails_to_be_sent > 0 ) {
47
  }
48
  ?>
49
 
50
+ <span class="ig-es-process-queue"><?php echo $content; ?></span>
51
 
52
 
53
+ <div id="poststuff" class="es-items-lists">
54
+ <div id="post-body" class="metabox-holder column-1">
55
+ <div id="post-body-content">
56
+ <div class="meta-box-sortables ui-sortable">
57
+ <form method="post">
58
  <?php
59
  $this->prepare_items();
60
  $this->display(); ?>
61
+ </form>
62
+ </div>
63
+ </div>
64
+ </div>
65
+ <br class="clear">
66
+ </div>
67
+ </div>
68
 
69
  <?php
70
  }
86
  public function prepare_header_footer_row() {
87
 
88
  ?>
89
+ <tr>
90
+ <th width="8%" class=" py-3 pl-4 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php _e( 'Sr No', 'email-subscribers' ); ?></th>
91
+ <th width="24%" class=" py-3 pl-4 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php _e( 'Email', 'email-subscribers' ); ?></th>
92
+ <th width="12%" class=" py-3 pl-6 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php _e( 'Status', 'email-subscribers' ); ?></th>
93
+ <th width="22%" class="py-3 pl-2 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php _e( 'Sent Date', 'email-subscribers' ); ?></th>
94
+ <th width="17%" class="py-3 pl-6 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php _e( 'Viewed Status', 'email-subscribers' ); ?></th>
95
+ <th width="22%" class=" py-3 pl-6 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php _e( 'Viewed Date', 'email-subscribers' ); ?></th>
96
+ </tr>
 
97
 
98
  <?php
99
  }
100
 
101
  public function view_list( $id ) {
 
 
102
  $emails = ES_DB_Sending_Queue::get_emails_by_hash( $id );
103
  $email_viewed_count = ES_DB_Sending_Queue::get_viewed_count_by_hash( $id );
104
  $total_email_sent = ES_DB_Sending_Queue::get_total_email_count_by_hash( $id );
105
 
106
+ $insight = ig_es_get_request_data( 'insight', '' );
107
+ $_wpnonce = ig_es_get_request_data( '_wpnonce', '' );
108
+
109
+ if ( ES()->is_pro() || $insight ) {
110
+ do_action( 'ig_es_view_report_data', $id, $emails );
111
+ }
112
  ?>
113
+ <div class="wrap">
114
+ <div class="mt-6 mb-2 max-w-7xl">
115
+ <div class="pt-3">
116
+ <span class="text-left text-lg font-medium leading-7 tracking-wide text-gray-600"><?php _e( 'View Activity ', 'email-subscribers' ); ?></span>
117
+
118
+ <?php if ( ! ES()->is_pro() ) { ?>
119
+ <a href="?page=es_reports&action=view&list=<?php echo $id; ?>&_wpnonce=<?php echo $_wpnonce; ?>&insight=true" class="float-right ig-es-title-button px-2 py-2 mx-2 ig-es-imp-button cursor-pointer"><?php _e( 'Campaign Analytics', 'email-subscribers' ); ?></a>
120
+ <?php } ?>
121
+ </div>
122
+ </div>
123
+
124
+ <div class="mt-2 mb-2 block">
125
+ <span class="pt-3 pb-4 leading-5 tracking-wide text-gray-600"><?php echo 'Viewed ' . $email_viewed_count . '/' . $total_email_sent; ?>
126
+ </span>
127
+ </div>
128
+
129
+ <div class="mb-2 max-w-7xl flex">
130
+ <div class="flex w-full bg-white shadow rounded-md break-all">
131
+
132
+ <form name="frm_es_display" method="post">
133
+ <table class="w-full table-fixed">
134
+ <thead>
135
  <?php echo $this->prepare_header_footer_row(); ?>
136
+ </thead>
137
+ <tbody>
138
  <?php echo $this->prepare_body( $emails ); ?>
139
+ </tbody>
140
+ <tfoot>
141
  <?php echo $this->prepare_header_footer_row(); ?>
142
+ </tfoot>
143
+ </table>
144
+ </form>
145
+ </div>
146
+ </div>
147
+ </div>
148
  <?php
 
149
  //$wpdb->update( EMAIL_SUBSCRIBERS_STATS_TABLE, array( 'viewdate' => date( 'Y-m-d H:i:s' ) ), array( 'viewdate' => $id ) );
150
 
151
  }
168
 
169
  ?>
170
 
171
+ <tr>
172
+ <td class="pl-6 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo $i; ?></td>
173
+ <td class="pl-4 py-2 border-b border-gray-200 text-sm leading-5 text-gray-600"><?php echo $email_id; ?></td>
174
+ <td class="pl-6 pr-2 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><span style="color:#03a025;font-weight:bold;"><?php echo $status; ?></span></td>
175
+ <td class="pl-2 pr-2 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo ig_es_format_date_time( $sent_at ); ?></td>
176
+ <td class="pl-6 pr-2 py-2 border-b border-gray-200 text-sm leading-5 text-gray-600"><span><?php echo ( ! empty( $opened ) && $opened == 1 ) ? _e( 'Viewed', 'email-subscribers' ) : '<i title="' . __( 'Not yet viewed', 'email-subscribers' ) . '" class="dashicons dashicons-es dashicons-minus">' ?></span></td>
177
+ <td class="pl-6 pr-1 py-2 border-b border-gray-200 text-sm leading-5 text-gray-500"><?php echo ig_es_format_date_time( $opened_at ); ?></td>
178
+ </tr>
 
 
 
 
179
 
180
+ <?php
181
+ $i ++;
182
  }
183
 
184
+ }
185
+
186
 
187
+ /** Text displayed when no list data is available */
188
+ public function no_items() {
189
+ _e( 'No Reports avaliable.', 'email-subscribers' );
190
+ }
191
 
192
  /**
193
  * Render a column when no column specific method exist.
203
  switch ( $column_name ) {
204
  case 'start_at':
205
  case 'finish_at':
206
+ return ig_es_format_date_time( $item[ $column_name ] );
207
  case 'type':
208
+ if ( empty( $item['campaign_id'] ) ) {
209
+ $type = __( 'Post Notification', 'email-subscribers' );
210
+ } else {
211
+ $type = ES()->campaigns_db->get_campaign_type_by_id( $item['campaign_id'] );
212
+ $type = strtolower( $type );
213
+ $type = ( 'newsletter' === $type ) ? __( 'Broadcast', 'email-subscribers' ) : $type;
214
+ }
215
 
216
+ $type = ucwords( str_replace( '_', ' ', $type ) );
217
 
218
+ return $type;
219
  case 'subject':
220
  // case 'type':
221
  // return ucwords($item[ $column_name ]);
222
  case 'count':
223
+ return $item[ $column_name ];
224
  default:
225
  return print_r( $item, true ); //Show the whole array for troubleshooting purposes
 
226
  }
227
+ }
228
 
229
+ function column_status( $item ) {
230
+ if ( $item['status'] == 'Sent' ) {
231
+ return __( 'Completed', 'email-subscribers' );
232
+ } else {
233
 
234
+ $actions = array(
235
+ 'send_now' => $this->prepare_send_now_url( $item )
236
+ );
237
 
238
+ return $item['status'] . $this->row_actions( $actions, true );
 
239
  }
240
+ }
241
 
242
  /**
243
  * Render the bulk edit checkbox
400
  $where_columns = array();
401
  $where_args = array();
402
 
403
+ if ( ! empty( $campaign_id ) && is_numeric( $campaign_id ) ) {
404
  $where_columns[] = "campaign_id = %d";
405
+ $where_args[] = $campaign_id;
406
  }
407
 
408
  $where_query = '';
409
+ if ( ! empty( $where_columns ) ) {
410
  $where_query = implode( " AND ", $where_columns );
411
  $where_query = $wpdb->prepare( $where_query, $where_args );
412
  }
413
 
414
+ if ( ! empty( $where_query ) ) {
415
  $sql .= ' WHERE ' . $where_query;
416
  }
417
 
512
  public function preview_email( $report_id ) {
513
  ob_start();
514
  ?>
515
+ <div class="wrap">
516
+ <h2 style="margin-bottom:1em;">
517
  <?php echo __( 'Preview Email', 'email-subscribers' ); ?>
518
+ </h2>
519
+ <p>
520
  <?php echo __( 'This is how the email you sent may look. <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.', 'email-subscribers' ); ?>
521
+ </p>
522
+ <div class="tool-box">
523
+ <div style="padding:15px;background-color:#FFFFFF;">
524
  <?php
525
  $preview = array();
526
  $preview = ES_DB_Mailing_Queue::get_email_by_id( $report_id );
536
 
537
  echo stripslashes( $preview['body'] );
538
  ?>
539
+ </div>
540
+ </div>
541
+ </div>
542
  <?php
543
  $html = ob_get_clean();
544
 
lite/includes/db/class-es-db-actions.php CHANGED
@@ -47,15 +47,21 @@ class ES_DB_Actions extends ES_DB {
47
  */
48
  public function get_columns() {
49
  return array(
50
- 'contact_id' => '%d',
51
- 'message_id' => '%d',
52
- 'campaign_id' => '%d',
53
- 'type' => '%d',
54
- 'count' => '%d',
55
- 'link_id' => '%d',
56
- 'list_id' => '%d',
57
- 'created_at' => '%d',
58
- 'updated_at' => '%d'
 
 
 
 
 
 
59
  );
60
  }
61
 
@@ -66,15 +72,21 @@ class ES_DB_Actions extends ES_DB {
66
  */
67
  public function get_column_defaults() {
68
  return array(
69
- 'contact_id' => null,
70
- 'message_id' => null,
71
- 'campaign_id' => null,
72
- 'type' => 0,
73
- 'count' => 0,
74
- 'link_id' => 0,
75
- 'list_id' => 0,
76
- 'created_at' => ig_es_get_current_gmt_timestamp(),
77
- 'updated_at' => ig_es_get_current_gmt_timestamp()
 
 
 
 
 
 
78
  );
79
  }
80
 
@@ -105,7 +117,7 @@ class ES_DB_Actions extends ES_DB {
105
 
106
  $sql .= " VALUES ($args_values_str) ON DUPLICATE KEY UPDATE";
107
 
108
- $sql .= ( $explicit ) ? $wpdb->prepare( " created_at = created_at, count = count+1, updated_at = %d", ig_es_get_current_gmt_timestamp() ) : ' count = values(count)';
109
 
110
  $result = $wpdb->query( $sql );
111
 
@@ -245,4 +257,27 @@ class ES_DB_Actions extends ES_DB {
245
 
246
  return $wpdb->get_var( $wpdb->prepare( $query, $args ) );
247
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
248
  }
47
  */
48
  public function get_columns() {
49
  return array(
50
+ 'contact_id' => '%d',
51
+ 'message_id' => '%d',
52
+ 'campaign_id' => '%d',
53
+ 'type' => '%d',
54
+ 'count' => '%d',
55
+ 'link_id' => '%d',
56
+ 'list_id' => '%d',
57
+ 'ip' => '%s',
58
+ 'country' => '%s',
59
+ 'device' => '%s',
60
+ 'browser' => '%s',
61
+ 'email_client' => '%s',
62
+ 'os' => '%s',
63
+ 'created_at' => '%d',
64
+ 'updated_at' => '%d',
65
  );
66
  }
67
 
72
  */
73
  public function get_column_defaults() {
74
  return array(
75
+ 'contact_id' => null,
76
+ 'message_id' => null,
77
+ 'campaign_id' => null,
78
+ 'type' => 0,
79
+ 'count' => 0,
80
+ 'link_id' => 0,
81
+ 'list_id' => 0,
82
+ 'ip' => '',
83
+ 'country' => '',
84
+ 'device' => '',
85
+ 'browser' => '',
86
+ 'email_client' => '',
87
+ 'os' => '',
88
+ 'created_at' => ig_es_get_current_gmt_timestamp(),
89
+ 'updated_at' => ig_es_get_current_gmt_timestamp()
90
  );
91
  }
92
 
117
 
118
  $sql .= " VALUES ($args_values_str) ON DUPLICATE KEY UPDATE";
119
 
120
+ $sql .= ( $explicit ) ? $wpdb->prepare( " created_at = created_at, count = count+1, updated_at = %d, ip = %s, country = %s, browser = %s, device = %s, os = %s, email_client = %s", ig_es_get_current_gmt_timestamp(), $args['ip'], $args['country'], $args['browser'], $args['device'], $args['os'], $args['email_client'] ) : ' count = values(count)';
121
 
122
  $result = $wpdb->query( $sql );
123
 
257
 
258
  return $wpdb->get_var( $wpdb->prepare( $query, $args ) );
259
  }
260
+
261
+ /**
262
+ * Get individual campaign total link clicks
263
+ *
264
+ * @return string|null
265
+ *
266
+ * @since 4.5.0
267
+ */
268
+ public function get_campaign_total_contacts_clicks_links( $campaign_id, $distinct = true ) {
269
+ global $wpdb;
270
+
271
+ $ig_actions_table = IG_ACTIONS_TABLE;
272
+
273
+ if ( $distinct ) {
274
+ $query = "SELECT COUNT(DISTINCT(`contact_id`)) FROM $ig_actions_table WHERE `campaign_id`= %d AND `type` = %d";
275
+ } else {
276
+ $query = "SELECT COUNT(`contact_id`) FROM $ig_actions_table WHERE `campaign_id`= %d `type` = %d";
277
+ }
278
+ $args[] = $campaign_id;
279
+ $args[] = IG_LINK_CLICK;
280
+
281
+ return $wpdb->get_var( $wpdb->prepare( $query, $args ) );
282
+ }
283
  }
lite/includes/db/class-es-db-campaigns.php CHANGED
@@ -460,14 +460,18 @@ class ES_DB_Campaigns extends ES_DB {
460
  *
461
  * @return array|object|null
462
  */
463
- public function get_campaign_by_id( $id = 0 ) {
464
  global $wpdb;
465
 
466
  if ( empty( $id ) ) {
467
  return array();
468
  }
469
 
470
- $where = $wpdb->prepare( "id = %d AND status = %d", $id, self::STATUS_ACTIVE );
 
 
 
 
471
 
472
  $campaigns = $this->get_by_conditions( $where );
473
 
460
  *
461
  * @return array|object|null
462
  */
463
+ public function get_campaign_by_id( $id = 0, $status = self::STATUS_ACTIVE ) {
464
  global $wpdb;
465
 
466
  if ( empty( $id ) ) {
467
  return array();
468
  }
469
 
470
+ $where = $wpdb->prepare( "id = %d", $id );
471
+
472
+ if( -1 !== $status ) {
473
+ $where = $wpdb->prepare( " AND status = %d", self::STATUS_ACTIVE );
474
+ }
475
 
476
  $campaigns = $this->get_by_conditions( $where );
477
 
lite/includes/db/class-es-db-contacts.php CHANGED
@@ -259,7 +259,6 @@ class ES_DB_Contacts extends ES_DB {
259
  $where = $wpdb->prepare( "id IN (SELECT contact_id FROM $ig_lists_contacts_table WHERE list_id = %d AND status IN ('subscribed', 'confirmed'))", $list_id );
260
  }
261
 
262
-
263
  return $this->get_by_conditions( $where );
264
 
265
  }
259
  $where = $wpdb->prepare( "id IN (SELECT contact_id FROM $ig_lists_contacts_table WHERE list_id = %d AND status IN ('subscribed', 'confirmed'))", $list_id );
260
  }
261
 
 
262
  return $this->get_by_conditions( $where );
263
 
264
  }
lite/includes/db/class-es-db-links.php CHANGED
@@ -147,5 +147,22 @@ if ( ! class_exists( 'ES_DB_Links' ) ) {
147
  return $this->get_by_conditions( $where );
148
  }
149
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
150
  }
151
  }
147
  return $this->get_by_conditions( $where );
148
  }
149
 
150
+ /**
151
+ * Check whether link exists in campaign
152
+ *
153
+ * @param int $message_id
154
+ *
155
+ * @return string|null
156
+ *
157
+ * @since 4.2.4
158
+ */
159
+ public function get_links_by_message_id( $message_id = 0 ) {
160
+ global $wpdb;
161
+
162
+ $where = $wpdb->prepare( " message_id = %d", $message_id );
163
+
164
+ return $this->get_by_conditions( $where );
165
+ }
166
+
167
  }
168
  }
lite/includes/pro-features.php CHANGED
@@ -23,6 +23,7 @@ add_action( 'ig_es_after_broadcast_tracking_options_settings', 'ig_es_additional
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
  add_action( 'ig_es_add_multilist_options', 'ig_es_additional_multilist_option' );
 
26
 
27
  /**
28
  * Promote SMTP mailer for free
@@ -837,3 +838,664 @@ function ig_es_additional_spam_score_option() {
837
 
838
  }
839
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
  add_action( 'ig_es_add_multilist_options', 'ig_es_additional_multilist_option' );
26
+ add_action( 'ig_es_view_report_data','ig_es_view_additional_reports_data');
27
 
28
  /**
29
  * Promote SMTP mailer for free
838
 
839
  }
840
 
841
+ /**
842
+ * Campaign reports data
843
+ *
844
+ * @since 4.5.0
845
+ */
846
+
847
+ function ig_es_view_additional_reports_data() {
848
+ if ( ! ES()->is_pro() ) {
849
+ $utm_args = array(
850
+ 'utm_medium' => 'campaign_insight'
851
+ );
852
+
853
+ $pricing_url = ES_Common::get_utm_tracking_url( $utm_args );
854
+ ?>
855
+
856
+
857
+ <div class="wrap locker-content relative" >
858
+ <div class="w-3/6 mt-3.5 pr-4 absolute locker-content-middle">
859
+ <div class="inline-flex rounded-md bg-black px-2 pt-1 w-full">
860
+ <div class="px-2 pt-2 pb-2">
861
+ <div class="flex">
862
+ <div class="flex-shrink-0">
863
+ <svg class='h-5 w-5 text-teal-400' fill='currentColor' viewBox='0 0 20 20'>
864
+ <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'/>
865
+ </svg>
866
+ </div>
867
+ <div class="ml-3">
868
+ <h3 class="text-sm leading-5 font-medium text-white">
869
+ <?php _e( sprintf("<a class='text-white' href='%s' target='_blank'>Upgrade to ES PRO</a>", $pricing_url), 'email-subscribers' ); ?>
870
+ <svg class="ml-3 align-middle w-5 h-5 text-indigo-600 inline-block" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor"><path d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"></path></svg>
871
+ </h3>
872
+ <div class="mt-2 text-sm leading-5 text-white">
873
+ <p>
874
+ <?php _e( 'Get campaign insights like geo location, device info, email client info, open/ click activity etc with Email Subscribers PRO.', 'email-subscribers' ); ?>
875
+ <br /><br />
876
+ <?php if(ES_Common::can_show_coupon('PREMIUM10')) { _e( 'Get a <b>10% flat discount</b> if you upgrade now!. <br /><br />Use coupon code <b>PREMIUM10</b>', 'email-subscribers' );}?>
877
+ </p>
878
+ </div>
879
+ </div>
880
+ </div>
881
+ </div>
882
+ </div>
883
+ </div>
884
+ <div class="mt-6 max-w-7xl">
885
+ <div class="pt-3">
886
+ <span class="text-left text-lg font-medium leading-7 tracking-wide text-gray-600"><?php _e('Campaign Details','email-subscribers');?><svg class="ml-3 align-middle w-5 h-5 text-indigo-600 inline-block" fill="none" stroke-linecap="round" stroke-linejoin="round" stroke-width="2" viewBox="0 0 24 24" stroke="currentColor"><path d="M12 15v2m-6 4h12a2 2 0 002-2v-6a2 2 0 00-2-2H6a2 2 0 00-2 2v6a2 2 0 002 2zm10-10V7a4 4 0 00-8 0v4h8z"></path></svg>
887
+ </div>
888
+ </div>
889
+ <div class="mt-2 pb-4 w-full rounded-md bg-white shadow">
890
+ <div class="pl-4 flex w-full text-gray-600 pt-6 text-sm leading-5 overflow-hidden">
891
+ <span class="text-2xl text-indigo-600 font-medium">10,000</span><span class="text-base text-gray-400 leading-6 font-medium">&nbsp;<?php _e( 'Recipients','email-subscribers'); ?>
892
+ </span>
893
+ </div>
894
+ <div class="flex w-4/5 text-gray-600 pt-5 text-sm leading-5">
895
+ <div class="pl-4 w-4/12 font-medium text-gray-600 "><?php _e( 'Type: ','email-subscribers'); ?><span class="font-normal text-gray-900"><?php _e( 'Broadcast','email-subscribers'); ?></span>
896
+ </div>
897
+ <div class="w-8/12 pl-6 font-medium text-gray-600 "><?php _e( 'From: ','email-subscribers'); ?><span class="font-normal text-gray-900"><?php _e('hello@icegram.com','email-subscribers'); ?>,</span>
898
+ </div>
899
+ </div>
900
+
901
+ <div class="flex w-4/5 text-gray-600 pt-3 text-sm leading-5">
902
+ <div class="pl-4 w-4/12 font-medium text-gray-600 "><?php _e( 'List(s): ','email-subscribers'); ?><span class="font-normal text-gray-900"><?php _e('Test, Main ','email-subscribers'); ?></span>
903
+ </div>
904
+ <div class="w-8/12 pl-6 font-medium text-gray-600 "><?php _e( 'Subject: ','email-subscribers'); ?><span class="font-normal text-gray-900"><?php _e( 'Take a look into Icegram' ); ?></span>
905
+ </div>
906
+ </div>
907
+
908
+ <div class="flex w-4/5 text-gray-600 pt-3 text-sm leading-5">
909
+ <div class="pl-4 w-4/12 font-medium text-gray-600 "><?php _e( 'Status: ','email-subscribers'); ?><span class="font-normal text-gray-900">
910
+ <svg class="inline-block ml-2 h-5 w-5 text-green-400" fill="currentColor" viewBox="0 0 20 20">
911
+ <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"/>
912
+ </svg>
913
+ </span>
914
+ </div>
915
+ <div class="w-8/12 pl-6 font-medium text-gray-600 "><?php _e( 'Date: ','email-subscribers'); ?><span class="font-normal text-gray-900"><?php _e('July 1, 2020 10:00 AM','email-subscribers'); ?></span>
916
+ </div>
917
+ </div>
918
+ </div>
919
+ <div class="mt-6 mb-4 max-w-7xl">
920
+ <div class="pt-3">
921
+ <span class="text-left text-lg font-medium leading-7 tracking-wide text-gray-600"><?php _e('Open and click activity','email-subscribers');?></span>
922
+ </div>
923
+ <div class="bg-white mt-2 w-full rounded-md" id="click_link_activity">
924
+ <img style="display: block;" src="<?php echo ES_PLUGIN_URL ?>lite/admin/images/graph.png"/>
925
+ </div>
926
+
927
+ </div>
928
+ <div class="mt-6 mb-2 max-w-7xl flex">
929
+ <div class="w-1/2 pt-3">
930
+ <span class="text-left text-lg font-medium leading-7 tracking-wide text-gray-600"><?php _e('Country Opens','email-subscribers');?></span>
931
+ </div>
932
+ <div class="pt-3 pl-4">
933
+ <span class="text-left text-lg font-medium leading-7 tracking-wide text-gray-600"><?php _e('Device Opens','email-subscribers');?></span>
934
+ </div>
935
+ </div>
936
+ <div class="mt-2 mb-4 max-w-7xl flex">
937
+ <div class="flex mb-4 mr-4 w-1/2 bg-white shadow rounded-md">
938
+ <table class="w-full table-fixed">
939
+ <thead>
940
+ <tr>
941
+ <th class="w-2/3 px-6 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
942
+ <?php _e('Country','email-subscribers');?>
943
+ </th>
944
+ <th class="w-1/3 px-6 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
945
+ <?php _e('Opens','email-subscribers');?>
946
+ </th>
947
+ </tr>
948
+ </thead>
949
+ <tbody>
950
+ <tr>
951
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
952
+ <?php _e('United States','email-subscribers');?>
953
+ </td>
954
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
955
+ 1500
956
+ </td>
957
+ </tr>
958
+ <tr>
959
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
960
+ <?php _e('Australia','email-subscribers');?>
961
+ </td>
962
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
963
+ 1200
964
+ </td>
965
+ </tr>
966
+ <tr>
967
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
968
+ <?php _e('Spain','email-subscribers');?>
969
+ </td>
970
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
971
+ 800
972
+ </td>
973
+ </tr>
974
+ <tr>
975
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
976
+ <?php _e('France','email-subscribers');?>
977
+ </td>
978
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
979
+ 650
980
+ </td>
981
+ </tr>
982
+ <tr>
983
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
984
+ <?php _e('Russia','email-subscribers');?>
985
+ </td>
986
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
987
+ 144
988
+ </td>
989
+ </tr>
990
+ </tbody>
991
+ </table>
992
+
993
+ </div>
994
+ <div class=" flex ml-4 w-1/2 bg-white shadow rounded-md self-start">
995
+ <table class="w-full table-fixed">
996
+ <thead>
997
+ <tr>
998
+ <th class="w-2/3 px-6 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
999
+ <?php _e('Device','email-subscribers');?>
1000
+ </th>
1001
+ <th class="w-1/3 px-6 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">
1002
+ <?php _e('Opens','email-subscribers');?>
1003
+ </th>
1004
+ </tr>
1005
+ </thead>
1006
+ <tbody>
1007
+ <tr>
1008
+ <td class="pl-8 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1009
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1010
+ <title><?php echo esc_attr__( 'Desktop', 'email-subscribers' ); ?></title>
1011
+ <path fill="currentColor" d="M19,2H5A3,3,0,0,0,2,5V15a3,3,0,0,0,3,3H7.64l-.58,1a2,2,0,0,0,0,2,2,2,0,0,0,1.75,1h6.46A2,2,0,0,0,17,21a2,2,0,0,0,0-2l-.59-1H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM8.77,20,10,18H14l1.2,2ZM20,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V14H20Zm0-3H4V5A1,1,0,0,1,5,4H19a1,1,0,0,1,1,1Z"></path>
1012
+ </svg>
1013
+ </td>
1014
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1015
+ 1300
1016
+ </td>
1017
+ </tr>
1018
+ <tr>
1019
+ <td class="pl-8 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1020
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1021
+ <title><?php echo esc_attr__( 'Mobile', 'email-subscribers' ); ?></title>
1022
+ <path fill="currentColor" d="M16,2H8A3,3,0,0,0,5,5V19a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V5A3,3,0,0,0,16,2Zm1,17a1,1,0,0,1-1,1H8a1,1,0,0,1-1-1V18H17Zm0-3H7V5A1,1,0,0,1,8,4h8a1,1,0,0,1,1,1Z"></path>
1023
+ </svg>
1024
+ </td>
1025
+ <td class="px-6 py-4 border-b border-gray-200 text-sm leading-5 text-gray-600">
1026
+ 2800
1027
+ </td>
1028
+ </tr>
1029
+ <tr>
1030
+ <td class="pl-8 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1031
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" version="1.1" id="Layer_1" x="0px" y="0px" width="512px" height="512px" viewBox="0 0 512 512" xml:space="preserve">
1032
+ <title><?php echo esc_html__( 'Tablet', 'email-subscribers' ); ?></title>
1033
+ <path fill-rule="evenodd" clip-rule="evenodd" fill="currentColor" d="M416,0H96C78.313,0,64,14.328,64,32v448c0,17.688,14.313,32,32,32 h320c17.688,0,32-14.313,32-32V32C448,14.328,433.688,0,416,0z M256,496c-13.25,0-24-10.75-24-24s10.75-24,24-24s24,10.75,24,24 S269.25,496,256,496z M400,432H112V48h288V432z"></path>
1034
+ </svg>
1035
+ </td>
1036
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1037
+ 194
1038
+ </td>
1039
+ </tr>
1040
+
1041
+ </tbody>
1042
+ </table>
1043
+
1044
+ </div>
1045
+ </div>
1046
+
1047
+ <div class="mt-6 mb-2 max-w-7xl">
1048
+
1049
+ <span class="text-left text-lg font-medium leading-7 tracking-wide text-gray-600"><?php _e('Link Activity','email-subscribers');?></span>
1050
+ </div>
1051
+ <div class="mt-2 mb-4 max-w-7xl flex">
1052
+ <div class="flex w-full bg-white shadow rounded-md break-words self-start">
1053
+ <table class="w-full table-fixed">
1054
+ <thead>
1055
+ <tr>
1056
+ <th class="w-3/5 px-6 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php echo esc_html__( 'Link (URL)','email-subscribers'); ?>
1057
+ </th>
1058
+ <th class=" w-1/5 px-6 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php echo esc_html__( 'Unique Clicks', 'email-subscribers' ); ?>
1059
+ </th>
1060
+ <th class=" w-1/5 px-6 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php echo esc_html__( 'Total Clicks', 'email-subscribers' ); ?>
1061
+ </th>
1062
+ </tr>
1063
+ </thead>
1064
+ <tbody>
1065
+ <tr>
1066
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-900">
1067
+ <?php
1068
+ _e('https://www.icegram.com/automate-workflow-and-reduce-chaos/','email-subscribers');
1069
+ ?>
1070
+ </td>
1071
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1072
+ 1400
1073
+ </td>
1074
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1075
+ 2000
1076
+ </td>
1077
+ </tr>
1078
+ <tr>
1079
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-900">
1080
+ <?php
1081
+ _e('https://www.icegram.com/how-to-keep-email-out-of-spam-folder/','email-subscribers');
1082
+ ?>
1083
+ </td>
1084
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1085
+ 1200
1086
+ </td>
1087
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1088
+ 1800
1089
+ </td>
1090
+ </tr>
1091
+ <tr>
1092
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-900">
1093
+ <?php
1094
+ _e('https://www.icegram.com/8-effective-tips-to-grow-your-open-rates/');
1095
+ ?>
1096
+ </td>
1097
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1098
+ 800
1099
+ </td>
1100
+ <td class="px-6 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1101
+ 1000
1102
+ </td>
1103
+ </tr>
1104
+ </tbody>
1105
+ </table>
1106
+ </div>
1107
+ </div>
1108
+ <div class="mt-8 mb-2 max-w-7xl">
1109
+
1110
+ <span class="text-left text-lg font-medium leading-7 tracking-wide text-gray-600"><?php _e('Last 10 Open Activity','email-subscribers');?></span>
1111
+ </div>
1112
+ <div class="mt-2 mb-2 max-w-7xl flex">
1113
+ <div class="flex w-full bg-white shadow rounded-md break-all">
1114
+ <table class="w-full table-fixed">
1115
+ <thead>
1116
+ <tr>
1117
+ <th class="w-3/12 pl-6 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php _e('Email','email-subscribers');?></th>
1118
+ <th class="w-2/12 pl-3 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php _e('Device','email-subscribers');?></th>
1119
+ <th class="w-2/12 pl-3 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php _e('Browser','email-subscribers');?></th>
1120
+ <th class="w-2/12 pl-3 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider">Mail <?php _e('Client','email-subscribers');?></th>
1121
+ <th class="w-2/12 pl-3 py-3 border-b border-gray-200 bg-gray-200 text-left text-xs leading-4 font-medium text-gray-500 uppercase tracking-wider"><?php _e('OS','email-subscribers');?></th>
1122
+ </tr>
1123
+ </thead>
1124
+ <tbody class="bg-white">
1125
+
1126
+ <tr>
1127
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1128
+ <?php
1129
+ _e('bernardlane@gmail.com','email-subscribers');
1130
+ ?>
1131
+ </td>
1132
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1133
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1134
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1135
+ <path fill="currentColor" d="M19,2H5A3,3,0,0,0,2,5V15a3,3,0,0,0,3,3H7.64l-.58,1a2,2,0,0,0,0,2,2,2,0,0,0,1.75,1h6.46A2,2,0,0,0,17,21a2,2,0,0,0,0-2l-.59-1H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM8.77,20,10,18H14l1.2,2ZM20,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V14H20Zm0-3H4V5A1,1,0,0,1,5,4H19a1,1,0,0,1,1,1Z"></path>
1136
+ </svg>
1137
+ </span>
1138
+ </td>
1139
+
1140
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1141
+ <?php
1142
+ _e('Mozilla Firefox','email-subscribers');
1143
+ ?>
1144
+ </td>
1145
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1146
+ <?php
1147
+ _e('Gmail','email-subscribers');
1148
+ ?>
1149
+ </td>
1150
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1151
+ <?php
1152
+ _e('Windows','email-subscribers');
1153
+ ?>
1154
+ </td>
1155
+ </tr>
1156
+ <tr>
1157
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1158
+ <?php
1159
+ _e('john@gmail.com','email-subscribers');
1160
+ ?>
1161
+ </td>
1162
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1163
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1164
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1165
+ <path fill="currentColor" d="M19,2H5A3,3,0,0,0,2,5V15a3,3,0,0,0,3,3H7.64l-.58,1a2,2,0,0,0,0,2,2,2,0,0,0,1.75,1h6.46A2,2,0,0,0,17,21a2,2,0,0,0,0-2l-.59-1H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM8.77,20,10,18H14l1.2,2ZM20,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V14H20Zm0-3H4V5A1,1,0,0,1,5,4H19a1,1,0,0,1,1,1Z"></path>
1166
+ </svg>
1167
+ </span>
1168
+ </td>
1169
+
1170
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1171
+ <?php
1172
+ _e('Google Chrome','email-subscribers');
1173
+ ?>
1174
+ </td>
1175
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1176
+ <?php
1177
+ _e('Gmail','email-subscribers');
1178
+ ?>
1179
+ </td>
1180
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1181
+ <?php
1182
+ _e('Windows','email-subscribers');
1183
+ ?>
1184
+ </td>
1185
+ </tr>
1186
+ <tr>
1187
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1188
+ <?php
1189
+ _e('pasha@gmail.com','email-subscribers');
1190
+ ?>
1191
+ </td>
1192
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1193
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1194
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1195
+ <title><?php echo esc_attr__( 'Mobile', 'email-subscribers' ); ?></title>
1196
+ <path fill="currentColor" d="M16,2H8A3,3,0,0,0,5,5V19a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V5A3,3,0,0,0,16,2Zm1,17a1,1,0,0,1-1,1H8a1,1,0,0,1-1-1V18H17Zm0-3H7V5A1,1,0,0,1,8,4h8a1,1,0,0,1,1,1Z"></path>
1197
+ </svg>
1198
+ </span>
1199
+ </td>
1200
+
1201
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1202
+ <?php
1203
+ _e('Android','email-subscribers');
1204
+ ?>
1205
+ </td>
1206
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1207
+ <?php
1208
+ _e('Gmail App (Android)','email-subscribers');
1209
+ ?>
1210
+ </td>
1211
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1212
+ <?php
1213
+ _e('Android','email-subscribers');
1214
+ ?>
1215
+ </td>
1216
+ </tr>
1217
+ <tr>
1218
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1219
+ <?php
1220
+ _e('mark@twone.com','email-subscribers');
1221
+ ?>
1222
+ </td>
1223
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1224
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1225
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1226
+ <title><?php echo esc_attr__( 'Desktop', 'email-subscribers' ); ?></title>
1227
+ <path fill="currentColor" d="M16,2H8A3,3,0,0,0,5,5V19a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V5A3,3,0,0,0,16,2Zm1,17a1,1,0,0,1-1,1H8a1,1,0,0,1-1-1V18H17Zm0-3H7V5A1,1,0,0,1,8,4h8a1,1,0,0,1,1,1Z"></path>
1228
+ </svg>
1229
+ </span>
1230
+ </td>
1231
+
1232
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1233
+ <?php
1234
+ _e('Unknown','email-subscribers');
1235
+ ?>
1236
+ </td>
1237
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1238
+ <?php
1239
+ _e('Thunderbird','email-subscribers');
1240
+ ?>
1241
+ </td>
1242
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1243
+ <?php
1244
+ _e('Windows','email-subscribers');
1245
+ ?>
1246
+ </td>
1247
+ </tr>
1248
+ <tr>
1249
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1250
+ <?php
1251
+ _e('smith@gmail.com','email-subscribers');
1252
+ ?>
1253
+ </td>
1254
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1255
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1256
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1257
+ <title><?php echo esc_attr__( 'Mobile', 'email-subscribers' ); ?></title>
1258
+ <path fill="currentColor" d="M16,2H8A3,3,0,0,0,5,5V19a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V5A3,3,0,0,0,16,2Zm1,17a1,1,0,0,1-1,1H8a1,1,0,0,1-1-1V18H17Zm0-3H7V5A1,1,0,0,1,8,4h8a1,1,0,0,1,1,1Z"></path>
1259
+ </svg>
1260
+ </span>
1261
+ </td>
1262
+
1263
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1264
+ <?php
1265
+ _e('Android','email-subscribers');
1266
+ ?>
1267
+ </td>
1268
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1269
+ <?php
1270
+ _e('Gmail App (Android)','email-subscribers');
1271
+ ?>
1272
+ </td>
1273
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1274
+ <?php
1275
+ _e('Android','email-subscribers');
1276
+ ?>
1277
+ </td>
1278
+ </tr>
1279
+ <tr>
1280
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1281
+ <?php
1282
+ _e('bradtke@gmail.com','email-subscribers');
1283
+ ?>
1284
+ </td>
1285
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1286
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1287
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1288
+ <path fill="currentColor" d="M19,2H5A3,3,0,0,0,2,5V15a3,3,0,0,0,3,3H7.64l-.58,1a2,2,0,0,0,0,2,2,2,0,0,0,1.75,1h6.46A2,2,0,0,0,17,21a2,2,0,0,0,0-2l-.59-1H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM8.77,20,10,18H14l1.2,2ZM20,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V14H20Zm0-3H4V5A1,1,0,0,1,5,4H19a1,1,0,0,1,1,1Z"></path>
1289
+ </svg>
1290
+ </span>
1291
+ </td>
1292
+
1293
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1294
+ <?php
1295
+ _e('Mozilla Firefox','email-subscribers');
1296
+ ?>
1297
+ </td>
1298
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1299
+ <?php
1300
+ _e('Gmail','email-subscribers');
1301
+ ?>
1302
+ </td>
1303
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1304
+ <?php
1305
+ _e('Windows','email-subscribers');
1306
+ ?>
1307
+ </td>
1308
+ </tr>
1309
+ <tr>
1310
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1311
+ <?php
1312
+ _e('bveum@gmail.com','email-subscribers');
1313
+ ?>
1314
+ </td>
1315
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1316
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1317
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1318
+ <path fill="currentColor" d="M19,2H5A3,3,0,0,0,2,5V15a3,3,0,0,0,3,3H7.64l-.58,1a2,2,0,0,0,0,2,2,2,0,0,0,1.75,1h6.46A2,2,0,0,0,17,21a2,2,0,0,0,0-2l-.59-1H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM8.77,20,10,18H14l1.2,2ZM20,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V14H20Zm0-3H4V5A1,1,0,0,1,5,4H19a1,1,0,0,1,1,1Z"></path>
1319
+ </svg>
1320
+ </span>
1321
+ </td>
1322
+
1323
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1324
+ <?php
1325
+ _e('Google Chrome','email-subscribers');
1326
+ ?>
1327
+ </td>
1328
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1329
+ <?php
1330
+ _e('Gmail','email-subscribers');
1331
+ ?>
1332
+ </td>
1333
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1334
+ <?php
1335
+ _e('Windows','email-subscribers');
1336
+ ?>
1337
+ </td>
1338
+ </tr>
1339
+ <tr>
1340
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1341
+ <?php
1342
+ _e('tracy@gmail.com','email-subscribers');
1343
+ ?>
1344
+ </td>
1345
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1346
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1347
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1348
+ <title><?php echo esc_attr__( 'Mobile', 'email-subscribers' ); ?></title>
1349
+ <path fill="currentColor" d="M16,2H8A3,3,0,0,0,5,5V19a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V5A3,3,0,0,0,16,2Zm1,17a1,1,0,0,1-1,1H8a1,1,0,0,1-1-1V18H17Zm0-3H7V5A1,1,0,0,1,8,4h8a1,1,0,0,1,1,1Z"></path>
1350
+ </svg>
1351
+ </span>
1352
+ </td>
1353
+
1354
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1355
+ <?php
1356
+ _e('Android','email-subscribers');
1357
+ ?>
1358
+ </td>
1359
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1360
+ <?php
1361
+ _e('Gmail App (Android)','email-subscribers');
1362
+ ?>
1363
+ </td>
1364
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1365
+ <?php
1366
+ _e('Android','email-subscribers');
1367
+ ?>
1368
+ </td>
1369
+ </tr>
1370
+ <tr>
1371
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1372
+ <?php
1373
+ _e('domenick52@twone.com','email-subscribers');
1374
+ ?>
1375
+ </td>
1376
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1377
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1378
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1379
+ <title><?php echo esc_attr__( 'Desktop', 'email-subscribers' ); ?></title>
1380
+ <path fill="currentColor" d="M16,2H8A3,3,0,0,0,5,5V19a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V5A3,3,0,0,0,16,2Zm1,17a1,1,0,0,1-1,1H8a1,1,0,0,1-1-1V18H17Zm0-3H7V5A1,1,0,0,1,8,4h8a1,1,0,0,1,1,1Z"></path>
1381
+ </svg>
1382
+ </span>
1383
+ </td>
1384
+
1385
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1386
+ <?php
1387
+ _e('Unknown','email-subscribers');
1388
+ ?>
1389
+ </td>
1390
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1391
+ <?php
1392
+ _e('Thunderbird','email-subscribers');
1393
+ ?>
1394
+ </td>
1395
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1396
+ <?php
1397
+ _e('Windows','email-subscribers');
1398
+ ?>
1399
+ </td>
1400
+ </tr>
1401
+ <tr>
1402
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1403
+ <?php
1404
+ _e('stanton@gmail.com','email-subscribers');
1405
+ ?>
1406
+ </td>
1407
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1408
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1409
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1410
+ <title><?php echo esc_attr__( 'Mobile', 'email-subscribers' ); ?></title>
1411
+ <path fill="currentColor" d="M16,2H8A3,3,0,0,0,5,5V19a3,3,0,0,0,3,3h8a3,3,0,0,0,3-3V5A3,3,0,0,0,16,2Zm1,17a1,1,0,0,1-1,1H8a1,1,0,0,1-1-1V18H17Zm0-3H7V5A1,1,0,0,1,8,4h8a1,1,0,0,1,1,1Z"></path>
1412
+ </svg>
1413
+ </span>
1414
+ </td>
1415
+
1416
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1417
+ <?php
1418
+ _e('Android','email-subscribers');
1419
+ ?>
1420
+ </td>
1421
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1422
+ <?php
1423
+ _e('Gmail App (Android)','email-subscribers');
1424
+ ?>
1425
+ </td>
1426
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1427
+ <?php
1428
+ _e('Android','email-subscribers');
1429
+ ?>
1430
+ </td>
1431
+ </tr>
1432
+ <tr>
1433
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1434
+ <?php
1435
+ _e('alessia@gmail.com','email-subscribers');
1436
+ ?>
1437
+ </td>
1438
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1439
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1440
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1441
+ <path fill="currentColor" d="M19,2H5A3,3,0,0,0,2,5V15a3,3,0,0,0,3,3H7.64l-.58,1a2,2,0,0,0,0,2,2,2,0,0,0,1.75,1h6.46A2,2,0,0,0,17,21a2,2,0,0,0,0-2l-.59-1H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM8.77,20,10,18H14l1.2,2ZM20,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V14H20Zm0-3H4V5A1,1,0,0,1,5,4H19a1,1,0,0,1,1,1Z"></path>
1442
+ </svg>
1443
+ </span>
1444
+ </td>
1445
+
1446
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1447
+ <?php
1448
+ _e('Mozilla Firefox','email-subscribers');
1449
+ ?>
1450
+ </td>
1451
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1452
+ <?php
1453
+ _e('Gmail','email-subscribers');
1454
+ ?>
1455
+ </td>
1456
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1457
+ <?php
1458
+ _e('Windows','email-subscribers');
1459
+ ?>
1460
+ </td>
1461
+ </tr>
1462
+ <tr>
1463
+ <td class="pl-6 pr-2 py-3 border-b border-gray-200 text-sm leading-5 text-gray-500">
1464
+ <?php
1465
+ _e('finn.lynch@gmail.com','email-subscribers');
1466
+ ?>
1467
+ </td>
1468
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 font-medium ">
1469
+ <span class="pl-2 inline-flex text-xs leading-5 font-semibold text-gray-500">
1470
+ <svg class="w-4 h-4" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 24 24">
1471
+ <path fill="currentColor" d="M19,2H5A3,3,0,0,0,2,5V15a3,3,0,0,0,3,3H7.64l-.58,1a2,2,0,0,0,0,2,2,2,0,0,0,1.75,1h6.46A2,2,0,0,0,17,21a2,2,0,0,0,0-2l-.59-1H19a3,3,0,0,0,3-3V5A3,3,0,0,0,19,2ZM8.77,20,10,18H14l1.2,2ZM20,15a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V14H20Zm0-3H4V5A1,1,0,0,1,5,4H19a1,1,0,0,1,1,1Z"></path>
1472
+ </svg>
1473
+ </span>
1474
+ </td>
1475
+
1476
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1477
+ <?php
1478
+ _e('Google Chrome','email-subscribers');
1479
+ ?>
1480
+ </td>
1481
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1482
+ <?php
1483
+ _e('Gmail','email-subscribers');
1484
+ ?>
1485
+ </td>
1486
+ <td class="pl-3 py-3 border-b border-gray-200 text-sm leading-5 text-gray-600">
1487
+ <?php
1488
+ _e('Windows','email-subscribers');
1489
+ ?>
1490
+ </td>
1491
+ </tr>
1492
+ </tbody>
1493
+ </table>
1494
+
1495
+ </div>
1496
+ </div>
1497
+ </div>
1498
+
1499
+ <?php }
1500
+ }
1501
+
lite/includes/upgrade/es-update-functions.php CHANGED
@@ -1218,4 +1218,34 @@ function ig_es_update_4410_db_version() {
1218
  ES_Install::update_db_version( '4.4.10' );
1219
  }
1220
 
1221
- /* --------------------- ES 4.4.10(End)--------------------------- */
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1218
  ES_Install::update_db_version( '4.4.10' );
1219
  }
1220
 
1221
+ /* --------------------- ES 4.4.10(End)--------------------------- */
1222
+
1223
+
1224
+ /* --------------------- ES 4.5.0(Start)--------------------------- */
1225
+ function ig_es_update_450_alter_actions_table() {
1226
+ global $wpdb;
1227
+
1228
+ $actions_table = IG_ACTIONS_TABLE;
1229
+
1230
+ $cols = $wpdb->get_col( "SHOW COLUMNS FROM {$actions_table}" );
1231
+ if ( ! in_array( 'ip', $cols ) ) {
1232
+ $query = "ALTER TABLE {$actions_table}
1233
+ ADD COLUMN ip varchar(50) NULL AFTER `list_id`,
1234
+ ADD COLUMN country varchar(50) NULL AFTER `ip`,
1235
+ ADD COLUMN device varchar(50) NULL AFTER `country`,
1236
+ ADD COLUMN browser varchar(50) NULL AFTER `device`,
1237
+ ADD COLUMN email_client varchar(50) NULL AFTER `browser`,
1238
+ ADD COLUMN os varchar(50) NULL AFTER `email_client`";
1239
+ $wpdb->query( $query );
1240
+ }
1241
+ }
1242
+
1243
+ /**
1244
+ * Update DB version
1245
+ *
1246
+ * @since 4.5.0
1247
+ */
1248
+ function ig_es_update_450_db_version() {
1249
+ ES_Install::update_db_version( '4.5.0' );
1250
+ }
1251
+ /* --------------------- ES 4.5.0(End)--------------------------- */
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-06-28 18:48+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"
@@ -65,7 +65,7 @@ msgstr ""
65
 
66
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:214
67
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:529
68
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:832
69
  msgid "Get Spam Score"
70
  msgstr ""
71
 
@@ -83,7 +83,7 @@ msgstr ""
83
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:232
84
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:531
85
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:375
86
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:833
87
  msgid "Check"
88
  msgstr ""
89
 
@@ -137,42 +137,42 @@ msgid "Close"
137
  msgstr ""
138
 
139
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:580
140
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:720
141
  msgid "Link Tracking"
142
  msgstr ""
143
 
144
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:596
145
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:814
146
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:181
147
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:734
148
  msgid "UTM Tracking"
149
  msgstr ""
150
 
151
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:642
152
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:764
153
  msgid "Send Options"
154
  msgstr ""
155
 
156
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:645
157
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:767
158
  msgid "Schedule for Later"
159
  msgstr ""
160
 
161
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:658
162
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:773
163
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/fields/class-es-date.php:32
164
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-timing.php:83
165
  msgid "Date"
166
  msgstr ""
167
 
168
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:669
169
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:782
170
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/fields/class-es-time.php:65
171
  msgid "Time"
172
  msgstr ""
173
 
174
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:680
175
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:792
176
  msgid "Local Time: "
177
  msgstr ""
178
 
@@ -182,7 +182,9 @@ msgstr ""
182
 
183
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:708
184
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:717
185
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:704
 
 
186
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:181
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
@@ -194,7 +196,7 @@ msgid "Email"
194
  msgstr ""
195
 
196
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:712
197
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:708
198
  msgid "Enter email"
199
  msgstr ""
200
 
@@ -228,7 +230,7 @@ msgid ""
228
  msgstr ""
229
 
230
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:806
231
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:161
232
  msgid "Track Clicks"
233
  msgstr ""
234
 
@@ -246,7 +248,7 @@ msgstr ""
246
 
247
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-post-digest.php:24
248
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1495
249
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:113
250
  msgid "Post Digest"
251
  msgstr ""
252
 
@@ -514,24 +516,24 @@ msgid "SMTP Password"
514
  msgstr ""
515
 
516
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:394
517
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:212
518
  msgid "Block Known Attackers"
519
  msgstr ""
520
 
521
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:395
522
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:213
523
  msgid ""
524
  "Stop known spam bot attacker domains from signing up. Keeps this list up-to-"
525
  "date with Icegram servers."
526
  msgstr ""
527
 
528
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:402
529
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:223
530
  msgid "Block Temporary / Fake Emails"
531
  msgstr ""
532
 
533
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:403
534
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:224
535
  msgid ""
536
  "Plenty of sites provide disposable / fake / temporary email addresses. "
537
  "People use them when they don't want to give you their real email. Block "
@@ -539,7 +541,7 @@ msgid ""
539
  msgstr ""
540
 
541
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:411
542
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:235
543
  msgid "Enable Captcha"
544
  msgstr ""
545
 
@@ -572,19 +574,19 @@ msgid "Custom CSS"
572
  msgstr ""
573
 
574
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:610
575
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:142
576
  msgid "User Roles"
577
  msgstr ""
578
 
579
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:631
580
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:82
581
  msgid "Roles"
582
  msgstr ""
583
 
584
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:632
585
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:223
586
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:223
587
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:83
588
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:66
589
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:142
590
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:312
@@ -595,7 +597,7 @@ msgstr ""
595
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:633
596
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:217
597
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:217
598
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:84
599
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:38
600
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:39
601
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:83
@@ -605,7 +607,7 @@ msgstr ""
605
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:634
606
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:205
607
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:205
608
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:85
609
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:8
610
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:103
611
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:237
@@ -615,23 +617,23 @@ msgstr ""
615
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:635
616
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:232
617
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:232
618
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:86
619
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:193
620
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:20
621
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:37
622
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:76
623
  msgid "Reports"
624
  msgstr ""
625
 
626
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:636
627
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:87
628
  msgid "Sequences"
629
  msgstr ""
630
 
631
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:637
632
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:195
633
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:195
634
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:88
635
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:54
636
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:150
637
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/class-es-workflow-admin-edit.php:184
@@ -647,42 +649,42 @@ msgid "Inline CSS"
647
  msgstr ""
648
 
649
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:1123
650
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:611
651
  msgid "Show a captcha to protect from bot signups."
652
  msgstr ""
653
 
654
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:72
655
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:269
656
  msgid "Comments"
657
  msgstr ""
658
 
659
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:82
660
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:280
661
  msgid "WooCommerce"
662
  msgstr ""
663
 
664
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:91
665
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:329
666
  msgid "EDD"
667
  msgstr ""
668
 
669
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:100
670
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:290
671
  msgid "Contact Form 7"
672
  msgstr ""
673
 
674
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:109
675
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:299
676
  msgid "WPForms"
677
  msgstr ""
678
 
679
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:118
680
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:309
681
  msgid "Give"
682
  msgstr ""
683
 
684
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:127
685
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:319
686
  msgid "Ninja Forms"
687
  msgstr ""
688
 
@@ -884,7 +886,7 @@ msgid ""
884
  msgstr ""
885
 
886
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:185
887
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:950
888
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-form-widget.php:11
889
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-old-widget.php:11
890
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-old-widget.php:12
@@ -903,10 +905,12 @@ msgstr ""
903
 
904
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:209
905
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1492
906
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:109
 
 
907
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:304
908
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:246
909
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:196
910
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:34
911
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:263
912
  msgid "Broadcast"
@@ -965,7 +969,7 @@ msgstr ""
965
  msgid "OK, I Got it!"
966
  msgstr ""
967
 
968
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:1059
969
  #, php-format
970
  msgid "%1$s in %2$s on line %3$s"
971
  msgstr ""
@@ -1081,8 +1085,9 @@ msgid "Lifetime"
1081
  msgstr ""
1082
 
1083
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1493
1084
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:111
1085
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:192
 
1086
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:35
1087
  msgid "Post Notification"
1088
  msgstr ""
@@ -1093,6 +1098,7 @@ msgid "Draft"
1093
  msgstr ""
1094
 
1095
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1548
 
1096
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:460
1097
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:496
1098
  msgid "Sending"
@@ -1107,12 +1113,14 @@ msgid "Scheduled"
1107
  msgstr ""
1108
 
1109
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1550
 
 
1110
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:467
1111
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:515
1112
  msgid "Sent"
1113
  msgstr ""
1114
 
1115
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-install.php:790
1116
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/upgrade/es-update-functions.php:772
1117
  msgid ""
1118
  "Your subscription was successful! Kindly check your mailbox and confirm your "
@@ -1174,50 +1182,40 @@ msgstr ""
1174
  msgid "Contact Us"
1175
  msgstr ""
1176
 
1177
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:167
1178
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:187
1179
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:242
1180
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:810
1181
  #, php-format
1182
  msgid "<a href='%s' target='_blank'>Upgrade to ES PRO</a>"
1183
  msgstr ""
1184
 
1185
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:168
1186
  msgid "Get insights about link clicks. See who are clicking on which links?"
1187
  msgstr ""
1188
 
1189
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:188
1190
  msgid "Get insights about UTM tracking."
1191
  msgstr ""
1192
 
1193
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:236
1194
  msgid "Show a captcha in subscription forms to protect from bot signups."
1195
  msgstr ""
1196
 
1197
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:243
1198
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:642
1199
  msgid "Secure your form and avoid spam signups with form Captcha"
1200
  msgstr ""
1201
 
1202
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:357
1203
  msgid "Sync Comment Users"
1204
  msgstr ""
1205
 
1206
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:358
1207
  msgid ""
1208
  "Quickly add to your mailing list when someone post a comment on your website."
1209
  msgstr ""
1210
 
1211
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:359
1212
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:388
1213
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:421
1214
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:453
1215
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:485
1216
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:517
1217
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:549
1218
- msgid "How to setup?"
1219
- msgstr ""
1220
-
1221
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:360
1222
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:389
1223
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:422
@@ -1225,53 +1223,63 @@ msgstr ""
1225
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:486
1226
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:518
1227
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:550
 
 
 
 
 
 
 
 
 
 
1228
  msgid "Once you upgrade to "
1229
  msgstr ""
1230
 
1231
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:360
1232
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:363
1233
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:389
1234
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:422
1235
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:454
1236
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:486
1237
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:518
1238
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:550
1239
  msgid "Email Subscribers Starter"
1240
  msgstr ""
1241
 
1242
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:360
1243
  msgid ""
1244
  "you will have settings panel where you need to enable Comment user sync and "
1245
  "select the list in which you want to add people whenever someone post a\n"
1246
  "\t\tcomment."
1247
  msgstr ""
1248
 
1249
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:363
1250
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:393
1251
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:425
1252
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:457
1253
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:489
1254
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:521
1255
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:553
1256
  msgid "Checkout "
1257
  msgstr ""
1258
 
1259
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:363
1260
  msgid "now"
1261
  msgstr ""
1262
 
1263
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:386
1264
  msgid "Sync WooCommerce Customers"
1265
  msgstr ""
1266
 
1267
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:387
1268
  msgid ""
1269
  "Are you using WooCommerce for your online business? You can use this "
1270
  "integration to add to a specific list whenever someone make a purchase from "
1271
  "you"
1272
  msgstr ""
1273
 
1274
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:389
1275
  msgid ""
1276
  "you will have settings panel where you need to enable WooCommerce sync and "
1277
  "select the list in which you want to add people whenever they\n"
@@ -1279,124 +1287,417 @@ msgid ""
1279
  "\t\t\tfrom you."
1280
  msgstr ""
1281
 
1282
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:419
1283
  msgid "Sync Contact Form 7 users"
1284
  msgstr ""
1285
 
1286
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:420
1287
  msgid ""
1288
  "Are you using Contact Form 7 for your list building? You can use this "
1289
  "integration to add to a specific list whenever new subscribers added from "
1290
  "Contact Form 7"
1291
  msgstr ""
1292
 
1293
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:423
1294
  msgid ""
1295
  "you will have settings panel where you need to enable Contact form 7 sync "
1296
  "and select the list in which you want to add people whenever they fill any "
1297
  "of the Contact Form."
1298
  msgstr ""
1299
 
1300
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:451
1301
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:483
1302
  msgid "Sync Donors"
1303
  msgstr ""
1304
 
1305
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:452
1306
  msgid ""
1307
  "We found that you are using Give WordPress plugin to collect donations. Now, "
1308
  "with this integration, you can add your donors to any of your subscriber "
1309
  "list and send them Newsletters in future."
1310
  msgstr ""
1311
 
1312
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:455
1313
  msgid ""
1314
  "you will have settings panel where you need to enable Give integration and "
1315
  "select the list in which you want to add people whenever they make donation."
1316
  msgstr ""
1317
 
1318
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:484
1319
  msgid ""
1320
  "Are you using Give WordPress plugin to collect donations? Want to send Thank "
1321
  "You email to them? You can use this integration to be in touch with them."
1322
  msgstr ""
1323
 
1324
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:487
1325
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:519
1326
  msgid ""
1327
  "you will have settings panel where you need to enable Give sync and select "
1328
  "the list in which you want to add people whenever they make donation."
1329
  msgstr ""
1330
 
1331
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:515
1332
  msgid "Sync Contacts"
1333
  msgstr ""
1334
 
1335
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:516
1336
  msgid ""
1337
  "We found that you are using Ninja Forms. Want to add your contact to a "
1338
  "mailing list? You can use this integration to add your contact to add into "
1339
  "mailing list"
1340
  msgstr ""
1341
 
1342
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:547
1343
  msgid "Sync Customers"
1344
  msgstr ""
1345
 
1346
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:548
1347
  msgid ""
1348
  "We found that you are using EDD to sell digital goods online. You can use "
1349
  "this integration to send Newsletters/ Post Notifications to your customers."
1350
  msgstr ""
1351
 
1352
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:551
1353
  msgid ""
1354
  "you will have settings panel where you need to enable EDD sync and select "
1355
  "the list in which you want to add people whenever they purchase something "
1356
  "from you."
1357
  msgstr ""
1358
 
1359
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:644
1360
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:815
1361
  #, php-format
1362
  msgid ""
1363
  "Get <b>10% flat discount</b> if you upgrade now!. <br /><br />Use coupon "
1364
  "code <b>PREMIUM10</b>"
1365
  msgstr ""
1366
 
1367
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:682
1368
  msgid ""
1369
  "Get rid of setting Post Notifications for each list and avoid chances of "
1370
  "sending duplicate emails to your subscribers."
1371
  msgstr ""
1372
 
1373
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:684
1374
  msgid " Upgrade to Email Subscribers PRO and select multiple lists."
1375
  msgstr ""
1376
 
1377
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:686
 
1378
  #, php-format
1379
  msgid ""
1380
  "Get a <b>10% flat discount</b> if you upgrade now!. <br /><br />Use coupon "
1381
  "code <b>PREMIUM10</b>"
1382
  msgstr ""
1383
 
1384
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:704
1385
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:720
1386
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:734
1387
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:764
1388
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:832
1389
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:94
1390
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:725
1391
  msgid "Premium"
1392
  msgstr ""
1393
 
1394
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:814
1395
  msgid ""
1396
  "Link Tracking, UTM Tracking and Scheduling Options are part of Email "
1397
  "Subscribers PRO"
1398
  msgstr ""
1399
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1400
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/class-email-subscribers-public.php:110
1401
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-subscription.php:420
1402
  msgid "Please enter email address"
@@ -1449,28 +1750,90 @@ msgstr ""
1449
  msgid "Are you sure you want to unsubscribe?"
1450
  msgstr ""
1451
 
1452
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:48
1453
- msgid "Sent on"
 
 
 
1454
  msgstr ""
1455
 
1456
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:55
 
 
 
 
 
 
 
 
 
 
 
 
1457
  msgid "In Queue"
1458
  msgstr ""
1459
 
1460
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:60
1461
- msgid "Started at"
1462
  msgstr ""
1463
 
1464
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:79
1465
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:136
1466
- msgid "Opens"
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1467
  msgstr ""
1468
 
1469
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:88
 
 
 
 
 
 
 
 
 
1470
  msgid "Clicks"
1471
  msgstr ""
1472
 
1473
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:97
 
 
 
 
 
 
 
 
1474
  msgid "Lost"
1475
  msgstr ""
1476
 
@@ -1515,18 +1878,10 @@ msgstr ""
1515
  msgid "Last 60 days"
1516
  msgstr ""
1517
 
1518
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:144
1519
- msgid " Avg Open Rate"
1520
- msgstr ""
1521
-
1522
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:152
1523
  msgid "Messages Sent"
1524
  msgstr ""
1525
 
1526
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:160
1527
- msgid "Avg Click Rate"
1528
- msgstr ""
1529
-
1530
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:193
1531
  msgid "Jump to: "
1532
  msgstr ""
@@ -1622,7 +1977,7 @@ msgstr ""
1622
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:539
1623
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:311
1624
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:92
1625
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:274
1626
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:294
1627
  msgid "Status"
1628
  msgstr ""
@@ -1929,7 +2284,7 @@ msgstr ""
1929
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:412
1930
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:449
1931
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:325
1932
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:272
1933
  msgid "Subject"
1934
  msgstr ""
1935
 
@@ -2167,12 +2522,6 @@ msgid ""
2167
  "Edit</a>"
2168
  msgstr ""
2169
 
2170
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:374
2171
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:401
2172
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:19
2173
- msgid "Report"
2174
- msgstr ""
2175
-
2176
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:405
2177
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:518
2178
  #, php-format
@@ -2182,7 +2531,7 @@ msgid ""
2182
  msgstr ""
2183
 
2184
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:535
2185
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:273
2186
  msgid "Type"
2187
  msgstr ""
2188
 
@@ -2284,7 +2633,7 @@ msgstr ""
2284
 
2285
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:271
2286
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:77
2287
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:277
2288
  msgid "Total Contacts"
2289
  msgstr ""
2290
 
@@ -2292,10 +2641,6 @@ msgstr ""
2292
  msgid "Last 60 Days"
2293
  msgstr ""
2294
 
2295
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:306
2296
- msgid "Opened"
2297
- msgstr ""
2298
-
2299
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:336
2300
  msgid " Add New Contact"
2301
  msgstr ""
@@ -2419,8 +2764,8 @@ msgstr ""
2419
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:993
2420
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:860
2421
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:569
2422
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:255
2423
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:339
2424
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:263
2425
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:324
2426
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/action.php:30
@@ -3035,20 +3380,12 @@ msgstr ""
3035
  msgid "Design Template"
3036
  msgstr ""
3037
 
3038
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:362
3039
- msgid "Recipients"
3040
- msgstr ""
3041
-
3042
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:372
3043
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:400
3044
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:256
3045
  msgid "Preview"
3046
  msgstr ""
3047
 
3048
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:375
3049
- msgid "Browser"
3050
- msgstr ""
3051
-
3052
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:386
3053
  msgid ""
3054
  "There could be a slight variation on how your customer will view the email "
@@ -3148,19 +3485,19 @@ msgstr ""
3148
  msgid "Save Campaign"
3149
  msgstr ""
3150
 
3151
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:42
3152
  #, php-format
3153
  msgid ""
3154
  "<a href='%s' class='px-4 py-2 ig-es-imp-button'>Send Queued Emails Now</a>"
3155
  msgstr ""
3156
 
3157
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:44
3158
  msgid ""
3159
  "<span class='ig-es-send-queue-emails button-disabled'>Send Queued Emails "
3160
  "Now</span>"
3161
  msgstr ""
3162
 
3163
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:45
3164
  msgid "<br /><span class='es-helper'>No emails found in queue</span>"
3165
  msgstr ""
3166
 
@@ -3180,59 +3517,67 @@ msgstr ""
3180
  msgid "Viewed Date"
3181
  msgstr ""
3182
 
3183
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:159
 
 
 
 
 
 
 
 
3184
  msgid "Viewed"
3185
  msgstr ""
3186
 
3187
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:159
3188
  msgid "Not yet viewed"
3189
  msgstr ""
3190
 
3191
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:172
3192
  msgid "No Reports avaliable."
3193
  msgstr ""
3194
 
3195
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:214
3196
  msgid "Completed"
3197
  msgstr ""
3198
 
3199
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:254
3200
  msgid "View"
3201
  msgstr ""
3202
 
3203
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:275
3204
  msgid "Start Date"
3205
  msgstr ""
3206
 
3207
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:276
3208
  msgid "End Date"
3209
  msgstr ""
3210
 
3211
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:443
3212
  msgid "You do not have permission to view notification"
3213
  msgstr ""
3214
 
3215
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:455
3216
  msgid "You do not have permission to delete notification"
3217
  msgstr ""
3218
 
3219
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:461
3220
  msgid "Report has been deleted successfully!"
3221
  msgstr ""
3222
 
3223
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:470
3224
  msgid "You do not have permission to preview notification"
3225
  msgstr ""
3226
 
3227
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:488
3228
  msgid "Reports have been deleted successfully!"
3229
  msgstr ""
3230
 
3231
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:500
3232
  msgid "Preview Email"
3233
  msgstr ""
3234
 
3235
- #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:503
3236
  msgid ""
3237
  "This is how the email you sent may look. <br>Note: Different email services "
3238
  "(like gmail, yahoo etc) display email content differently. So there could be "
3
  msgstr ""
4
  "Project-Id-Version: Email Subscribers & Newsletters\n"
5
  "Report-Msgid-Bugs-To: \n"
6
+ "POT-Creation-Date: 2020-07-06 20:05+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"
65
 
66
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:214
67
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:529
68
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:833
69
  msgid "Get Spam Score"
70
  msgstr ""
71
 
83
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:232
84
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:531
85
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-sequences.php:375
86
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:834
87
  msgid "Check"
88
  msgstr ""
89
 
137
  msgstr ""
138
 
139
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:580
140
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:721
141
  msgid "Link Tracking"
142
  msgstr ""
143
 
144
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:596
145
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:814
146
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:182
147
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:735
148
  msgid "UTM Tracking"
149
  msgstr ""
150
 
151
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:642
152
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:765
153
  msgid "Send Options"
154
  msgstr ""
155
 
156
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:645
157
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:768
158
  msgid "Schedule for Later"
159
  msgstr ""
160
 
161
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:658
162
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:774
163
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/fields/class-es-date.php:32
164
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/meta-box-timing.php:83
165
  msgid "Date"
166
  msgstr ""
167
 
168
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:669
169
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:783
170
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/fields/class-es-time.php:65
171
  msgid "Time"
172
  msgstr ""
173
 
174
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:680
175
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:793
176
  msgid "Local Time: "
177
  msgstr ""
178
 
182
 
183
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:708
184
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:717
185
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:705
186
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1117
187
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:563
188
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:181
189
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:706
190
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:958
196
  msgstr ""
197
 
198
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:712
199
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:709
200
  msgid "Enter email"
201
  msgstr ""
202
 
230
  msgstr ""
231
 
232
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-email-subscribers.php:806
233
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:162
234
  msgid "Track Clicks"
235
  msgstr ""
236
 
248
 
249
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/pro-class-post-digest.php:24
250
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1495
251
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:115
252
  msgid "Post Digest"
253
  msgstr ""
254
 
516
  msgstr ""
517
 
518
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:394
519
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:213
520
  msgid "Block Known Attackers"
521
  msgstr ""
522
 
523
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:395
524
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:214
525
  msgid ""
526
  "Stop known spam bot attacker domains from signing up. Keeps this list up-to-"
527
  "date with Icegram servers."
528
  msgstr ""
529
 
530
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:402
531
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:224
532
  msgid "Block Temporary / Fake Emails"
533
  msgstr ""
534
 
535
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:403
536
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:225
537
  msgid ""
538
  "Plenty of sites provide disposable / fake / temporary email addresses. "
539
  "People use them when they don't want to give you their real email. Block "
541
  msgstr ""
542
 
543
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:411
544
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:236
545
  msgid "Enable Captcha"
546
  msgstr ""
547
 
574
  msgstr ""
575
 
576
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:610
577
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:143
578
  msgid "User Roles"
579
  msgstr ""
580
 
581
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:631
582
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:83
583
  msgid "Roles"
584
  msgstr ""
585
 
586
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:632
587
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:223
588
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:223
589
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:84
590
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:66
591
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:142
592
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-import-subscribers.php:312
597
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:633
598
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:217
599
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:217
600
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:85
601
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:38
602
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:39
603
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:83
607
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:634
608
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:205
609
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:205
610
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:86
611
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:8
612
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:103
613
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:237
617
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:635
618
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:232
619
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:232
620
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:87
621
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:193
622
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:21
623
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:38
624
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:77
625
  msgid "Reports"
626
  msgstr ""
627
 
628
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:636
629
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:88
630
  msgid "Sequences"
631
  msgstr ""
632
 
633
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:637
634
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:195
635
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:195
636
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:89
637
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:54
638
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:150
639
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/class-es-workflow-admin-edit.php:184
649
  msgstr ""
650
 
651
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-email-subscribers.php:1123
652
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:612
653
  msgid "Show a captcha to protect from bot signups."
654
  msgstr ""
655
 
656
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:72
657
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:270
658
  msgid "Comments"
659
  msgstr ""
660
 
661
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:82
662
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:281
663
  msgid "WooCommerce"
664
  msgstr ""
665
 
666
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:91
667
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:330
668
  msgid "EDD"
669
  msgstr ""
670
 
671
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:100
672
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:291
673
  msgid "Contact Form 7"
674
  msgstr ""
675
 
676
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:109
677
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:300
678
  msgid "WPForms"
679
  msgstr ""
680
 
681
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:118
682
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:310
683
  msgid "Give"
684
  msgstr ""
685
 
686
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/starter/starter-class-es-integrations.php:127
687
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:320
688
  msgid "Ninja Forms"
689
  msgstr ""
690
 
886
  msgstr ""
887
 
888
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:185
889
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:952
890
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-form-widget.php:11
891
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-old-widget.php:11
892
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-old-widget.php:12
905
 
906
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/class-email-subscribers-admin.php:209
907
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1492
908
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:895
909
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:111
910
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:162
911
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:304
912
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:246
913
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:213
914
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:34
915
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:263
916
  msgid "Broadcast"
969
  msgid "OK, I Got it!"
970
  msgstr ""
971
 
972
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-email-subscribers.php:1061
973
  #, php-format
974
  msgid "%1$s in %2$s on line %3$s"
975
  msgstr ""
1085
  msgstr ""
1086
 
1087
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1493
1088
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:113
1089
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:158
1090
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:209
1091
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-templates-table.php:35
1092
  msgid "Post Notification"
1093
  msgstr ""
1098
  msgstr ""
1099
 
1100
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1548
1101
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:247
1102
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:460
1103
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:496
1104
  msgid "Sending"
1113
  msgstr ""
1114
 
1115
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-common.php:1550
1116
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:238
1117
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:282
1118
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:467
1119
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:515
1120
  msgid "Sent"
1121
  msgstr ""
1122
 
1123
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/class-es-install.php:795
1124
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/upgrade/es-update-functions.php:772
1125
  msgid ""
1126
  "Your subscription was successful! Kindly check your mailbox and confirm your "
1182
  msgid "Contact Us"
1183
  msgstr ""
1184
 
1185
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:168
1186
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:188
1187
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:243
1188
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:811
1189
  #, php-format
1190
  msgid "<a href='%s' target='_blank'>Upgrade to ES PRO</a>"
1191
  msgstr ""
1192
 
1193
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:169
1194
  msgid "Get insights about link clicks. See who are clicking on which links?"
1195
  msgstr ""
1196
 
1197
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:189
1198
  msgid "Get insights about UTM tracking."
1199
  msgstr ""
1200
 
1201
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:237
1202
  msgid "Show a captcha in subscription forms to protect from bot signups."
1203
  msgstr ""
1204
 
1205
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:244
1206
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:643
1207
  msgid "Secure your form and avoid spam signups with form Captcha"
1208
  msgstr ""
1209
 
1210
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:358
1211
  msgid "Sync Comment Users"
1212
  msgstr ""
1213
 
1214
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:359
1215
  msgid ""
1216
  "Quickly add to your mailing list when someone post a comment on your website."
1217
  msgstr ""
1218
 
 
 
 
 
 
 
 
 
 
 
1219
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:360
1220
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:389
1221
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:422
1223
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:486
1224
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:518
1225
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:550
1226
+ msgid "How to setup?"
1227
+ msgstr ""
1228
+
1229
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:361
1230
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:390
1231
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:423
1232
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:455
1233
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:487
1234
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:519
1235
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:551
1236
  msgid "Once you upgrade to "
1237
  msgstr ""
1238
 
1239
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:361
1240
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:364
1241
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:390
1242
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:423
1243
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:455
1244
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:487
1245
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:519
1246
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:551
1247
  msgid "Email Subscribers Starter"
1248
  msgstr ""
1249
 
1250
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:361
1251
  msgid ""
1252
  "you will have settings panel where you need to enable Comment user sync and "
1253
  "select the list in which you want to add people whenever someone post a\n"
1254
  "\t\tcomment."
1255
  msgstr ""
1256
 
1257
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:364
1258
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:394
1259
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:426
1260
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:458
1261
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:490
1262
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:522
1263
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:554
1264
  msgid "Checkout "
1265
  msgstr ""
1266
 
1267
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:364
1268
  msgid "now"
1269
  msgstr ""
1270
 
1271
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:387
1272
  msgid "Sync WooCommerce Customers"
1273
  msgstr ""
1274
 
1275
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:388
1276
  msgid ""
1277
  "Are you using WooCommerce for your online business? You can use this "
1278
  "integration to add to a specific list whenever someone make a purchase from "
1279
  "you"
1280
  msgstr ""
1281
 
1282
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:390
1283
  msgid ""
1284
  "you will have settings panel where you need to enable WooCommerce sync and "
1285
  "select the list in which you want to add people whenever they\n"
1287
  "\t\t\tfrom you."
1288
  msgstr ""
1289
 
1290
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:420
1291
  msgid "Sync Contact Form 7 users"
1292
  msgstr ""
1293
 
1294
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:421
1295
  msgid ""
1296
  "Are you using Contact Form 7 for your list building? You can use this "
1297
  "integration to add to a specific list whenever new subscribers added from "
1298
  "Contact Form 7"
1299
  msgstr ""
1300
 
1301
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:424
1302
  msgid ""
1303
  "you will have settings panel where you need to enable Contact form 7 sync "
1304
  "and select the list in which you want to add people whenever they fill any "
1305
  "of the Contact Form."
1306
  msgstr ""
1307
 
1308
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:452
1309
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:484
1310
  msgid "Sync Donors"
1311
  msgstr ""
1312
 
1313
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:453
1314
  msgid ""
1315
  "We found that you are using Give WordPress plugin to collect donations. Now, "
1316
  "with this integration, you can add your donors to any of your subscriber "
1317
  "list and send them Newsletters in future."
1318
  msgstr ""
1319
 
1320
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:456
1321
  msgid ""
1322
  "you will have settings panel where you need to enable Give integration and "
1323
  "select the list in which you want to add people whenever they make donation."
1324
  msgstr ""
1325
 
1326
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:485
1327
  msgid ""
1328
  "Are you using Give WordPress plugin to collect donations? Want to send Thank "
1329
  "You email to them? You can use this integration to be in touch with them."
1330
  msgstr ""
1331
 
1332
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:488
1333
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:520
1334
  msgid ""
1335
  "you will have settings panel where you need to enable Give sync and select "
1336
  "the list in which you want to add people whenever they make donation."
1337
  msgstr ""
1338
 
1339
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:516
1340
  msgid "Sync Contacts"
1341
  msgstr ""
1342
 
1343
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:517
1344
  msgid ""
1345
  "We found that you are using Ninja Forms. Want to add your contact to a "
1346
  "mailing list? You can use this integration to add your contact to add into "
1347
  "mailing list"
1348
  msgstr ""
1349
 
1350
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:548
1351
  msgid "Sync Customers"
1352
  msgstr ""
1353
 
1354
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:549
1355
  msgid ""
1356
  "We found that you are using EDD to sell digital goods online. You can use "
1357
  "this integration to send Newsletters/ Post Notifications to your customers."
1358
  msgstr ""
1359
 
1360
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:552
1361
  msgid ""
1362
  "you will have settings panel where you need to enable EDD sync and select "
1363
  "the list in which you want to add people whenever they purchase something "
1364
  "from you."
1365
  msgstr ""
1366
 
1367
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:645
1368
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:816
1369
  #, php-format
1370
  msgid ""
1371
  "Get <b>10% flat discount</b> if you upgrade now!. <br /><br />Use coupon "
1372
  "code <b>PREMIUM10</b>"
1373
  msgstr ""
1374
 
1375
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:683
1376
  msgid ""
1377
  "Get rid of setting Post Notifications for each list and avoid chances of "
1378
  "sending duplicate emails to your subscribers."
1379
  msgstr ""
1380
 
1381
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:685
1382
  msgid " Upgrade to Email Subscribers PRO and select multiple lists."
1383
  msgstr ""
1384
 
1385
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:687
1386
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:876
1387
  #, php-format
1388
  msgid ""
1389
  "Get a <b>10% flat discount</b> if you upgrade now!. <br /><br />Use coupon "
1390
  "code <b>PREMIUM10</b>"
1391
  msgstr ""
1392
 
1393
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:705
1394
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:721
1395
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:735
1396
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:765
1397
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:833
1398
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:94
1399
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:725
1400
  msgid "Premium"
1401
  msgstr ""
1402
 
1403
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:815
1404
  msgid ""
1405
  "Link Tracking, UTM Tracking and Scheduling Options are part of Email "
1406
  "Subscribers PRO"
1407
  msgstr ""
1408
 
1409
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:874
1410
+ msgid ""
1411
+ "Get campaign insights like geo location, device info, email client info, "
1412
+ "open/ click activity etc with Email Subscribers PRO."
1413
+ msgstr ""
1414
+
1415
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:886
1416
+ msgid "Campaign Details"
1417
+ msgstr ""
1418
+
1419
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:891
1420
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:362
1421
+ msgid "Recipients"
1422
+ msgstr ""
1423
+
1424
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:895
1425
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:222
1426
+ msgid "Type: "
1427
+ msgstr ""
1428
+
1429
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:897
1430
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:224
1431
+ msgid "From: "
1432
+ msgstr ""
1433
+
1434
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:897
1435
+ msgid "hello@icegram.com"
1436
+ msgstr ""
1437
+
1438
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:902
1439
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:229
1440
+ msgid "List(s): "
1441
+ msgstr ""
1442
+
1443
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:902
1444
+ msgid "Test, Main "
1445
+ msgstr ""
1446
+
1447
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:904
1448
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:231
1449
+ msgid "Subject: "
1450
+ msgstr ""
1451
+
1452
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:909
1453
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:236
1454
+ msgid "Status: "
1455
+ msgstr ""
1456
+
1457
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:915
1458
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:251
1459
+ msgid "Date: "
1460
+ msgstr ""
1461
+
1462
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:915
1463
+ msgid "July 1, 2020 10:00 AM"
1464
+ msgstr ""
1465
+
1466
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:921
1467
+ msgid "Open and click activity"
1468
+ msgstr ""
1469
+
1470
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:930
1471
+ msgid "Country Opens"
1472
+ msgstr ""
1473
+
1474
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:933
1475
+ msgid "Device Opens"
1476
+ msgstr ""
1477
+
1478
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:942
1479
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:321
1480
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:562
1481
+ msgid "Country"
1482
+ msgstr ""
1483
+
1484
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:945
1485
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1002
1486
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:324
1487
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:421
1488
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:729
1489
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:78
1490
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:136
1491
+ msgid "Opens"
1492
+ msgstr ""
1493
+
1494
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:952
1495
+ msgid "United States"
1496
+ msgstr ""
1497
+
1498
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:960
1499
+ msgid "Australia"
1500
+ msgstr ""
1501
+
1502
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:968
1503
+ msgid "Spain"
1504
+ msgstr ""
1505
+
1506
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:976
1507
+ msgid "France"
1508
+ msgstr ""
1509
+
1510
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:984
1511
+ msgid "Russia"
1512
+ msgstr ""
1513
+
1514
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:999
1515
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1118
1516
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:418
1517
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:564
1518
+ msgid "Device"
1519
+ msgstr ""
1520
+
1521
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1010
1522
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1226
1523
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1379
1524
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:437
1525
+ msgid "Desktop"
1526
+ msgstr ""
1527
+
1528
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1021
1529
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1195
1530
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1257
1531
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1348
1532
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1410
1533
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:454
1534
+ msgid "Mobile"
1535
+ msgstr ""
1536
+
1537
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1032
1538
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:445
1539
+ msgid "Tablet"
1540
+ msgstr ""
1541
+
1542
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1049
1543
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:493
1544
+ msgid "Link Activity"
1545
+ msgstr ""
1546
+
1547
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1056
1548
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:500
1549
+ msgid "Link (URL)"
1550
+ msgstr ""
1551
+
1552
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1058
1553
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:502
1554
+ msgid "Unique Clicks"
1555
+ msgstr ""
1556
+
1557
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1060
1558
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:504
1559
+ msgid "Total Clicks"
1560
+ msgstr ""
1561
+
1562
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1068
1563
+ msgid "https://www.icegram.com/automate-workflow-and-reduce-chaos/"
1564
+ msgstr ""
1565
+
1566
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1081
1567
+ msgid "https://www.icegram.com/how-to-keep-email-out-of-spam-folder/"
1568
+ msgstr ""
1569
+
1570
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1110
1571
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:554
1572
+ msgid "Last 10 Open Activity"
1573
+ msgstr ""
1574
+
1575
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1119
1576
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:565
1577
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:375
1578
+ msgid "Browser"
1579
+ msgstr ""
1580
+
1581
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1120
1582
+ msgid "Client"
1583
+ msgstr ""
1584
+
1585
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1121
1586
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:567
1587
+ msgid "OS"
1588
+ msgstr ""
1589
+
1590
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1129
1591
+ msgid "bernardlane@gmail.com"
1592
+ msgstr ""
1593
+
1594
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1142
1595
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1295
1596
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1448
1597
+ msgid "Mozilla Firefox"
1598
+ msgstr ""
1599
+
1600
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1147
1601
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1177
1602
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1300
1603
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1330
1604
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1453
1605
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1483
1606
+ msgid "Gmail"
1607
+ msgstr ""
1608
+
1609
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1152
1610
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1182
1611
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1244
1612
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1305
1613
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1335
1614
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1397
1615
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1458
1616
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1488
1617
+ msgid "Windows"
1618
+ msgstr ""
1619
+
1620
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1159
1621
+ msgid "john@gmail.com"
1622
+ msgstr ""
1623
+
1624
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1172
1625
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1325
1626
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1478
1627
+ msgid "Google Chrome"
1628
+ msgstr ""
1629
+
1630
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1189
1631
+ msgid "pasha@gmail.com"
1632
+ msgstr ""
1633
+
1634
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1203
1635
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1213
1636
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1265
1637
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1275
1638
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1356
1639
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1366
1640
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1418
1641
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1428
1642
+ msgid "Android"
1643
+ msgstr ""
1644
+
1645
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1208
1646
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1270
1647
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1361
1648
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1423
1649
+ msgid "Gmail App (Android)"
1650
+ msgstr ""
1651
+
1652
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1220
1653
+ msgid "mark@twone.com"
1654
+ msgstr ""
1655
+
1656
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1234
1657
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1387
1658
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:650
1659
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:657
1660
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:663
1661
+ msgid "Unknown"
1662
+ msgstr ""
1663
+
1664
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1239
1665
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1392
1666
+ msgid "Thunderbird"
1667
+ msgstr ""
1668
+
1669
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1251
1670
+ msgid "smith@gmail.com"
1671
+ msgstr ""
1672
+
1673
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1282
1674
+ msgid "bradtke@gmail.com"
1675
+ msgstr ""
1676
+
1677
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1312
1678
+ msgid "bveum@gmail.com"
1679
+ msgstr ""
1680
+
1681
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1342
1682
+ msgid "tracy@gmail.com"
1683
+ msgstr ""
1684
+
1685
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1373
1686
+ msgid "domenick52@twone.com"
1687
+ msgstr ""
1688
+
1689
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1404
1690
+ msgid "stanton@gmail.com"
1691
+ msgstr ""
1692
+
1693
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1435
1694
+ msgid "alessia@gmail.com"
1695
+ msgstr ""
1696
+
1697
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/pro-features.php:1465
1698
+ msgid "finn.lynch@gmail.com"
1699
+ msgstr ""
1700
+
1701
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/public/class-email-subscribers-public.php:110
1702
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-handle-subscription.php:420
1703
  msgid "Please enter email address"
1750
  msgid "Are you sure you want to unsubscribe?"
1751
  msgstr ""
1752
 
1753
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:211
1754
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:374
1755
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:401
1756
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:20
1757
+ msgid "Report"
1758
  msgstr ""
1759
 
1760
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:218
1761
+ #, php-format
1762
+ msgid "%d "
1763
+ msgid_plural "%d"
1764
+ msgstr[0] ""
1765
+ msgstr[1] ""
1766
+
1767
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:218
1768
+ msgid " Recipients"
1769
+ msgstr ""
1770
+
1771
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:242
1772
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:54
1773
  msgid "In Queue"
1774
  msgstr ""
1775
 
1776
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:258
1777
+ msgid "Statistics"
1778
  msgstr ""
1779
 
1780
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:266
1781
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:306
1782
+ msgid "Opened"
1783
+ msgstr ""
1784
+
1785
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:274
1786
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:144
1787
+ msgid " Avg Open Rate"
1788
+ msgstr ""
1789
+
1790
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:290
1791
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:160
1792
+ msgid "Avg Click Rate"
1793
+ msgstr ""
1794
+
1795
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:301
1796
+ msgid "Open and Click activity"
1797
+ msgstr ""
1798
+
1799
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:309
1800
+ msgid "Country Info"
1801
+ msgstr ""
1802
+
1803
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:312
1804
+ msgid "Device Info"
1805
+ msgstr ""
1806
+
1807
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:384
1808
+ msgid "No country data found."
1809
+ msgstr ""
1810
+
1811
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:475
1812
+ msgid "No device data found."
1813
  msgstr ""
1814
 
1815
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:566
1816
+ msgid "Mail Client"
1817
+ msgstr ""
1818
+
1819
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:677
1820
+ msgid "No open activity found."
1821
+ msgstr ""
1822
+
1823
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/classes/class-es-pro-reports-data.php:734
1824
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:87
1825
  msgid "Clicks"
1826
  msgstr ""
1827
 
1828
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:47
1829
+ msgid "Sent on"
1830
+ msgstr ""
1831
+
1832
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:59
1833
+ msgid "Started at"
1834
+ msgstr ""
1835
+
1836
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/pro/partials/es-dashboard.php:96
1837
  msgid "Lost"
1838
  msgstr ""
1839
 
1878
  msgid "Last 60 days"
1879
  msgstr ""
1880
 
 
 
 
 
1881
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:152
1882
  msgid "Messages Sent"
1883
  msgstr ""
1884
 
 
 
 
 
1885
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/admin/partials/dashboard.php:193
1886
  msgid "Jump to: "
1887
  msgstr ""
1977
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:539
1978
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:311
1979
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:92
1980
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:291
1981
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:294
1982
  msgid "Status"
1983
  msgstr ""
2284
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:412
2285
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-admin-settings.php:449
2286
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:325
2287
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:289
2288
  msgid "Subject"
2289
  msgstr ""
2290
 
2522
  "Edit</a>"
2523
  msgstr ""
2524
 
 
 
 
 
 
 
2525
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:405
2526
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:518
2527
  #, php-format
2531
  msgstr ""
2532
 
2533
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-campaigns-table.php:535
2534
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:290
2535
  msgid "Type"
2536
  msgstr ""
2537
 
2633
 
2634
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:271
2635
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-export-subscribers.php:77
2636
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:294
2637
  msgid "Total Contacts"
2638
  msgstr ""
2639
 
2641
  msgid "Last 60 Days"
2642
  msgstr ""
2643
 
 
 
 
 
2644
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:336
2645
  msgid " Add New Contact"
2646
  msgstr ""
2764
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-contacts-table.php:993
2765
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-forms-table.php:860
2766
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-lists-table.php:569
2767
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:272
2768
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:356
2769
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:263
2770
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/class-es-workflows-table.php:324
2771
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/workflows/admin/views/action.php:30
3380
  msgid "Design Template"
3381
  msgstr ""
3382
 
 
 
 
 
3383
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:372
3384
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:400
3385
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:273
3386
  msgid "Preview"
3387
  msgstr ""
3388
 
 
 
 
 
3389
  #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-newsletters.php:386
3390
  msgid ""
3391
  "There could be a slight variation on how your customer will view the email "
3485
  msgid "Save Campaign"
3486
  msgstr ""
3487
 
3488
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:43
3489
  #, php-format
3490
  msgid ""
3491
  "<a href='%s' class='px-4 py-2 ig-es-imp-button'>Send Queued Emails Now</a>"
3492
  msgstr ""
3493
 
3494
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:45
3495
  msgid ""
3496
  "<span class='ig-es-send-queue-emails button-disabled'>Send Queued Emails "
3497
  "Now</span>"
3498
  msgstr ""
3499
 
3500
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:46
3501
  msgid "<br /><span class='es-helper'>No emails found in queue</span>"
3502
  msgstr ""
3503
 
3517
  msgid "Viewed Date"
3518
  msgstr ""
3519
 
3520
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:116
3521
+ msgid "View Activity "
3522
+ msgstr ""
3523
+
3524
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:119
3525
+ msgid "Campaign Analytics"
3526
+ msgstr ""
3527
+
3528
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:176
3529
  msgid "Viewed"
3530
  msgstr ""
3531
 
3532
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:176
3533
  msgid "Not yet viewed"
3534
  msgstr ""
3535
 
3536
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:189
3537
  msgid "No Reports avaliable."
3538
  msgstr ""
3539
 
3540
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:231
3541
  msgid "Completed"
3542
  msgstr ""
3543
 
3544
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:271
3545
  msgid "View"
3546
  msgstr ""
3547
 
3548
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:292
3549
  msgid "Start Date"
3550
  msgstr ""
3551
 
3552
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:293
3553
  msgid "End Date"
3554
  msgstr ""
3555
 
3556
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:460
3557
  msgid "You do not have permission to view notification"
3558
  msgstr ""
3559
 
3560
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:472
3561
  msgid "You do not have permission to delete notification"
3562
  msgstr ""
3563
 
3564
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:478
3565
  msgid "Report has been deleted successfully!"
3566
  msgstr ""
3567
 
3568
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:487
3569
  msgid "You do not have permission to preview notification"
3570
  msgstr ""
3571
 
3572
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:505
3573
  msgid "Reports have been deleted successfully!"
3574
  msgstr ""
3575
 
3576
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:517
3577
  msgid "Preview Email"
3578
  msgstr ""
3579
 
3580
+ #: ../../../../../repositories/GitLab/icegram/email-subscribers/lite/includes/classes/class-es-reports-table.php:520
3581
  msgid ""
3582
  "This is how the email you sent may look. <br>Note: Different email services "
3583
  "(like gmail, yahoo etc) display email content differently. So there could be "
readme.txt CHANGED
@@ -6,7 +6,7 @@ Tags: email marketing, subscription, autoresponder, post notification, welcome e
6
  Requires at least: 3.9
7
  Tested up to: 5.4.2
8
  Requires PHP: 5.6
9
- Stable tag: 4.4.10.1
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses
12
 
@@ -67,7 +67,8 @@ Email Subscribers is a fully-featured subscription plugin specially created keep
67
  > 👉 **Offer & promotional email templates** - High converting ready-to-use templates for any occasion, events or holiday season.
68
  > 👉 **New blog post notification email templates** - Awesome templates that will encourage contacts to read your blog post
69
  > 👉 **Automatic Background Sending**
70
- > 👉 **Active Contacts Growth, Campaigns Reports**
 
71
  > 👉 **Connect with SMTP / Email Sending Services**
72
  > 👉 **Email Open Tracking**
73
  > 👉 **Link Tracking**
@@ -301,6 +302,10 @@ Refer [here](https://www.icegram.com/documentation/es-faq/).
301
 
302
  == Changelog ==
303
 
 
 
 
 
304
  **4.4.10.1 (02.07.2020)**
305
 
306
  * Fix: Call to undefined method ES_Install::get_441_schema()
6
  Requires at least: 3.9
7
  Tested up to: 5.4.2
8
  Requires PHP: 5.6
9
+ Stable tag: 4.5.0
10
  License: GPLv3
11
  License URI: http://www.gnu.org/licenses
12
 
67
  > 👉 **Offer & promotional email templates** - High converting ready-to-use templates for any occasion, events or holiday season.
68
  > 👉 **New blog post notification email templates** - Awesome templates that will encourage contacts to read your blog post
69
  > 👉 **Automatic Background Sending**
70
+ > 👉 **Active Contacts Growth**
71
+ > 👉 **Advance Campaign Reports**
72
  > 👉 **Connect with SMTP / Email Sending Services**
73
  > 👉 **Email Open Tracking**
74
  > 👉 **Link Tracking**
302
 
303
  == Changelog ==
304
 
305
+ **4.5.0 (07.07.2020)**
306
+
307
+ * New: Advance Campaign Reports [PRO]
308
+
309
  **4.4.10.1 (02.07.2020)**
310
 
311
  * Fix: Call to undefined method ES_Install::get_441_schema()