Version Description
(23.04.2019) = * New : New keywords added : {{TOTAL-CONTACTC}} , {{SITEURL}}, {{SITENAME}} * New : Added option to enable/ disable WordPress Cron for Email Subscribers * New : Added option to enable/ disable email open tracking * Fix : Database error while sorting list * Fix : Incorrect viewed and sent dates in report details
Download this release
Release Info
Developer | Icegram |
Plugin | Email Subscribers & Newsletters |
Version | 4.0.16 |
Comparing to | |
See all releases |
Code changes from version 4.0.15 to 4.0.16
- admin/class-email-subscribers-admin.php +1 -6
- admin/css/email-subscribers-admin.css +22 -12
- admin/images/hot-cakes.png +0 -0
- admin/js/email-subscribers-admin.js +44 -12
- email-subscribers.php +2 -2
- includes/admin/class-es-admin-settings.php +39 -4
- includes/admin/class-es-campaigns-table.php +3 -3
- includes/admin/class-es-cron.php +3 -3
- includes/admin/class-es-forms-table.php +3 -3
- includes/admin/class-es-handle-subscription.php +0 -5
- includes/admin/class-es-import-subscribers.php +0 -1
- includes/admin/class-es-lists-table.php +2 -3
- includes/admin/class-es-reports-table.php +2 -2
- includes/admin/class-es-tools.php +21 -152
- includes/class-email-subscribers.php +24 -17
- includes/class-es-common.php +9 -0
- includes/class-es-install.php +4 -2
- includes/class-es-mailer.php +19 -6
- public/class-email-subscribers-public.php +4 -0
- readme.txt +9 -1
admin/class-email-subscribers-admin.php
CHANGED
@@ -144,7 +144,6 @@ class Email_Subscribers_Admin {
|
|
144 |
add_submenu_page( 'es_dashboard', __( 'Campaigns', 'email-subscribers' ), __( 'Campaigns', 'email-subscribers' ), 'edit_posts', 'es_campaigns', array( $this, 'load_campaigns' ) );
|
145 |
add_submenu_page( 'es_dashboard', __( 'Settings', 'email-subscribers' ), __( 'Settings', 'email-subscribers' ), 'edit_posts', 'es_settings', array( $this, 'load_settings' ) );
|
146 |
add_submenu_page( 'es_dashboard', __( 'Forms', 'email-subscribers' ), __( 'Forms', 'email-subscribers' ), 'edit_posts', 'es_forms', array( $this, 'load_forms' ) );
|
147 |
-
add_submenu_page( 'es_dashboard', __( 'Tools', 'email-subscribers' ), __( 'Tools', 'email-subscribers' ), 'edit_posts', 'es_tools', array( $this, 'load_tools' ) );
|
148 |
add_submenu_page( null, __( 'Template Preview', 'email-subscribers' ), __( 'Template Preview', 'email-subscribers' ), 'edit_posts', 'es_template_preview', array( $this, 'load_preview' ) );
|
149 |
}
|
150 |
|
@@ -156,6 +155,7 @@ class Email_Subscribers_Admin {
|
|
156 |
new ES_Import_Subscribers();
|
157 |
ES_Info::get_instance();
|
158 |
ES_Newsletters::get_instance();
|
|
|
159 |
}
|
160 |
|
161 |
// Function for Klawoo's Subscribe form on Help & Info page
|
@@ -247,11 +247,6 @@ class Email_Subscribers_Admin {
|
|
247 |
$preview->es_template_preview_callback();
|
248 |
}
|
249 |
|
250 |
-
public function load_tools() {
|
251 |
-
$tools = ES_Tools::get_instance();
|
252 |
-
$tools->es_tools_settings_callback();
|
253 |
-
}
|
254 |
-
|
255 |
public function do_send( $data ) {
|
256 |
|
257 |
$to_email = $data['to_email'];
|
144 |
add_submenu_page( 'es_dashboard', __( 'Campaigns', 'email-subscribers' ), __( 'Campaigns', 'email-subscribers' ), 'edit_posts', 'es_campaigns', array( $this, 'load_campaigns' ) );
|
145 |
add_submenu_page( 'es_dashboard', __( 'Settings', 'email-subscribers' ), __( 'Settings', 'email-subscribers' ), 'edit_posts', 'es_settings', array( $this, 'load_settings' ) );
|
146 |
add_submenu_page( 'es_dashboard', __( 'Forms', 'email-subscribers' ), __( 'Forms', 'email-subscribers' ), 'edit_posts', 'es_forms', array( $this, 'load_forms' ) );
|
|
|
147 |
add_submenu_page( null, __( 'Template Preview', 'email-subscribers' ), __( 'Template Preview', 'email-subscribers' ), 'edit_posts', 'es_template_preview', array( $this, 'load_preview' ) );
|
148 |
}
|
149 |
|
155 |
new ES_Import_Subscribers();
|
156 |
ES_Info::get_instance();
|
157 |
ES_Newsletters::get_instance();
|
158 |
+
ES_Tools::get_instance();
|
159 |
}
|
160 |
|
161 |
// Function for Klawoo's Subscribe form on Help & Info page
|
247 |
$preview->es_template_preview_callback();
|
248 |
}
|
249 |
|
|
|
|
|
|
|
|
|
|
|
250 |
public function do_send( $data ) {
|
251 |
|
252 |
$to_email = $data['to_email'];
|
admin/css/email-subscribers-admin.css
CHANGED
@@ -1,19 +1,19 @@
|
|
1 |
-
#email_tabs_form div#tabs {
|
2 |
margin-top: 20px;
|
3 |
padding: 0;
|
4 |
}
|
5 |
|
6 |
-
#email_tabs_form div#tabs div#menu-tab-listing {
|
7 |
width: 20%;
|
8 |
float: left;
|
9 |
}
|
10 |
|
11 |
-
#email_tabs_form div#tabs div#menu-tab-content {
|
12 |
width: 75%;
|
13 |
float: left;
|
14 |
}
|
15 |
|
16 |
-
#email_tabs_form div#tabs div#menu-tab-listing ul {
|
17 |
width: 100%;
|
18 |
display: block;
|
19 |
background: #f3f6ff;
|
@@ -24,7 +24,7 @@
|
|
24 |
border-bottom: 1px solid #CCC;
|
25 |
}
|
26 |
|
27 |
-
#email_tabs_form div#tabs div#menu-tab-listing ul li {
|
28 |
width: 100%;
|
29 |
display: block;
|
30 |
border-radius: 0px;
|
@@ -34,20 +34,20 @@
|
|
34 |
border-bottom: 1px solid #CCC;
|
35 |
}
|
36 |
|
37 |
-
#email_tabs_form div#tabs div#menu-tab-listing ul li a {
|
38 |
padding: 20px 10px;
|
39 |
width: 90%;
|
40 |
font-size: 16px;
|
41 |
}
|
42 |
|
43 |
-
#email_tabs_form div#tabs div#menu-tab-content h1 {
|
44 |
width: auto;
|
45 |
display: block;
|
46 |
border-bottom: 1px solid #CCC;
|
47 |
padding: 15px 20px;
|
48 |
}
|
49 |
|
50 |
-
#email_tabs_form div#tabs div#menu-tab-content h2 {
|
51 |
border-bottom: 1px solid #CCC;
|
52 |
margin: 0px;
|
53 |
padding: 10px 0;
|
@@ -263,11 +263,11 @@ div#post-body-content .meta-box-sortables .row-blog p.submit input#submit {
|
|
263 |
background-color: #3ad01e;
|
264 |
}
|
265 |
|
266 |
-
#email_tabs_form div#tabs {
|
267 |
clear: both;
|
268 |
}
|
269 |
|
270 |
-
#email_tabs_form div#tabs div#menu-tab-content h1 {
|
271 |
padding: 14px;
|
272 |
}
|
273 |
|
@@ -427,9 +427,9 @@ p.search-box.box-ma10 {
|
|
427 |
box-shadow: 0 0 7px 0 rgba(0, 0, 0, .2);
|
428 |
}
|
429 |
|
430 |
-
|
431 |
width: 350px !important;
|
432 |
-
}
|
433 |
|
434 |
.es-ltr {
|
435 |
width: 20em;
|
@@ -884,4 +884,14 @@ h5.es-badge {
|
|
884 |
|
885 |
@keyframes beat{
|
886 |
to { transform: scale(1.1); }
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
887 |
}
|
1 |
+
#email_tabs_form div#es-settings-tabs {
|
2 |
margin-top: 20px;
|
3 |
padding: 0;
|
4 |
}
|
5 |
|
6 |
+
#email_tabs_form div#es-settings-tabs div#menu-tab-listing {
|
7 |
width: 20%;
|
8 |
float: left;
|
9 |
}
|
10 |
|
11 |
+
#email_tabs_form div#es-settings-tabs div#menu-tab-content {
|
12 |
width: 75%;
|
13 |
float: left;
|
14 |
}
|
15 |
|
16 |
+
#email_tabs_form div#es-settings-tabs div#menu-tab-listing ul {
|
17 |
width: 100%;
|
18 |
display: block;
|
19 |
background: #f3f6ff;
|
24 |
border-bottom: 1px solid #CCC;
|
25 |
}
|
26 |
|
27 |
+
#email_tabs_form div#es-settings-tabs div#menu-tab-listing ul li {
|
28 |
width: 100%;
|
29 |
display: block;
|
30 |
border-radius: 0px;
|
34 |
border-bottom: 1px solid #CCC;
|
35 |
}
|
36 |
|
37 |
+
#email_tabs_form div#es-settings-tabs div#menu-tab-listing ul li a {
|
38 |
padding: 20px 10px;
|
39 |
width: 90%;
|
40 |
font-size: 16px;
|
41 |
}
|
42 |
|
43 |
+
#email_tabs_form div#es-settings-tabs div#menu-tab-content h1 {
|
44 |
width: auto;
|
45 |
display: block;
|
46 |
border-bottom: 1px solid #CCC;
|
47 |
padding: 15px 20px;
|
48 |
}
|
49 |
|
50 |
+
#email_tabs_form div#es-settings-tabs div#menu-tab-content h2 {
|
51 |
border-bottom: 1px solid #CCC;
|
52 |
margin: 0px;
|
53 |
padding: 10px 0;
|
263 |
background-color: #3ad01e;
|
264 |
}
|
265 |
|
266 |
+
#email_tabs_form div#es-settings-tabs {
|
267 |
clear: both;
|
268 |
}
|
269 |
|
270 |
+
#email_tabs_form div#es-settings-tabs div#menu-tab-content h1 {
|
271 |
padding: 14px;
|
272 |
}
|
273 |
|
427 |
box-shadow: 0 0 7px 0 rgba(0, 0, 0, .2);
|
428 |
}
|
429 |
|
430 |
+
/*.form-table th {
|
431 |
width: 350px !important;
|
432 |
+
}*/
|
433 |
|
434 |
.es-ltr {
|
435 |
width: 20em;
|
884 |
|
885 |
@keyframes beat{
|
886 |
to { transform: scale(1.1); }
|
887 |
+
}
|
888 |
+
|
889 |
+
#es-test-email{
|
890 |
+
width: 60%;
|
891 |
+
margin-right: 0.7em;
|
892 |
+
}
|
893 |
+
.es_spinner_image_admin img{
|
894 |
+
height: 20px;
|
895 |
+
margin-left: 0.3em;
|
896 |
+
vertical-align: middle;
|
897 |
}
|
admin/images/hot-cakes.png
ADDED
Binary file
|
admin/js/email-subscribers-admin.js
CHANGED
@@ -2,26 +2,26 @@
|
|
2 |
|
3 |
$(document).ready(
|
4 |
function () {
|
5 |
-
$(document).on('change', '.es_visible', function() {
|
6 |
-
if($('.es_visible:checked').length >= 1){
|
7 |
$('.es_required').prop('disabled', false);
|
8 |
-
}else{
|
9 |
$('.es_required').prop('disabled', true);
|
10 |
}
|
11 |
});
|
12 |
$('.es_visible').change();
|
13 |
|
14 |
-
$('#tabs').tabs().addClass('ui-tabs-vertical ui-helper-clearfix');
|
15 |
|
16 |
-
var defaultHeight = $('div#tabs div#menu-tab-content div#tabs-1').height() + 30;
|
17 |
-
$('div#tabs div#menu-tab-listing ul').height(defaultHeight);
|
18 |
|
19 |
// Set Tab Height
|
20 |
$('.ui-tabs-anchor').click(function () {
|
21 |
var tab = $(this).attr('href');
|
22 |
$('#email_tabs_form').attr('action', tab);
|
23 |
-
var tabHight = $('div#tabs div#menu-tab-content div' + tab).height() + 30;
|
24 |
-
$('div#tabs div#menu-tab-listing ul').height(tabHight);
|
25 |
});
|
26 |
|
27 |
if (jQuery('.statusesselect').length) {
|
@@ -39,7 +39,7 @@
|
|
39 |
// jQuery(".es-audience-view .bulkactions #bulk-action-selector-bottom").after(groupselect);
|
40 |
|
41 |
jQuery("#bulk-action-selector-top").change(function () {
|
42 |
-
if (jQuery('option:selected', this).attr('value') == 'bulk_list_update' || jQuery('option:selected', this).attr('value') == 'bulk_list_add'
|
43 |
jQuery('.groupsselect').eq(1).show();
|
44 |
jQuery('.statusesselect').eq(1).hide();
|
45 |
} else if (jQuery('option:selected', this).attr('value') == 'bulk_status_update') {
|
@@ -53,15 +53,47 @@
|
|
53 |
|
54 |
jQuery('.es-audience-view .tablenav.bottom #bulk-action-selector-bottom').hide();
|
55 |
jQuery('.es-audience-view .tablenav.bottom #doaction2').hide();
|
56 |
-
jQuery(document).on(
|
57 |
var img = jQuery('option:selected', this).data('img')
|
58 |
jQuery('.es-templ-img').html(img);
|
59 |
});
|
60 |
|
61 |
-
var removeSubmenu = [
|
62 |
-
$.each(removeSubmenu, function(key, id) {
|
63 |
$("#" + id).parent('a').parent('li').hide();
|
64 |
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
65 |
});
|
66 |
|
67 |
|
2 |
|
3 |
$(document).ready(
|
4 |
function () {
|
5 |
+
$(document).on('change', '.es_visible', function () {
|
6 |
+
if ($('.es_visible:checked').length >= 1) {
|
7 |
$('.es_required').prop('disabled', false);
|
8 |
+
} else {
|
9 |
$('.es_required').prop('disabled', true);
|
10 |
}
|
11 |
});
|
12 |
$('.es_visible').change();
|
13 |
|
14 |
+
$('#es-settings-tabs').tabs().addClass('ui-tabs-vertical ui-helper-clearfix');
|
15 |
|
16 |
+
var defaultHeight = $('div#es-settings-tabs div#menu-tab-content div#tabs-1').height() + 30;
|
17 |
+
$('div#es-settings-tabs div#menu-tab-listing ul').height(defaultHeight);
|
18 |
|
19 |
// Set Tab Height
|
20 |
$('.ui-tabs-anchor').click(function () {
|
21 |
var tab = $(this).attr('href');
|
22 |
$('#email_tabs_form').attr('action', tab);
|
23 |
+
var tabHight = $('div#es-settings-tabs div#menu-tab-content div' + tab).height() + 30;
|
24 |
+
$('div#es-settings-tabs div#menu-tab-listing ul').height(tabHight);
|
25 |
});
|
26 |
|
27 |
if (jQuery('.statusesselect').length) {
|
39 |
// jQuery(".es-audience-view .bulkactions #bulk-action-selector-bottom").after(groupselect);
|
40 |
|
41 |
jQuery("#bulk-action-selector-top").change(function () {
|
42 |
+
if (jQuery('option:selected', this).attr('value') == 'bulk_list_update' || jQuery('option:selected', this).attr('value') == 'bulk_list_add') {
|
43 |
jQuery('.groupsselect').eq(1).show();
|
44 |
jQuery('.statusesselect').eq(1).hide();
|
45 |
} else if (jQuery('option:selected', this).attr('value') == 'bulk_status_update') {
|
53 |
|
54 |
jQuery('.es-audience-view .tablenav.bottom #bulk-action-selector-bottom').hide();
|
55 |
jQuery('.es-audience-view .tablenav.bottom #doaction2').hide();
|
56 |
+
jQuery(document).on('change', "#base_template_id", function () {
|
57 |
var img = jQuery('option:selected', this).data('img')
|
58 |
jQuery('.es-templ-img').html(img);
|
59 |
});
|
60 |
|
61 |
+
var removeSubmenu = ['ig-es-broadcast', 'ig-es-lists', 'ig-es-post-notifications'];
|
62 |
+
$.each(removeSubmenu, function (key, id) {
|
63 |
$("#" + id).parent('a').parent('li').hide();
|
64 |
});
|
65 |
+
|
66 |
+
//send test emails
|
67 |
+
$(document).on('click', '#es-send-test', function (e) {
|
68 |
+
e.preventDefault();
|
69 |
+
var test_email = $('#es-test-email').val();
|
70 |
+
var params = {};
|
71 |
+
params.es_test_email = test_email;
|
72 |
+
params.action = 'es_send_test_email';
|
73 |
+
if (test_email) {
|
74 |
+
$('#es-send-test').next('#spinner-image').show();
|
75 |
+
jQuery.ajax({
|
76 |
+
method: 'POST',
|
77 |
+
url: ajaxurl,
|
78 |
+
data: params,
|
79 |
+
dataType: 'json',
|
80 |
+
success: function (response) {
|
81 |
+
if (response && typeof response.status !== 'undefined' && response.status === "success") {
|
82 |
+
$('#es-send-test').parent().find('.helper').html('<span style="color:green">' + response.message + '</span>');
|
83 |
+
}
|
84 |
+
|
85 |
+
$('#es-send-test').next('#spinner-image').hide();
|
86 |
+
},
|
87 |
+
|
88 |
+
error: function(err) {
|
89 |
+
$('#es-send-test').next('#spinner-image').hide();
|
90 |
+
}
|
91 |
+
});
|
92 |
+
} else {
|
93 |
+
confirm('Add test email ');
|
94 |
+
}
|
95 |
+
|
96 |
+
});
|
97 |
});
|
98 |
|
99 |
|
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.0.
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
@@ -24,7 +24,7 @@ if ( ! defined( 'WPINC' ) ) {
|
|
24 |
* Define constants
|
25 |
*/
|
26 |
define( 'ES_PLUGIN_DIR', dirname( __FILE__ ) );
|
27 |
-
define( 'ES_PLUGIN_VERSION', '4.0.
|
28 |
define( 'ES_PLUGIN_BASE_NAME', plugin_basename( __FILE__ ) );
|
29 |
|
30 |
if ( ! defined( 'ES_PLUGIN_FILE' ) ) {
|
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.0.16
|
7 |
* Author: Icegram
|
8 |
* Author URI: https://www.icegram.com/
|
9 |
* Requires at least: 3.9
|
24 |
* Define constants
|
25 |
*/
|
26 |
define( 'ES_PLUGIN_DIR', dirname( __FILE__ ) );
|
27 |
+
define( 'ES_PLUGIN_VERSION', '4.0.16' );
|
28 |
define( 'ES_PLUGIN_BASE_NAME', plugin_basename( __FILE__ ) );
|
29 |
|
30 |
if ( ! defined( 'ES_PLUGIN_FILE' ) ) {
|
includes/admin/class-es-admin-settings.php
CHANGED
@@ -52,6 +52,10 @@ class ES_Admin_Settings {
|
|
52 |
if ( 'submitted' === $submitted && 'ig-es-save-admin-settings' === $submit_action ) {
|
53 |
$options = $_POST;
|
54 |
$options = apply_filters( 'ig_es_before_save_settings', $options );
|
|
|
|
|
|
|
|
|
55 |
foreach ( $options as $key => $value ) {
|
56 |
if ( substr( $key, 0, 6 ) === 'ig_es_' ) {
|
57 |
update_option( $key, stripslashes( $value ) );
|
@@ -67,11 +71,11 @@ class ES_Admin_Settings {
|
|
67 |
|
68 |
<div class="wrap essettings">
|
69 |
<h1 class="wp-heading-inline">Settings</h1>
|
70 |
-
<form action="
|
71 |
|
72 |
<?php settings_fields( 'email_subscribers_settings' ); ?>
|
73 |
|
74 |
-
<div id="tabs">
|
75 |
<div id="menu-tab-listing" class="">
|
76 |
<ul class="main-tab-nav">
|
77 |
<li class="ig-menu-tab"><a href="#tabs-1"><i class="dashicons dashicons-admin-generic"></i> <?php echo __( 'General', 'email-subscribers' ); ?></a></li>
|
@@ -172,7 +176,7 @@ class ES_Admin_Settings {
|
|
172 |
'default' => ''
|
173 |
),
|
174 |
|
175 |
-
'ig_es_post_image_size'
|
176 |
'id' => 'ig_es_post_image_size',
|
177 |
'name' => __( 'Image Size', 'email-subscribers' ),
|
178 |
'type' => 'select',
|
@@ -181,6 +185,14 @@ class ES_Admin_Settings {
|
|
181 |
'default' => 'full'
|
182 |
),
|
183 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
184 |
//'ig_es_unsubscribe_link' => array( 'type' => 'text', 'options' => false, 'placeholder' => '', 'readonly' => 'readonly', 'supplemental' => '', 'default' => '', 'id' => 'ig_es_unsubscribe_link', 'name' => __( 'Unsubscribe Link', 'email-subscribers' ), 'desc' => '', ),
|
185 |
'ig_es_unsubscribe_link_content' => array(
|
186 |
'type' => 'textarea',
|
@@ -423,7 +435,7 @@ class ES_Admin_Settings {
|
|
423 |
),
|
424 |
|
425 |
'email_sending' => array(
|
426 |
-
'ig_es_cronurl'
|
427 |
'type' => 'text',
|
428 |
'placeholder' => '',
|
429 |
'supplemental' => '',
|
@@ -434,6 +446,15 @@ class ES_Admin_Settings {
|
|
434 |
'desc' => __( sprintf( __( "You need to visit this URL to send email notifications. Know <a href='%s' target='_blank'>how to run this in background</a>", 'email-subscribers' ),
|
435 |
"https://www.icegram.com/documentation/es-how-to-schedule-cron-emails-in-cpanel/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page" ) )
|
436 |
),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
437 |
|
438 |
'ig_es_hourly_email_send_limit' => array(
|
439 |
'type' => 'text',
|
@@ -445,6 +466,16 @@ class ES_Admin_Settings {
|
|
445 |
'desc' => __( 'Total emails your host can send in an hour.', 'email-subscribers' )
|
446 |
),
|
447 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
448 |
),
|
449 |
|
450 |
'security_settings' => array(
|
@@ -479,6 +510,7 @@ class ES_Admin_Settings {
|
|
479 |
$type = ! empty( $arguments['type'] ) ? $arguments['type'] : '';
|
480 |
$placeholder = ! empty( $arguments['placeholder'] ) ? $arguments['placeholder'] : '';
|
481 |
$readonly = ! empty( $arguments['readonly'] ) ? $arguments['readonly'] : '';
|
|
|
482 |
|
483 |
// Check which type of field we want
|
484 |
switch ( $arguments['type'] ) {
|
@@ -512,6 +544,9 @@ class ES_Admin_Settings {
|
|
512 |
$field_html = sprintf( '<select name="%1$s" id="%1$s">%2$s</select>', $uid, $options_markup );
|
513 |
}
|
514 |
break;
|
|
|
|
|
|
|
515 |
}
|
516 |
|
517 |
$field_html .= '<br />';
|
52 |
if ( 'submitted' === $submitted && 'ig-es-save-admin-settings' === $submit_action ) {
|
53 |
$options = $_POST;
|
54 |
$options = apply_filters( 'ig_es_before_save_settings', $options );
|
55 |
+
|
56 |
+
$options['ig_es_disable_wp_cron'] = isset( $options['ig_es_disable_wp_cron'] ) ? $options['ig_es_disable_wp_cron'] : 'no';
|
57 |
+
$options['ig_es_track_email_opens'] = isset( $options['ig_es_track_email_opens'] ) ? $options['ig_es_track_email_opens'] : 'no';
|
58 |
+
|
59 |
foreach ( $options as $key => $value ) {
|
60 |
if ( substr( $key, 0, 6 ) === 'ig_es_' ) {
|
61 |
update_option( $key, stripslashes( $value ) );
|
71 |
|
72 |
<div class="wrap essettings">
|
73 |
<h1 class="wp-heading-inline">Settings</h1>
|
74 |
+
<form action="" method="post" id="email_tabs_form" class="ig-settings-form rcorners">
|
75 |
|
76 |
<?php settings_fields( 'email_subscribers_settings' ); ?>
|
77 |
|
78 |
+
<div id="es-settings-tabs">
|
79 |
<div id="menu-tab-listing" class="">
|
80 |
<ul class="main-tab-nav">
|
81 |
<li class="ig-menu-tab"><a href="#tabs-1"><i class="dashicons dashicons-admin-generic"></i> <?php echo __( 'General', 'email-subscribers' ); ?></a></li>
|
176 |
'default' => ''
|
177 |
),
|
178 |
|
179 |
+
'ig_es_post_image_size' => array(
|
180 |
'id' => 'ig_es_post_image_size',
|
181 |
'name' => __( 'Image Size', 'email-subscribers' ),
|
182 |
'type' => 'select',
|
185 |
'default' => 'full'
|
186 |
),
|
187 |
|
188 |
+
'ig_es_track_email_opens' => array(
|
189 |
+
'id' => 'ig_es_track_email_opens',
|
190 |
+
'name' => __( 'Track Opens', 'email-subscribers' ),
|
191 |
+
'type' => 'checkbox',
|
192 |
+
'desc' => __( 'Check this if you want to track email opening.', 'email-subscribers' ),
|
193 |
+
'default' => 'yes'
|
194 |
+
),
|
195 |
+
|
196 |
//'ig_es_unsubscribe_link' => array( 'type' => 'text', 'options' => false, 'placeholder' => '', 'readonly' => 'readonly', 'supplemental' => '', 'default' => '', 'id' => 'ig_es_unsubscribe_link', 'name' => __( 'Unsubscribe Link', 'email-subscribers' ), 'desc' => '', ),
|
197 |
'ig_es_unsubscribe_link_content' => array(
|
198 |
'type' => 'textarea',
|
435 |
),
|
436 |
|
437 |
'email_sending' => array(
|
438 |
+
'ig_es_cronurl' => array(
|
439 |
'type' => 'text',
|
440 |
'placeholder' => '',
|
441 |
'supplemental' => '',
|
446 |
'desc' => __( sprintf( __( "You need to visit this URL to send email notifications. Know <a href='%s' target='_blank'>how to run this in background</a>", 'email-subscribers' ),
|
447 |
"https://www.icegram.com/documentation/es-how-to-schedule-cron-emails-in-cpanel/?utm_source=es&utm_medium=in_app&utm_campaign=view_docs_help_page" ) )
|
448 |
),
|
449 |
+
'ig_es_disable_wp_cron' => array(
|
450 |
+
'type' => 'checkbox',
|
451 |
+
'placeholder' => '',
|
452 |
+
'supplemental' => '',
|
453 |
+
'default' => 'no',
|
454 |
+
'id' => 'ig_es_disable_wp_cron',
|
455 |
+
'name' => __( 'Disable WordPress Cron', 'email-subscribers' ),
|
456 |
+
'desc' => __( 'Check this if you do not want Email Subscribers to use WP cron for sending emails', 'email-subscribers' )
|
457 |
+
),
|
458 |
|
459 |
'ig_es_hourly_email_send_limit' => array(
|
460 |
'type' => 'text',
|
466 |
'desc' => __( 'Total emails your host can send in an hour.', 'email-subscribers' )
|
467 |
),
|
468 |
|
469 |
+
'ig_es_test_send_email' => array(
|
470 |
+
'type' => 'html',
|
471 |
+
'html' => '<input id="es-test-email" type="email"/><input type="submit" name="submit" id="es-send-test" class="button button-primary" value="Send Email"><span class="es_spinner_image_admin" id="spinner-image" style="display:none"><img src="'.EMAIL_SUBSCRIBERS_URL. '/public/images/spinner.gif'.'"/></span>',
|
472 |
+
'placeholder' => '',
|
473 |
+
'supplemental' => '',
|
474 |
+
'default' => '',
|
475 |
+
'id' => 'ig_es_test_send_email',
|
476 |
+
'name' => __( 'Send Test Email', 'email-subscribers' ),
|
477 |
+
'desc' => __( 'Enter email address to send test email.', 'email-subscribers' )
|
478 |
+
)
|
479 |
),
|
480 |
|
481 |
'security_settings' => array(
|
510 |
$type = ! empty( $arguments['type'] ) ? $arguments['type'] : '';
|
511 |
$placeholder = ! empty( $arguments['placeholder'] ) ? $arguments['placeholder'] : '';
|
512 |
$readonly = ! empty( $arguments['readonly'] ) ? $arguments['readonly'] : '';
|
513 |
+
$html = ! empty( $arguments['html'] ) ? $arguments['html'] : '';
|
514 |
|
515 |
// Check which type of field we want
|
516 |
switch ( $arguments['type'] ) {
|
544 |
$field_html = sprintf( '<select name="%1$s" id="%1$s">%2$s</select>', $uid, $options_markup );
|
545 |
}
|
546 |
break;
|
547 |
+
case 'html' :
|
548 |
+
$field_html = $html;
|
549 |
+
default;
|
550 |
}
|
551 |
|
552 |
$field_html .= '<br />';
|
includes/admin/class-es-campaigns-table.php
CHANGED
@@ -446,6 +446,6 @@ class ES_Campaigns_Table extends WP_List_Table {
|
|
446 |
|
447 |
}
|
448 |
|
449 |
-
add_action( 'admin_menu', function () {
|
450 |
-
|
451 |
-
} );
|
446 |
|
447 |
}
|
448 |
|
449 |
+
// add_action( 'admin_menu', function () {
|
450 |
+
// ES_Campaigns_Table::get_instance();
|
451 |
+
// } );
|
includes/admin/class-es-cron.php
CHANGED
@@ -27,6 +27,9 @@ class ES_Cron {
|
|
27 |
$es_request = Email_Subscribers::get_request( 'es' );
|
28 |
}
|
29 |
|
|
|
|
|
|
|
30 |
$self = ! empty( $_REQUEST['self'] ) ? $_REQUEST['self'] : 0;
|
31 |
|
32 |
if ( 'cron' === $es_request ) {
|
@@ -255,6 +258,3 @@ class ES_Cron {
|
|
255 |
|
256 |
}
|
257 |
|
258 |
-
add_action( 'init', function () {
|
259 |
-
new ES_Cron();
|
260 |
-
} );
|
27 |
$es_request = Email_Subscribers::get_request( 'es' );
|
28 |
}
|
29 |
|
30 |
+
$ig_es_disable_wp_cron = get_option( 'ig_es_disable_wp_cron', 'no');
|
31 |
+
if( $is_wp_cron && 'yes' === $ig_es_disable_wp_cron ) return;
|
32 |
+
|
33 |
$self = ! empty( $_REQUEST['self'] ) ? $_REQUEST['self'] : 0;
|
34 |
|
35 |
if ( 'cron' === $es_request ) {
|
258 |
|
259 |
}
|
260 |
|
|
|
|
|
|
includes/admin/class-es-forms-table.php
CHANGED
@@ -776,6 +776,6 @@ class ES_Forms_Table extends WP_List_Table {
|
|
776 |
}
|
777 |
}
|
778 |
|
779 |
-
add_action( 'admin_menu', function () {
|
780 |
-
|
781 |
-
} );
|
776 |
}
|
777 |
}
|
778 |
|
779 |
+
// add_action( 'admin_menu', function () {
|
780 |
+
// ES_Forms_Table::get_instance();
|
781 |
+
// } );
|
includes/admin/class-es-handle-subscription.php
CHANGED
@@ -401,8 +401,3 @@ class ES_Handle_Subscription {
|
|
401 |
}
|
402 |
|
403 |
}
|
404 |
-
|
405 |
-
|
406 |
-
add_action( 'init', function () {
|
407 |
-
new ES_Handle_Subscription();
|
408 |
-
} );
|
401 |
}
|
402 |
|
403 |
}
|
|
|
|
|
|
|
|
|
|
includes/admin/class-es-import-subscribers.php
CHANGED
@@ -63,7 +63,6 @@ class ES_Import_Subscribers {
|
|
63 |
while ( ( $data = fgetcsv( $handle ) ) !== false ) {
|
64 |
|
65 |
$data = array_combine( $headers, $data );
|
66 |
-
|
67 |
$name = isset( $data['Name'] ) ? trim( $data['Name'] ) : '';
|
68 |
$email = isset( $data['Email'] ) ? trim( $data['Email'] ) : '';
|
69 |
|
63 |
while ( ( $data = fgetcsv( $handle ) ) !== false ) {
|
64 |
|
65 |
$data = array_combine( $headers, $data );
|
|
|
66 |
$name = isset( $data['Name'] ) ? trim( $data['Name'] ) : '';
|
67 |
$email = isset( $data['Email'] ) ? trim( $data['Email'] ) : '';
|
68 |
|
includes/admin/class-es-lists-table.php
CHANGED
@@ -303,13 +303,12 @@ class ES_Lists_Table extends WP_List_Table {
|
|
303 |
// Prepare Order by clause
|
304 |
$order_by_clause = '';
|
305 |
$order = ! empty( $order ) ? ' ' . esc_sql( $order ) : ' DESC';
|
306 |
-
|
307 |
-
$order_by_clause = ! empty( $order_by
|
308 |
|
309 |
$sql .= $order_by_clause;
|
310 |
$sql .= " LIMIT $per_page";
|
311 |
$sql .= ' OFFSET ' . ( $page_number - 1 ) * $per_page;
|
312 |
-
|
313 |
$result = $wpdb->get_results( $sql, 'ARRAY_A' );
|
314 |
|
315 |
} else {
|
303 |
// Prepare Order by clause
|
304 |
$order_by_clause = '';
|
305 |
$order = ! empty( $order ) ? ' ' . esc_sql( $order ) : ' DESC';
|
306 |
+
$order_by_clause = ' ORDER BY ' . esc_sql( 'created_at' ) . ' ' . $order;
|
307 |
+
$order_by_clause = ! empty( $order_by) ? $order_by_clause . ' , ' . esc_sql( $order_by ) . ' ' . $order : $order_by_clause;
|
308 |
|
309 |
$sql .= $order_by_clause;
|
310 |
$sql .= " LIMIT $per_page";
|
311 |
$sql .= ' OFFSET ' . ( $page_number - 1 ) * $per_page;
|
|
|
312 |
$result = $wpdb->get_results( $sql, 'ARRAY_A' );
|
313 |
|
314 |
} else {
|
includes/admin/class-es-reports-table.php
CHANGED
@@ -150,9 +150,9 @@ class ES_Reports_Table extends WP_List_Table {
|
|
150 |
<td align="left"><?php echo $i; ?></td>
|
151 |
<td><?php echo $email['email']; ?></td>
|
152 |
<td><span style="color:#03a025;font-weight:bold;"><?php echo $email['status']; ?></span></td>
|
153 |
-
<td><?php echo $email['sent_at']; ?></td>
|
154 |
<td><span><?php echo ( ! empty( $email['opened'] ) && $email['opened'] == 1 ) ? _e('Viewed', 'email-subscribers') : '<i title="'.__('Not yet viewed', 'email-subscribers').'" class="dashicons dashicons-es dashicons-minus">' ?></span></td>
|
155 |
-
<td><?php echo $email['opened_at']; ?></td>
|
156 |
</tr>
|
157 |
|
158 |
<?php
|
150 |
<td align="left"><?php echo $i; ?></td>
|
151 |
<td><?php echo $email['email']; ?></td>
|
152 |
<td><span style="color:#03a025;font-weight:bold;"><?php echo $email['status']; ?></span></td>
|
153 |
+
<td><?php echo ig_es_format_date_time( $email['sent_at'] ); ?></td>
|
154 |
<td><span><?php echo ( ! empty( $email['opened'] ) && $email['opened'] == 1 ) ? _e('Viewed', 'email-subscribers') : '<i title="'.__('Not yet viewed', 'email-subscribers').'" class="dashicons dashicons-es dashicons-minus">' ?></span></td>
|
155 |
+
<td><?php echo ig_es_format_date_time( $email['opened_at'] ); ?></td>
|
156 |
</tr>
|
157 |
|
158 |
<?php
|
includes/admin/class-es-tools.php
CHANGED
@@ -20,158 +20,30 @@ class ES_Tools {
|
|
20 |
|
21 |
// class constructor
|
22 |
public function __construct() {
|
23 |
-
|
24 |
-
add_action( 'admin_init', array( $this, 'setup_sections' ) );
|
25 |
-
add_action( 'admin_init', array( $this, 'email_tools_settings_fields' ) );
|
26 |
}
|
27 |
|
28 |
-
public static function
|
29 |
-
|
30 |
-
}
|
31 |
-
|
32 |
-
public function plugin_menu() {
|
33 |
-
$tool_title = __( 'Tools', 'email-subscribers' );
|
34 |
-
$hook = add_submenu_page(
|
35 |
-
'es_dashboard', $tool_title, $tool_title, get_option( 'es_roles_sendmail', true ), 'es_tools', [ $this, 'es_tools_settings_callback' ]
|
36 |
-
);
|
37 |
-
|
38 |
-
}
|
39 |
-
|
40 |
-
public function es_tools_settings_callback() {
|
41 |
-
|
42 |
-
$submitted = Email_Subscribers::get_request( 'submitted' );
|
43 |
-
|
44 |
-
|
45 |
-
if ( 'submitted' === $submitted ) {
|
46 |
-
|
47 |
-
$es_test_email = Email_Subscribers::get_request( 'es_test_email' );
|
48 |
-
|
49 |
-
if ( empty( $es_test_email ) ) {
|
50 |
-
$message = __( 'Please add email', 'email-subscribers' );
|
51 |
-
$status = 'error';
|
52 |
-
} else {
|
53 |
-
$data = array(
|
54 |
-
'es_test_email' => $es_test_email,
|
55 |
-
);
|
56 |
-
//Todo:: handle errors;
|
57 |
-
$email_response = self::es_send_test_email_callback( $data );
|
58 |
-
$message = __( 'Email has been sent. Please check your inbox', 'email-subscribers' );
|
59 |
-
$status = 'success';
|
60 |
-
}
|
61 |
-
|
62 |
-
$this->show_message( $message, $status );
|
63 |
-
}
|
64 |
-
|
65 |
-
$this->prepare_tools_settings_form();
|
66 |
-
|
67 |
-
|
68 |
-
}
|
69 |
-
|
70 |
-
public function prepare_tools_settings_form() {
|
71 |
-
|
72 |
-
?>
|
73 |
-
|
74 |
-
<div class="wrap">
|
75 |
-
<form method="post" action="#">
|
76 |
-
<?php settings_fields( 'es_tools_settings' ); ?>
|
77 |
-
<?php do_settings_sections( 'tools_settings' ); ?>
|
78 |
-
<div class="email-tools">
|
79 |
-
<input type="submit" id="" name="es_send_email" value="<?php _e( 'Send Email', 'email-subscribers' ) ?>" class="button button-primary">
|
80 |
-
<input type="hidden" name="submitted" value="submitted">
|
81 |
-
</div>
|
82 |
-
</form>
|
83 |
-
</div>
|
84 |
-
|
85 |
-
<?php
|
86 |
-
|
87 |
-
}
|
88 |
-
|
89 |
-
public function setup_sections() {
|
90 |
-
add_settings_section( 'tools_settings', __( 'Tools', 'email-subscribers' ), array( $this, 'email_tools_settings_callback' ), 'tools_settings' );
|
91 |
-
}
|
92 |
-
|
93 |
-
public function email_tools_settings_callback( $arguments ) {
|
94 |
-
|
95 |
-
?>
|
96 |
-
<!--<div class="email-tools">
|
97 |
-
<input type="button" id="es_send_email" name="es_send_email" value="Send Email" class="button button-primary">
|
98 |
-
</div>-->
|
99 |
-
<?php
|
100 |
-
|
101 |
-
}
|
102 |
-
|
103 |
-
public function email_tools_settings_fields() {
|
104 |
-
|
105 |
-
$fields = array(
|
106 |
-
array(
|
107 |
-
'uid' => 'es_test_email',
|
108 |
-
'label' => __( 'Send a Test Email', 'email-subscribers' ),
|
109 |
-
'section' => 'tools_settings',
|
110 |
-
'type' => 'email',
|
111 |
-
'options' => '',
|
112 |
-
'placeholder' => '',
|
113 |
-
'helper' => '',
|
114 |
-
'supplemental' => '',
|
115 |
-
'default' => ''
|
116 |
-
),
|
117 |
-
);
|
118 |
-
$fields = apply_filters( 'email_tools_fields', $fields );
|
119 |
-
foreach ( $fields as $field ) {
|
120 |
-
add_settings_field( $field['uid'], $field['label'], array( $this, 'field_callback' ), $field['section'], $field['section'], $field );
|
121 |
-
register_setting( 'es_tools_settings', $field['uid'] );
|
122 |
-
}
|
123 |
-
|
124 |
-
}
|
125 |
-
|
126 |
-
public function field_callback( $arguments ) {
|
127 |
-
$value = get_option( $arguments['uid'] ); // Get the current value, if there is one
|
128 |
-
if ( ! $value ) { // If no value exists
|
129 |
-
$value = $arguments['default']; // Set to our default
|
130 |
-
}
|
131 |
-
|
132 |
-
// Check which type of field we want
|
133 |
-
switch ( $arguments['type'] ) {
|
134 |
-
case 'text': // If it is a text field
|
135 |
-
printf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" />', $arguments['uid'], $arguments['type'], $arguments['placeholder'], $value );
|
136 |
-
break;
|
137 |
-
case 'email':
|
138 |
-
printf( '<input name="%1$s" id="%1$s" type="%2$s" placeholder="%3$s" value="%4$s" />', $arguments['uid'], $arguments['type'], $arguments['placeholder'], $value );
|
139 |
-
break;
|
140 |
-
}
|
141 |
-
|
142 |
-
// If there is help text
|
143 |
-
if ( $helper = $arguments['helper'] ) {
|
144 |
-
printf( '<span class="helper"> %s</span>', $helper ); // Show it
|
145 |
-
}
|
146 |
-
|
147 |
-
// If there is supplemental text
|
148 |
-
if ( $supplimental = $arguments['supplemental'] ) {
|
149 |
-
printf( '<p class="description">%s</p>', $supplimental ); // Show it
|
150 |
-
}
|
151 |
-
}
|
152 |
-
|
153 |
-
public static function es_send_test_email_callback( $data ) {
|
154 |
-
|
155 |
-
$email = ! empty( $data['es_test_email'] ) ? $data['es_test_email'] : '';
|
156 |
$email_response = '';
|
157 |
-
|
158 |
if ( ! empty( $email ) ) {
|
159 |
$subject = 'Email Subscribers: ' . sprintf( esc_html__( 'Test email to %s', 'email-subscribers' ), $email );
|
160 |
$content = self::get_email_message();
|
161 |
$email_response = ES_Mailer::send( $email, $subject, $content );
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
162 |
}
|
163 |
|
164 |
-
|
|
|
165 |
}
|
166 |
|
167 |
-
public function show_message( $message = '', $status = 'success' ) {
|
168 |
-
|
169 |
-
$class = 'notice notice-success is-dismissible';
|
170 |
-
if ( 'error' === $status ) {
|
171 |
-
$class = 'notice notice-error is-dismissible';
|
172 |
-
}
|
173 |
-
echo "<div class='{$class}'><p>{$message}</p></div>";
|
174 |
-
}
|
175 |
|
176 |
public static function get_instance() {
|
177 |
if ( ! isset( self::$instance ) ) {
|
@@ -186,17 +58,17 @@ class ES_Tools {
|
|
186 |
?>
|
187 |
|
188 |
<html>
|
189 |
-
|
190 |
-
|
191 |
-
|
192 |
|
193 |
-
|
194 |
|
195 |
-
|
196 |
|
197 |
-
|
198 |
-
|
199 |
-
|
200 |
</html>
|
201 |
|
202 |
<?php
|
@@ -207,8 +79,5 @@ class ES_Tools {
|
|
207 |
}
|
208 |
}
|
209 |
|
210 |
-
add_action( 'admin_menu', function () {
|
211 |
-
ES_Tools::get_instance();
|
212 |
-
} );
|
213 |
|
214 |
?>
|
20 |
|
21 |
// class constructor
|
22 |
public function __construct() {
|
23 |
+
add_action( 'wp_ajax_es_send_test_email', array( $this, 'es_send_test_email_callback' ) );
|
|
|
|
|
24 |
}
|
25 |
|
26 |
+
public static function es_send_test_email_callback() {
|
27 |
+
$email = ! empty( $_REQUEST['es_test_email'] ) ? $_REQUEST['es_test_email'] : '';
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
$email_response = '';
|
29 |
+
$response = array();
|
30 |
if ( ! empty( $email ) ) {
|
31 |
$subject = 'Email Subscribers: ' . sprintf( esc_html__( 'Test email to %s', 'email-subscribers' ), $email );
|
32 |
$content = self::get_email_message();
|
33 |
$email_response = ES_Mailer::send( $email, $subject, $content );
|
34 |
+
if ( $email_response ) {
|
35 |
+
$response['message'] = __( 'Email has been sent. Please check your inbox', 'email-subscribers' );
|
36 |
+
$response['status'] = 'success';
|
37 |
+
} else {
|
38 |
+
$response['message'] = __( 'Something went wrong', 'email-subscribers' );
|
39 |
+
$response['status'] = 'error';
|
40 |
+
}
|
41 |
}
|
42 |
|
43 |
+
echo json_encode( $response );
|
44 |
+
exit;
|
45 |
}
|
46 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
47 |
|
48 |
public static function get_instance() {
|
49 |
if ( ! isset( self::$instance ) ) {
|
58 |
?>
|
59 |
|
60 |
<html>
|
61 |
+
<head></head>
|
62 |
+
<body>
|
63 |
+
<p>Congrats, test email was sent successfully!</p>
|
64 |
|
65 |
+
<p>Thank you for trying out Email Subscribers. We are on a mission to make the best Email Marketing Automation plugin for WordPress.</p>
|
66 |
|
67 |
+
<p>If you find this plugin useful, please consider giving us <a href="https://wordpress.org/support/plugin/email-subscribers/reviews/?filter=5">5 stars review</a> on WordPress!</p>
|
68 |
|
69 |
+
<p>Nirav Mehta</p>
|
70 |
+
<p>Founder, <a href="https://www.icegram.com/">Icegram</a></p>
|
71 |
+
</body>
|
72 |
</html>
|
73 |
|
74 |
<?php
|
79 |
}
|
80 |
}
|
81 |
|
|
|
|
|
|
|
82 |
|
83 |
?>
|
includes/class-email-subscribers.php
CHANGED
@@ -214,41 +214,48 @@ class Email_Subscribers {
|
|
214 |
<?php
|
215 |
$admin_notice_1_option = get_option( 'ig_es_admin_notice_1_option', 'no' );
|
216 |
$admin_notice_1_hide_option = get_option( 'ig_es_admin_notice_1_hide_option', 'no' );
|
|
|
|
|
217 |
$es_admin_notice_1_start = strtotime( "2019-04-17" );
|
218 |
$es_admin_notice_1_end = strtotime( "2019-04-27" );
|
219 |
-
if ( ( $es_current_date >= $es_admin_notice_1_start ) && ( $es_current_date <= $es_admin_notice_1_end )
|
220 |
-
$
|
221 |
-
|
222 |
-
|
223 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
224 |
}
|
225 |
-
$image_url = EMAIL_SUBSCRIBERS_URL . "/admin/images/reliable-email-marketing-for-bloggers.png";
|
226 |
-
echo '<a href="?es_dismiss_admin_notice=1&option_name=admin_notice_1_option">
|
227 |
-
<div class="es-starter-banner"><img src="' . $image_url . '"/></div></a>
|
228 |
-
<div class="es-starter-hide"><a href="?es_dismiss_admin_notice=1&option_name=admin_notice_1_hide_option" class="es-stater-banner-hide"href="#">' . __( 'Hide This', 'email-subscribers' ) . '</a></div>';
|
229 |
}
|
230 |
//17th-27th :End
|
231 |
//28th-29th
|
232 |
-
$admin_notice_2_option = get_option( '
|
233 |
$admin_notice_2_hide_option = get_option( 'ig_es_admin_notice_2_hide_option', 'no' );
|
234 |
$es_admin_notice_2_start = strtotime( "2019-04-28" );
|
235 |
$es_admin_notice_2_end = strtotime( "2019-04-29" );
|
236 |
if ( ( $es_current_date >= $es_admin_notice_2_start ) && ( $es_current_date <= $es_admin_notice_2_end ) && 'yes' !== $admin_notice_2_option && 'yes' !== $admin_notice_2_hide_option ) {
|
237 |
-
//echo "<div class='notice es-admin-notices'><strong>⏳[". __(' Last 2 days', 'email-subscribers') . " ]</strong>".__('Fix your biggest email marketing problems with Email Subscribers Starter Plan.', 'email-subscribers')." <a href='?es_dismiss_admin_notice=1&option_name=admin_notice_2_option'>[".__('Click here for more', 'email-subscribers')."]</a><a href='?es_dismiss_admin_notice=1&option_name=admin_notice_2_hide_option' style='float:right; font-size:0.8em;' > ".__("Dissmiss", 'email-subscribers')." </a></div>";
|
238 |
$image_url = EMAIL_SUBSCRIBERS_URL . "/admin/images/dont-miss-opportunity.png";
|
239 |
-
echo '<a href="?es_dismiss_admin_notice=1&option_name=
|
240 |
<div class="es-starter-banner"><img style="box-shadow:none" src="' . $image_url . '"/></div></a>
|
241 |
<div class="es-starter-hide"><a href="?es_dismiss_admin_notice=1&option_name=admin_notice_2_hide_option" class="es-stater-banner-hide"href="#">' . __( 'Hide This', 'email-subscribers' ) . '</a></div>';
|
242 |
}
|
243 |
//30th
|
244 |
-
$admin_notice_3_option = get_option( '
|
245 |
$admin_notice_3_hide_option = get_option( 'ig_es_admin_notice_3_hide_option', 'no' );
|
246 |
$es_admin_notice_3_start = strtotime( "2019-04-30" );
|
247 |
$es_admin_notice_3_end = strtotime( "2019-05-1" );
|
248 |
if ( ( $es_current_date >= $es_admin_notice_3_start ) && ( $es_current_date < $es_admin_notice_3_end ) && 'yes' !== $admin_notice_3_option && 'yes' !== $admin_notice_3_hide_option ) {
|
249 |
-
//echo "<div class='notice es-admin-notices'><strong>[". __(' LAST DAY TODAY', 'email-subscribers') . " ]</strong> ". __('You will regret if you miss this. Solve your burning email marketing problems today. ', 'email-subscribers')."<a href='?es_dismiss_admin_notice=1&option_name=admin_notice_3_option'>[".__('Click to learn more', 'email-subscribers')."]</a><a href='?es_dismiss_admin_notice=1&option_name=admin_notice_3_hide_option' style='float:right; font-size:0.8em;' >".__("Dissmiss", 'email-subscribers')."</a></div>";
|
250 |
$image_url = EMAIL_SUBSCRIBERS_URL . "/admin/images/what-are-you-waiting-for.png";
|
251 |
-
echo '<a href="?es_dismiss_admin_notice=1&option_name=
|
252 |
<div class="es-starter-banner"><img src="' . $image_url . '"/></div></a>
|
253 |
<div class="es-starter-hide"><a href="?es_dismiss_admin_notice=1&option_name=admin_notice_3_hide_option" class="es-stater-banner-hide"href="#">' . __( 'Hide This', 'email-subscribers' ) . '</a></div>';
|
254 |
}
|
@@ -259,8 +266,8 @@ class Email_Subscribers {
|
|
259 |
if ( isset( $_GET['es_dismiss_admin_notice'] ) && $_GET['es_dismiss_admin_notice'] == '1' && isset( $_GET['option_name'] ) ) {
|
260 |
$option_name = sanitize_text_field( $_GET['option_name'] );
|
261 |
update_option( 'ig_es_' . $option_name, 'yes' );
|
262 |
-
if ( in_array( $option_name, array( 'starter_banner', 'admin_notice_1_option', '
|
263 |
-
header( "Location: https://www.icegram.com/email-subscribers-starter/?utm_source=
|
264 |
exit();
|
265 |
} else {
|
266 |
$referer = wp_get_referer();
|
214 |
<?php
|
215 |
$admin_notice_1_option = get_option( 'ig_es_admin_notice_1_option', 'no' );
|
216 |
$admin_notice_1_hide_option = get_option( 'ig_es_admin_notice_1_hide_option', 'no' );
|
217 |
+
$hot_cakes_option = get_option( 'ig_es_hot_cakes_option', 'no' );
|
218 |
+
$hot_cakes_hide_option = get_option( 'ig_es_hot_cakes_hide_option', 'no' );
|
219 |
$es_admin_notice_1_start = strtotime( "2019-04-17" );
|
220 |
$es_admin_notice_1_end = strtotime( "2019-04-27" );
|
221 |
+
if ( ( $es_current_date >= $es_admin_notice_1_start ) && ( $es_current_date <= $es_admin_notice_1_end ) ) {
|
222 |
+
if( 'yes' !== $admin_notice_1_option && 'yes' !== $admin_notice_1_hide_option ){
|
223 |
+
$starter_banner_hide_18 = get_option( 'ig_es_admin_notice_1_hide_option', false );
|
224 |
+
if ( $starter_banner_hide_18 ) {
|
225 |
+
echo "<div class='notice es-admin-notices'><strong>" . __( "🤗 Insane Launch Offer: ", 'email-subscribers' ) . "</strong>" . __( 'Email Subscribers Starter Plan ',
|
226 |
+
'email-subscribers' ) . "<a href='?es_dismiss_admin_notice=1&option_name=admin_notice_1_option'>[" . __( "Click to claim limited time offer" ) . "]<a href='?es_dismiss_admin_notice=1&option_name=admin_notice_1_hide_option' style='float:right; font-size:0.8em;' > " . __( "Dissmiss", 'email-subscribers' ) . " </a></div>";
|
227 |
+
}
|
228 |
+
$image_url = EMAIL_SUBSCRIBERS_URL . "/admin/images/reliable-email-marketing-for-bloggers.png";
|
229 |
+
echo '<a href="?es_dismiss_admin_notice=1&option_name=admin_notice_1_option">
|
230 |
+
<div class="es-starter-banner"><img src="' . $image_url . '"/></div></a>
|
231 |
+
<div class="es-starter-hide"><a href="?es_dismiss_admin_notice=1&option_name=admin_notice_1_hide_option" class="es-stater-banner-hide"href="#">' . __( 'Hide This', 'email-subscribers' ) . '</a></div>';
|
232 |
+
}else if( ( 'yes' === $admin_notice_1_option || 'yes' === $admin_notice_1_hide_option ) && 'yes' !== $hot_cakes_option && 'yes' !== $hot_cakes_hide_option ){
|
233 |
+
$image_url = EMAIL_SUBSCRIBERS_URL . "/admin/images/hot-cakes.png";
|
234 |
+
echo '<a href="?es_dismiss_admin_notice=1&option_name=hot_cakes_option">
|
235 |
+
<div class="es-starter-banner"><img src="' . $image_url . '"/></div></a>
|
236 |
+
<div class="es-starter-hide"><a href="?es_dismiss_admin_notice=1&option_name=hot_cakes_hide_option" class="es-stater-banner-hide"href="#">' . __( 'Hide This', 'email-subscribers' ) . '</a></div>';
|
237 |
}
|
|
|
|
|
|
|
|
|
238 |
}
|
239 |
//17th-27th :End
|
240 |
//28th-29th
|
241 |
+
$admin_notice_2_option = get_option( 'ig_es_starter_campaign_28_29', 'no' );
|
242 |
$admin_notice_2_hide_option = get_option( 'ig_es_admin_notice_2_hide_option', 'no' );
|
243 |
$es_admin_notice_2_start = strtotime( "2019-04-28" );
|
244 |
$es_admin_notice_2_end = strtotime( "2019-04-29" );
|
245 |
if ( ( $es_current_date >= $es_admin_notice_2_start ) && ( $es_current_date <= $es_admin_notice_2_end ) && 'yes' !== $admin_notice_2_option && 'yes' !== $admin_notice_2_hide_option ) {
|
|
|
246 |
$image_url = EMAIL_SUBSCRIBERS_URL . "/admin/images/dont-miss-opportunity.png";
|
247 |
+
echo '<a href="?es_dismiss_admin_notice=1&option_name=starter_campaign_28_29">
|
248 |
<div class="es-starter-banner"><img style="box-shadow:none" src="' . $image_url . '"/></div></a>
|
249 |
<div class="es-starter-hide"><a href="?es_dismiss_admin_notice=1&option_name=admin_notice_2_hide_option" class="es-stater-banner-hide"href="#">' . __( 'Hide This', 'email-subscribers' ) . '</a></div>';
|
250 |
}
|
251 |
//30th
|
252 |
+
$admin_notice_3_option = get_option( 'ig_es_starter_campaign_30', 'no' );
|
253 |
$admin_notice_3_hide_option = get_option( 'ig_es_admin_notice_3_hide_option', 'no' );
|
254 |
$es_admin_notice_3_start = strtotime( "2019-04-30" );
|
255 |
$es_admin_notice_3_end = strtotime( "2019-05-1" );
|
256 |
if ( ( $es_current_date >= $es_admin_notice_3_start ) && ( $es_current_date < $es_admin_notice_3_end ) && 'yes' !== $admin_notice_3_option && 'yes' !== $admin_notice_3_hide_option ) {
|
|
|
257 |
$image_url = EMAIL_SUBSCRIBERS_URL . "/admin/images/what-are-you-waiting-for.png";
|
258 |
+
echo '<a href="?es_dismiss_admin_notice=1&option_name=starter_campaign_30">
|
259 |
<div class="es-starter-banner"><img src="' . $image_url . '"/></div></a>
|
260 |
<div class="es-starter-hide"><a href="?es_dismiss_admin_notice=1&option_name=admin_notice_3_hide_option" class="es-stater-banner-hide"href="#">' . __( 'Hide This', 'email-subscribers' ) . '</a></div>';
|
261 |
}
|
266 |
if ( isset( $_GET['es_dismiss_admin_notice'] ) && $_GET['es_dismiss_admin_notice'] == '1' && isset( $_GET['option_name'] ) ) {
|
267 |
$option_name = sanitize_text_field( $_GET['option_name'] );
|
268 |
update_option( 'ig_es_' . $option_name, 'yes' );
|
269 |
+
if ( in_array( $option_name, array( 'starter_banner', 'admin_notice_1_option', 'starter_campaign_28_29', 'starter_campaign_30', 'hot_cakes_option' ) ) ) {
|
270 |
+
header( "Location: https://www.icegram.com/email-subscribers-starter/?utm_source=".$option_name."&utm_medium=in_app=&utm_campaign=starter_launch");
|
271 |
exit();
|
272 |
} else {
|
273 |
$referer = wp_get_referer();
|
includes/class-es-common.php
CHANGED
@@ -68,6 +68,15 @@ Class ES_Common {
|
|
68 |
$data['tmpl_id'] = $tmpl_id;
|
69 |
$data = apply_filters( 'es_after_process_template_body', $data );
|
70 |
$content = $data['content'];
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
71 |
|
72 |
return $content;
|
73 |
}
|
68 |
$data['tmpl_id'] = $tmpl_id;
|
69 |
$data = apply_filters( 'es_after_process_template_body', $data );
|
70 |
$content = $data['content'];
|
71 |
+
//total contacts
|
72 |
+
$total_contacts = ES_DB_Contacts::count_active_subscribers_by_list_id();
|
73 |
+
$content = str_replace( "{{TOTAL-CONTACTS}}", $total_contacts, $content );
|
74 |
+
//blog title
|
75 |
+
$blog_name = get_option( 'blogname' );
|
76 |
+
$content = str_replace( "{{SITENAME}}", $blog_name, $content );
|
77 |
+
// site url
|
78 |
+
$site_url = home_url( '/' );
|
79 |
+
$content = str_replace( "{{SITEURL}}", $site_url, $content );
|
80 |
|
81 |
return $content;
|
82 |
}
|
includes/class-es-install.php
CHANGED
@@ -249,6 +249,7 @@ class ES_Install {
|
|
249 |
// Check if we are not already running this routine.
|
250 |
if ( 'yes' === get_transient( 'ig_es_updating' ) ) {
|
251 |
self::$logger->info( '********* Update is already running..... ****** ' );
|
|
|
252 |
return;
|
253 |
}
|
254 |
|
@@ -280,7 +281,7 @@ class ES_Install {
|
|
280 |
}
|
281 |
|
282 |
public static function update_db_version( $version = null ) {
|
283 |
-
update_option('ig_es_db_version', is_null( $version ) ? ES_PLUGIN_VERSION : $version);
|
284 |
}
|
285 |
|
286 |
private static function create_options() {
|
@@ -369,9 +370,10 @@ class ES_Install {
|
|
369 |
'ig_es_set_widget' => array( 'default' => '', 'old_option' => '' ),
|
370 |
'ig_es_sync_wp_users' => array( 'default' => '', 'old_option' => 'ig_es_sync_wp_users' ),
|
371 |
'ig_es_blocked_domains' => array( 'default' => 'mail.ru' ),
|
|
|
|
|
372 |
);
|
373 |
|
374 |
-
|
375 |
return $options;
|
376 |
}
|
377 |
|
249 |
// Check if we are not already running this routine.
|
250 |
if ( 'yes' === get_transient( 'ig_es_updating' ) ) {
|
251 |
self::$logger->info( '********* Update is already running..... ****** ' );
|
252 |
+
|
253 |
return;
|
254 |
}
|
255 |
|
281 |
}
|
282 |
|
283 |
public static function update_db_version( $version = null ) {
|
284 |
+
update_option( 'ig_es_db_version', is_null( $version ) ? ES_PLUGIN_VERSION : $version );
|
285 |
}
|
286 |
|
287 |
private static function create_options() {
|
370 |
'ig_es_set_widget' => array( 'default' => '', 'old_option' => '' ),
|
371 |
'ig_es_sync_wp_users' => array( 'default' => '', 'old_option' => 'ig_es_sync_wp_users' ),
|
372 |
'ig_es_blocked_domains' => array( 'default' => 'mail.ru' ),
|
373 |
+
'ig_es_disable_wp_cron' => array( 'default' => 'no' ),
|
374 |
+
'ig_es_track_email_opens' => array( 'default' => 'yes' ),
|
375 |
);
|
376 |
|
|
|
377 |
return $options;
|
378 |
}
|
379 |
|
includes/class-es-mailer.php
CHANGED
@@ -63,6 +63,7 @@ class ES_Mailer {
|
|
63 |
public static function prepare_email( $content = '', $data = array() ) {
|
64 |
|
65 |
$blog_name = get_option( 'blogname' );
|
|
|
66 |
|
67 |
$name = isset( $data['name'] ) ? $data['name'] : '';
|
68 |
$email = isset( $data['email'] ) ? $data['email'] : '';
|
@@ -73,6 +74,7 @@ class ES_Mailer {
|
|
73 |
$content = str_replace( "{{GROUP}}", $list_name, $content );
|
74 |
$content = str_replace( "{{LIST}}", $list_name, $content );
|
75 |
$content = str_replace( "{{SITENAME}}", $blog_name, $content );
|
|
|
76 |
|
77 |
|
78 |
$content = nl2br( $content );
|
@@ -109,8 +111,9 @@ class ES_Mailer {
|
|
109 |
|
110 |
public static function prepare_welcome_email( $data ) {
|
111 |
|
112 |
-
$blog_name
|
113 |
-
$
|
|
|
114 |
|
115 |
$name = isset( $data['name'] ) ? $data['name'] : '';
|
116 |
$email = isset( $data['email'] ) ? $data['email'] : '';
|
@@ -129,6 +132,8 @@ class ES_Mailer {
|
|
129 |
$content = str_replace( "{{LIST}}", $list_name, $content );
|
130 |
$content = str_replace( "{{UNSUBSCRIBE-LINK}}", $unsubscribe_link, $content );
|
131 |
$content = str_replace( "{{LINK}}", $unsubscribe_link, $content );
|
|
|
|
|
132 |
$content = nl2br( $content );
|
133 |
|
134 |
return $content;
|
@@ -138,6 +143,7 @@ class ES_Mailer {
|
|
138 |
public static function prepare_double_optin_email( $data ) {
|
139 |
|
140 |
$blog_name = get_option( 'blogname' );
|
|
|
141 |
$content = stripslashes( get_option( 'ig_es_confirmation_mail_content', '' ) );
|
142 |
|
143 |
|
@@ -148,13 +154,14 @@ class ES_Mailer {
|
|
148 |
$email = isset( $data['email'] ) ? $data['email'] : '';
|
149 |
$name = isset( $data['name'] ) ? $data['name'] : '';
|
150 |
|
151 |
-
$subscribe_link = self::prepare_link('subscribe', $db_id, $email, $guid);
|
152 |
|
153 |
$content = str_replace( "{{NAME}}", $name, $content );
|
154 |
$content = str_replace( "{{EMAIL}}", $email, $content );
|
155 |
$content = str_replace( "{{LINK}}", $subscribe_link, $content );
|
156 |
$content = str_replace( "{{SITENAME}}", $blog_name, $content );
|
157 |
$content = str_replace( "{{SUBSCRIBE-LINK}}", $subscribe_link, $content );
|
|
|
158 |
|
159 |
$content = nl2br( $content );
|
160 |
|
@@ -189,9 +196,15 @@ class ES_Mailer {
|
|
189 |
|
190 |
$unsubscribe_link = self::prepare_link( 'unsubscribe', $dbid, $email, $contact_guid );
|
191 |
$unsubtext = self::get_unsubscribe_text( $unsubscribe_link );
|
192 |
-
$viewstslink = self::get_view_tracking_image( $guid, $email );
|
193 |
|
194 |
-
$
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
195 |
|
196 |
return $template_content;
|
197 |
}
|
@@ -204,7 +217,7 @@ class ES_Mailer {
|
|
204 |
|
205 |
$link = add_query_arg( 'es', $link_type, site_url( '/' ) );
|
206 |
|
207 |
-
$link = $link .'&db={{DBID}}&email={{EMAIL}}&guid={{GUID}}';
|
208 |
$link = str_replace( "{{DBID}}", $dbid, $link );
|
209 |
$link = str_replace( "{{EMAIL}}", $email, $link );
|
210 |
$link = str_replace( "{{GUID}}", $guid, $link );
|
63 |
public static function prepare_email( $content = '', $data = array() ) {
|
64 |
|
65 |
$blog_name = get_option( 'blogname' );
|
66 |
+
$site_url = home_url( '/' );
|
67 |
|
68 |
$name = isset( $data['name'] ) ? $data['name'] : '';
|
69 |
$email = isset( $data['email'] ) ? $data['email'] : '';
|
74 |
$content = str_replace( "{{GROUP}}", $list_name, $content );
|
75 |
$content = str_replace( "{{LIST}}", $list_name, $content );
|
76 |
$content = str_replace( "{{SITENAME}}", $blog_name, $content );
|
77 |
+
$content = str_replace( "{{SITEURL}}", $site_url, $content );
|
78 |
|
79 |
|
80 |
$content = nl2br( $content );
|
111 |
|
112 |
public static function prepare_welcome_email( $data ) {
|
113 |
|
114 |
+
$blog_name = get_option( 'blogname' );
|
115 |
+
$total_contacts = ES_DB_Contacts::count_active_subscribers_by_list_id();
|
116 |
+
$content = stripslashes( get_option( 'ig_es_welcome_email_content', '' ) );
|
117 |
|
118 |
$name = isset( $data['name'] ) ? $data['name'] : '';
|
119 |
$email = isset( $data['email'] ) ? $data['email'] : '';
|
132 |
$content = str_replace( "{{LIST}}", $list_name, $content );
|
133 |
$content = str_replace( "{{UNSUBSCRIBE-LINK}}", $unsubscribe_link, $content );
|
134 |
$content = str_replace( "{{LINK}}", $unsubscribe_link, $content );
|
135 |
+
$content = str_replace( "{{TOTAL-CONTACTS}}", $total_contacts, $content );
|
136 |
+
|
137 |
$content = nl2br( $content );
|
138 |
|
139 |
return $content;
|
143 |
public static function prepare_double_optin_email( $data ) {
|
144 |
|
145 |
$blog_name = get_option( 'blogname' );
|
146 |
+
$total_contacts = ES_DB_Contacts::count_active_subscribers_by_list_id();
|
147 |
$content = stripslashes( get_option( 'ig_es_confirmation_mail_content', '' ) );
|
148 |
|
149 |
|
154 |
$email = isset( $data['email'] ) ? $data['email'] : '';
|
155 |
$name = isset( $data['name'] ) ? $data['name'] : '';
|
156 |
|
157 |
+
$subscribe_link = self::prepare_link( 'subscribe', $db_id, $email, $guid );
|
158 |
|
159 |
$content = str_replace( "{{NAME}}", $name, $content );
|
160 |
$content = str_replace( "{{EMAIL}}", $email, $content );
|
161 |
$content = str_replace( "{{LINK}}", $subscribe_link, $content );
|
162 |
$content = str_replace( "{{SITENAME}}", $blog_name, $content );
|
163 |
$content = str_replace( "{{SUBSCRIBE-LINK}}", $subscribe_link, $content );
|
164 |
+
$content = str_replace( "{{TOTAL-CONTACTS}}", $total_contacts, $content );
|
165 |
|
166 |
$content = nl2br( $content );
|
167 |
|
196 |
|
197 |
$unsubscribe_link = self::prepare_link( 'unsubscribe', $dbid, $email, $contact_guid );
|
198 |
$unsubtext = self::get_unsubscribe_text( $unsubscribe_link );
|
|
|
199 |
|
200 |
+
$is_track_email_opens = get_option( 'ig_es_track_email_opens', 'yes' );
|
201 |
+
|
202 |
+
$email_tracking_image = '';
|
203 |
+
if ( 'yes' === $is_track_email_opens ) {
|
204 |
+
$email_tracking_image = self::get_view_tracking_image( $guid, $email );
|
205 |
+
}
|
206 |
+
|
207 |
+
$template_content = $template_content . $unsubtext . $email_tracking_image;
|
208 |
|
209 |
return $template_content;
|
210 |
}
|
217 |
|
218 |
$link = add_query_arg( 'es', $link_type, site_url( '/' ) );
|
219 |
|
220 |
+
$link = $link . '&db={{DBID}}&email={{EMAIL}}&guid={{GUID}}';
|
221 |
$link = str_replace( "{{DBID}}", $dbid, $link );
|
222 |
$link = str_replace( "{{EMAIL}}", $email, $link );
|
223 |
$link = str_replace( "{{GUID}}", $guid, $link );
|
public/class-email-subscribers-public.php
CHANGED
@@ -129,6 +129,10 @@ class Email_Subscribers_Public {
|
|
129 |
|
130 |
global $wpdb;
|
131 |
|
|
|
|
|
|
|
|
|
132 |
$option = ! empty( $_REQUEST['es'] ) ? $_REQUEST['es'] : '';
|
133 |
$db_id = ! empty( $_REQUEST['db'] ) ? $_REQUEST['db'] : '';
|
134 |
$email = ! empty( $_REQUEST['email'] ) ? $_REQUEST['email'] : '';
|
129 |
|
130 |
global $wpdb;
|
131 |
|
132 |
+
//initialize
|
133 |
+
new ES_Cron();
|
134 |
+
new ES_Handle_Subscription();
|
135 |
+
|
136 |
$option = ! empty( $_REQUEST['es'] ) ? $_REQUEST['es'] : '';
|
137 |
$db_id = ! empty( $_REQUEST['db'] ) ? $_REQUEST['db'] : '';
|
138 |
$email = ! empty( $_REQUEST['email'] ) ? $_REQUEST['email'] : '';
|
readme.txt
CHANGED
@@ -5,7 +5,7 @@ Author URI: https://www.icegram.com/
|
|
5 |
Tags: subscription, newsletter, email marketing, post notification, email newsletter form, email signup, email widget, newsletter signup, subscribe, subscription form, bulk emails, signup form, list builder, lead generation, welcome email, contacts
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.1.1
|
8 |
-
Stable tag: 4.0.
|
9 |
License: GPLv3
|
10 |
License URI: http://www.gnu.org/licenses
|
11 |
|
@@ -301,6 +301,14 @@ Use our free plugin [Email Subscribers - Group Selector](https://wordpress.org/p
|
|
301 |
|
302 |
== Changelog ==
|
303 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
304 |
= 4.0.15 (17.04.2019) =
|
305 |
* Fix: Error with Gutenberg editor
|
306 |
* Fix: Media Upload Error
|
5 |
Tags: subscription, newsletter, email marketing, post notification, email newsletter form, email signup, email widget, newsletter signup, subscribe, subscription form, bulk emails, signup form, list builder, lead generation, welcome email, contacts
|
6 |
Requires at least: 3.9
|
7 |
Tested up to: 5.1.1
|
8 |
+
Stable tag: 4.0.16
|
9 |
License: GPLv3
|
10 |
License URI: http://www.gnu.org/licenses
|
11 |
|
301 |
|
302 |
== Changelog ==
|
303 |
|
304 |
+
= 4.0.16 (23.04.2019) =
|
305 |
+
* New : New keywords added : {{TOTAL-CONTACTC}} , {{SITEURL}}, {{SITENAME}}
|
306 |
+
* New : Added option to enable/ disable WordPress Cron for Email Subscribers
|
307 |
+
* New : Added option to enable/ disable email open tracking
|
308 |
+
* Fix : Database error while sorting list
|
309 |
+
* Fix : Incorrect viewed and sent dates in report details
|
310 |
+
|
311 |
+
|
312 |
= 4.0.15 (17.04.2019) =
|
313 |
* Fix: Error with Gutenberg editor
|
314 |
* Fix: Media Upload Error
|