Version Description
(12.03.2019) = * Enhancement: Now, queued emails will be processed on every 15 minutes. * Fix: Parse error: syntax error, unexpected T_FUNCTION, expecting ')' * Fix: Parse error: syntax error, unexpected '[', expecting ')' * Update: POT file
Download this release
Release Info
Developer | Icegram |
Plugin | Email Subscribers & Newsletters |
Version | 4.0.6 |
Comparing to | |
See all releases |
Code changes from version 4.0.5 to 4.0.6
- admin/class-email-subscribers-admin.php +12 -12
- email-subscribers.php +2 -2
- includes/admin/class-es-cron.php +30 -13
- includes/admin/class-es-forms-table.php +2 -2
- includes/admin/class-es-handle-post-notification.php +0 -1
- includes/admin/class-es-handle-subscription.php +1 -1
- includes/admin/class-es-subscription-throttaling.php +3 -3
- includes/class-email-subscribers.php +9 -1
- includes/class-es-mailer.php +3 -3
- includes/db/class-es-db-contacts.php +3 -2
- languages/email-subscribers.pot +69 -45
- public/partials/class-es-shortcode.php +2 -2
- readme.txt +7 -1
admin/class-email-subscribers-admin.php
CHANGED
@@ -132,20 +132,20 @@ class Email_Subscribers_Admin {
|
|
132 |
|
133 |
public function email_subscribers_admin_menu() {
|
134 |
// This adds the main menu page
|
135 |
-
add_menu_page( 'Email Subscribers', 'Email Subscribers', 'edit_posts', 'es_dashboard', array( $this, 'es_dashboard_callback' ), 'dashicons-email', 30 );
|
136 |
|
137 |
// Submenu
|
138 |
-
add_submenu_page( 'es_dashboard', 'Dashboard', 'Dashboard', 'edit_posts', 'es_dashboard', array( $this, 'es_dashboard_callback' ) );
|
139 |
-
add_submenu_page( 'es_dashboard', 'Lists', '<span id="ig-es-lists">Lists</span>', 'edit_posts', 'es_lists', array( $this, 'load_lists' ) );
|
140 |
-
add_submenu_page( 'es_dashboard', 'Post Notifications', '<span id="ig-es-post-notifications">Post Notifications</span>', get_option( 'es_roles_notification', true ), 'es_notifications', array( $this, 'load_post_notifications' ) );
|
141 |
-
add_submenu_page( 'es_dashboard', 'Broadcast', '<span id="ig-es-broadcast">Broadcast</span>', get_option( 'es_roles_sendmail', true ), 'es_newsletters', array( $this, 'load_newsletters' ) );
|
142 |
-
add_submenu_page( 'es_dashboard', 'Reports', 'Reports', get_option( 'es_roles_sentmail', true ), 'es_reports', array( $this, 'load_reports' ) );
|
143 |
-
add_submenu_page( 'es_dashboard', 'Audience', __( 'Audience', 'email-subscribers' ), get_option( 'es_roles_subscriber', true ), 'es_subscribers', array( $this, 'load_audience' ) );
|
144 |
-
add_submenu_page( 'es_dashboard', 'Campaigns', 'Campaigns', get_option( 'es_roles_notification', true ), 'es_campaigns', array( $this, 'load_campaigns' ) );
|
145 |
-
add_submenu_page( 'es_dashboard', 'Settings', 'Settings', get_option( 'es_roles_notification', true ), 'es_settings', array( $this, 'load_settings' ) );
|
146 |
-
add_submenu_page( 'es_dashboard', 'Forms', 'Forms', get_option( 'es_roles_notification', true ), 'es_forms', array( $this, 'load_forms' ) );
|
147 |
-
add_submenu_page( 'es_dashboard', 'Tools', 'Tools', get_option( 'es_roles_notification', true ), 'es_tools', array( $this, 'load_tools' ) );
|
148 |
-
add_submenu_page( null, 'Template Preview', 'Template Preview', get_option( 'es_roles_notification', true ), 'es_template_preview', array( $this, 'load_preview' ) );
|
149 |
}
|
150 |
|
151 |
// Function for Klawoo's Subscribe form on Help & Info page
|
132 |
|
133 |
public function email_subscribers_admin_menu() {
|
134 |
// This adds the main menu page
|
135 |
+
add_menu_page( __('Email Subscribers', 'email-subscribers'), __('Email Subscribers', 'email-subscribers'), 'edit_posts', 'es_dashboard', array( $this, 'es_dashboard_callback' ), 'dashicons-email', 30 );
|
136 |
|
137 |
// Submenu
|
138 |
+
add_submenu_page( 'es_dashboard', __( 'Dashboard', 'email-subscribers') , __( 'Dashboard', 'email-subscribers'), 'edit_posts', 'es_dashboard', array( $this, 'es_dashboard_callback' ) );
|
139 |
+
add_submenu_page( 'es_dashboard', __( 'Lists', 'email-subscribers') , '<span id="ig-es-lists">' . __( 'Lists', 'email-subscribers') .'</span>', 'edit_posts', 'es_lists', array( $this, 'load_lists' ) );
|
140 |
+
add_submenu_page( 'es_dashboard', __( 'Post Notifications', 'email-subscribers') , '<span id="ig-es-post-notifications">'.__( 'Post Notifications', 'email-subscribers').'</span>', get_option( 'es_roles_notification', true ), 'es_notifications', array( $this, 'load_post_notifications' ) );
|
141 |
+
add_submenu_page( 'es_dashboard', __( 'Broadcast', 'email-subscribers') , '<span id="ig-es-broadcast">'.__( 'Broadcast', 'email-subscribers').'</span>', get_option( 'es_roles_sendmail', true ), 'es_newsletters', array( $this, 'load_newsletters' ) );
|
142 |
+
add_submenu_page( 'es_dashboard', __( 'Reports', 'email-subscribers') , __( 'Reports', 'email-subscribers') , get_option( 'es_roles_sentmail', true ), 'es_reports', array( $this, 'load_reports' ) );
|
143 |
+
add_submenu_page( 'es_dashboard', __( 'Audience', 'email-subscribers') , __( 'Audience', 'email-subscribers' ), get_option( 'es_roles_subscriber', true ), 'es_subscribers', array( $this, 'load_audience' ) );
|
144 |
+
add_submenu_page( 'es_dashboard', __( 'Campaigns', 'email-subscribers') , __( 'Campaigns', 'email-subscribers') , get_option( 'es_roles_notification', true ), 'es_campaigns', array( $this, 'load_campaigns' ) );
|
145 |
+
add_submenu_page( 'es_dashboard', __( 'Settings', 'email-subscribers') , __( 'Settings', 'email-subscribers'), get_option( 'es_roles_notification', true ), 'es_settings', array( $this, 'load_settings' ) );
|
146 |
+
add_submenu_page( 'es_dashboard', __( 'Forms', 'email-subscribers') , __( 'Forms', 'email-subscribers') , get_option( 'es_roles_notification', true ), 'es_forms', array( $this, 'load_forms' ) );
|
147 |
+
add_submenu_page( 'es_dashboard', __( 'Tools', 'email-subscribers'), __( 'Tools', 'email-subscribers'), get_option( 'es_roles_notification', true ), 'es_tools', array( $this, 'load_tools' ) );
|
148 |
+
add_submenu_page( null, __('Template Preview', 'email-subscribers'), __('Template Preview', 'email-subscribers'), get_option( 'es_roles_notification', true ), 'es_template_preview', array( $this, 'load_preview' ) );
|
149 |
}
|
150 |
|
151 |
// Function for Klawoo's Subscribe form on Help & Info page
|
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.6
|
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.6' );
|
28 |
define( 'ES_PLUGIN_BASE_NAME', plugin_basename( __FILE__ ) );
|
29 |
|
30 |
if ( ! defined( 'ES_PLUGIN_FILE' ) ) {
|
includes/admin/class-es-cron.php
CHANGED
@@ -15,31 +15,42 @@ class ES_Cron {
|
|
15 |
public function __construct() {
|
16 |
$this->handle_cron_request();
|
17 |
$this->set_cron();
|
18 |
-
add_action( '
|
19 |
}
|
20 |
|
21 |
public function handle_cron_request( $es = '', $guid = '' ) {
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
22 |
|
23 |
-
$
|
24 |
-
$self = ! empty( $_REQUEST['self'] ) ? $_REQUEST['self'] : 0;
|
25 |
-
|
26 |
-
//$ig_es_last_cron_run = get_option( 'ig_es_last_cron_run', true );
|
27 |
-
//$time_diff = ( time() - $ig_es_last_cron_run );
|
28 |
-
//$time_diff = ( ! empty( $_GET['es_pro'] ) && ( $_GET['es_pro'] == 1 || $_GET['es_pro'] === true || $_GET['es_pro'] === 'true' ) ) ? 1 : floor( $time_diff / 3600 );
|
29 |
-
$time_diff = 1;
|
30 |
|
31 |
if ( 'cron' === $es_request ) {
|
32 |
|
33 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
34 |
$guid = ( ! empty( $guid ) ) ? $guid : Email_Subscribers::get_request( 'guid' );
|
35 |
if ( ! empty( $guid ) ) {
|
36 |
-
|
37 |
$response = array( 'status' => 'SUCCESS', 'es_remaining_email_count' => 100 );
|
38 |
$es_process_request = true;
|
39 |
|
40 |
// filter request
|
41 |
$es_process_request = apply_filters( 'es_process_request', $es_process_request );
|
42 |
-
|
43 |
if ( true === $es_process_request ) {
|
44 |
$security1 = strlen( $guid );
|
45 |
$es_c_cronguid_noslash = str_replace( "-", "", $guid );
|
@@ -49,6 +60,11 @@ class ES_Cron {
|
|
49 |
$es_c_cronurl = get_option( 'ig_es_cronurl' );
|
50 |
$es_c_croncount = get_option( 'ig_es_hourly_email_send_limit', 50 );
|
51 |
|
|
|
|
|
|
|
|
|
|
|
52 |
// Modify cron count?
|
53 |
$es_c_croncount = apply_filters( 'es_email_sending_limit', $es_c_croncount );
|
54 |
parse_str( $es_c_cronurl, $output );
|
@@ -206,9 +222,10 @@ class ES_Cron {
|
|
206 |
if ( ! empty( $es_c_cronurl ) ) {
|
207 |
parse_str( $es_c_cronurl, $output );
|
208 |
$args['guid'] = $output['guid'];
|
209 |
-
if ( ! wp_next_scheduled( '
|
|
|
210 |
wp_clear_scheduled_hook( 'es_cron_hourly', array( $args['es'], $args['guid'] ) );
|
211 |
-
wp_schedule_event( time(), '
|
212 |
}
|
213 |
}
|
214 |
}
|
15 |
public function __construct() {
|
16 |
$this->handle_cron_request();
|
17 |
$this->set_cron();
|
18 |
+
add_action( 'ig_es_cron_fifteen_mins', array( $this, 'handle_cron_request' ), 10, 2 );
|
19 |
}
|
20 |
|
21 |
public function handle_cron_request( $es = '', $guid = '' ) {
|
22 |
+
$is_wp_cron = false;
|
23 |
+
if ( ! empty( $es ) ) {
|
24 |
+
$es_request = $es;
|
25 |
+
$is_wp_cron = true;
|
26 |
+
} else {
|
27 |
+
$es_request = Email_Subscribers::get_request( 'es' );
|
28 |
+
}
|
29 |
|
30 |
+
$self = ! empty( $_REQUEST['self'] ) ? $_REQUEST['self'] : 0;
|
|
|
|
|
|
|
|
|
|
|
|
|
31 |
|
32 |
if ( 'cron' === $es_request ) {
|
33 |
|
34 |
+
/*
|
35 |
+
$ig_es_last_cron_run = get_option( 'ig_es_last_cron_run', true );
|
36 |
+
$time_diff = ( time() - $ig_es_last_cron_run );
|
37 |
+
$time_diff = ( ! empty( $_GET['es_pro'] ) && ( $_GET['es_pro'] == 1 || $_GET['es_pro'] === true || $_GET['es_pro'] === 'true' ) ) ? 1 : floor( $time_diff / 800 );
|
38 |
+
*/
|
39 |
+
|
40 |
+
$server_cron = true;
|
41 |
+
$time_diff = 1;
|
42 |
+
if ( $is_wp_cron ) {
|
43 |
+
$server_cron = false;
|
44 |
+
}
|
45 |
+
|
46 |
+
if ( $server_cron || ( $is_wp_cron && $time_diff >= 1 ) || $self == 1 ) {
|
47 |
$guid = ( ! empty( $guid ) ) ? $guid : Email_Subscribers::get_request( 'guid' );
|
48 |
if ( ! empty( $guid ) ) {
|
|
|
49 |
$response = array( 'status' => 'SUCCESS', 'es_remaining_email_count' => 100 );
|
50 |
$es_process_request = true;
|
51 |
|
52 |
// filter request
|
53 |
$es_process_request = apply_filters( 'es_process_request', $es_process_request );
|
|
|
54 |
if ( true === $es_process_request ) {
|
55 |
$security1 = strlen( $guid );
|
56 |
$es_c_cronguid_noslash = str_replace( "-", "", $guid );
|
60 |
$es_c_cronurl = get_option( 'ig_es_cronurl' );
|
61 |
$es_c_croncount = get_option( 'ig_es_hourly_email_send_limit', 50 );
|
62 |
|
63 |
+
// We are running wp cron at the interval of 15 minutes.
|
64 |
+
if($is_wp_cron) {
|
65 |
+
$es_c_croncount = floor($es_c_croncount / 4);
|
66 |
+
}
|
67 |
+
|
68 |
// Modify cron count?
|
69 |
$es_c_croncount = apply_filters( 'es_email_sending_limit', $es_c_croncount );
|
70 |
parse_str( $es_c_cronurl, $output );
|
222 |
if ( ! empty( $es_c_cronurl ) ) {
|
223 |
parse_str( $es_c_cronurl, $output );
|
224 |
$args['guid'] = $output['guid'];
|
225 |
+
if ( ! wp_next_scheduled( 'ig_es_cron_fifteen_mins', array( $args['es'], $args['guid'] ) ) ) {
|
226 |
+
wp_clear_scheduled_hook( 'ig_es_cron_fifteen_mins', array( $args['es'], $args['guid'] ) );
|
227 |
wp_clear_scheduled_hook( 'es_cron_hourly', array( $args['es'], $args['guid'] ) );
|
228 |
+
wp_schedule_event( time(), 'ig_es_fifteen_mins_interval', 'ig_es_cron_fifteen_mins', array( $args['es'], $args['guid'] ) );
|
229 |
}
|
230 |
}
|
231 |
}
|
includes/admin/class-es-forms-table.php
CHANGED
@@ -15,12 +15,12 @@ class ES_Forms_Table extends WP_List_Table {
|
|
15 |
|
16 |
public function __construct() {
|
17 |
|
18 |
-
parent::__construct(
|
19 |
'singular' => __( 'Forms', 'email-subscribers' ), //singular name of the listed records
|
20 |
'plural' => __( 'Forms', 'email-subscribers' ), //plural name of the listed records
|
21 |
'ajax' => false, //does this table support ajax?,
|
22 |
'screen' => 'es_forms'
|
23 |
-
|
24 |
|
25 |
add_filter( 'set-screen-option', array( $this, 'set_screen' ), 10, 3 );
|
26 |
}
|
15 |
|
16 |
public function __construct() {
|
17 |
|
18 |
+
parent::__construct( array(
|
19 |
'singular' => __( 'Forms', 'email-subscribers' ), //singular name of the listed records
|
20 |
'plural' => __( 'Forms', 'email-subscribers' ), //plural name of the listed records
|
21 |
'ajax' => false, //does this table support ajax?,
|
22 |
'screen' => 'es_forms'
|
23 |
+
) );
|
24 |
|
25 |
add_filter( 'set-screen-option', array( $this, 'set_screen' ), 10, 3 );
|
26 |
}
|
includes/admin/class-es-handle-post-notification.php
CHANGED
@@ -3,7 +3,6 @@
|
|
3 |
class ES_Handle_Post_Notification {
|
4 |
|
5 |
public function __construct() {
|
6 |
-
global $wp_version;
|
7 |
|
8 |
add_action( 'transition_post_status', array( $this, 'es_post_publish_callback' ), 10, 3 );
|
9 |
|
3 |
class ES_Handle_Post_Notification {
|
4 |
|
5 |
public function __construct() {
|
|
|
6 |
|
7 |
add_action( 'transition_post_status', array( $this, 'es_post_publish_callback' ), 10, 3 );
|
8 |
|
includes/admin/class-es-handle-subscription.php
CHANGED
@@ -130,6 +130,7 @@ class ES_Handle_Subscription {
|
|
130 |
|
131 |
$contact_id = ES_DB_Contacts::add_subscriber( $data );
|
132 |
}
|
|
|
133 |
if ( count( $this->list_ids ) > 0 ) {
|
134 |
$contact_lists = ES_DB_Lists_Contacts::get_list_ids_by_contact( $contact_id );
|
135 |
if ( $contact_lists == $this->list_ids ) {
|
@@ -303,7 +304,6 @@ class ES_Handle_Subscription {
|
|
303 |
$hp_key = "esfpx_es_hp_" . wp_create_nonce( 'es_hp' );
|
304 |
if ( ! isset( $data[ $hp_key ] ) || ! empty( $data[ $hp_key ] ) ) {
|
305 |
$es_response['message'] = 'es_unexpected_error_notice';
|
306 |
-
|
307 |
return $es_response;
|
308 |
}
|
309 |
|
130 |
|
131 |
$contact_id = ES_DB_Contacts::add_subscriber( $data );
|
132 |
}
|
133 |
+
|
134 |
if ( count( $this->list_ids ) > 0 ) {
|
135 |
$contact_lists = ES_DB_Lists_Contacts::get_list_ids_by_contact( $contact_id );
|
136 |
if ( $contact_lists == $this->list_ids ) {
|
304 |
$hp_key = "esfpx_es_hp_" . wp_create_nonce( 'es_hp' );
|
305 |
if ( ! isset( $data[ $hp_key ] ) || ! empty( $data[ $hp_key ] ) ) {
|
306 |
$es_response['message'] = 'es_unexpected_error_notice';
|
|
|
307 |
return $es_response;
|
308 |
}
|
309 |
|
includes/admin/class-es-subscription-throttaling.php
CHANGED
@@ -14,13 +14,13 @@ class ES_Subscription_Throttaling {
|
|
14 |
if ( ! ( is_user_logged_in() && is_super_admin() ) ) {
|
15 |
$subscriber_ip = self::getUserIP();
|
16 |
if ( ! empty( $subscriber_ip ) ) {
|
17 |
-
$query = "SELECT count(*) as count from " . IG_CONTACTS_IPS_TABLE . " WHERE ip = %s AND ( `
|
18 |
$subscribers = $wpdb->get_var( $wpdb->prepare( $query, $subscriber_ip, DAY_IN_SECONDS ) );
|
19 |
|
20 |
if ( $subscribers > 0 ) {
|
21 |
$timeout = MINUTE_IN_SECONDS * pow( 2, $subscribers - 1 );
|
22 |
|
23 |
-
$query = "SELECT count(*) as count from " . IG_CONTACTS_IPS_TABLE . " WHERE ip = %s AND ( `
|
24 |
$subscribers = $wpdb->get_var( $wpdb->prepare( $query, $subscriber_ip, $timeout ) );
|
25 |
|
26 |
if ( $subscribers > 0 ) {
|
@@ -33,7 +33,7 @@ class ES_Subscription_Throttaling {
|
|
33 |
$wpdb->query( $wpdb->prepare( $query, $subscriber_ip ) );
|
34 |
|
35 |
// Delete older entries
|
36 |
-
$query = "DELETE FROM " . IG_CONTACTS_IPS_TABLE . " WHERE (`
|
37 |
$wpdb->query( $wpdb->prepare( $query, DAY_IN_SECONDS ) );
|
38 |
}
|
39 |
}
|
14 |
if ( ! ( is_user_logged_in() && is_super_admin() ) ) {
|
15 |
$subscriber_ip = self::getUserIP();
|
16 |
if ( ! empty( $subscriber_ip ) ) {
|
17 |
+
$query = "SELECT count(*) as count from " . IG_CONTACTS_IPS_TABLE . " WHERE ip = %s AND ( `created_on` >= NOW() - INTERVAL %s SECOND )";
|
18 |
$subscribers = $wpdb->get_var( $wpdb->prepare( $query, $subscriber_ip, DAY_IN_SECONDS ) );
|
19 |
|
20 |
if ( $subscribers > 0 ) {
|
21 |
$timeout = MINUTE_IN_SECONDS * pow( 2, $subscribers - 1 );
|
22 |
|
23 |
+
$query = "SELECT count(*) as count from " . IG_CONTACTS_IPS_TABLE . " WHERE ip = %s AND ( `created_on` >= NOW() - INTERVAL %s SECOND ) LIMIT 1";
|
24 |
$subscribers = $wpdb->get_var( $wpdb->prepare( $query, $subscriber_ip, $timeout ) );
|
25 |
|
26 |
if ( $subscribers > 0 ) {
|
33 |
$wpdb->query( $wpdb->prepare( $query, $subscriber_ip ) );
|
34 |
|
35 |
// Delete older entries
|
36 |
+
$query = "DELETE FROM " . IG_CONTACTS_IPS_TABLE . " WHERE (`created_on` < NOW() - INTERVAL %s SECOND )";
|
37 |
$wpdb->query( $wpdb->prepare( $query, DAY_IN_SECONDS ) );
|
38 |
}
|
39 |
}
|
includes/class-email-subscribers.php
CHANGED
@@ -88,9 +88,9 @@ class Email_Subscribers {
|
|
88 |
$this->define_public_hooks();
|
89 |
|
90 |
add_action( 'widgets_init', array( $this, 'register_es_widget' ) );
|
|
|
91 |
}
|
92 |
|
93 |
-
|
94 |
public function add_version_notice() {
|
95 |
$active_plugins = get_option( 'active_plugins', array() );
|
96 |
if ( is_multisite() ) {
|
@@ -390,4 +390,12 @@ class Email_Subscribers {
|
|
390 |
update_option( 'widget_' . $widget_id, $widget_instances );
|
391 |
}
|
392 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
393 |
}
|
88 |
$this->define_public_hooks();
|
89 |
|
90 |
add_action( 'widgets_init', array( $this, 'register_es_widget' ) );
|
91 |
+
add_filter( 'cron_schedules', array( $this, 'es_add_cron_interval' ));
|
92 |
}
|
93 |
|
|
|
94 |
public function add_version_notice() {
|
95 |
$active_plugins = get_option( 'active_plugins', array() );
|
96 |
if ( is_multisite() ) {
|
390 |
update_option( 'widget_' . $widget_id, $widget_instances );
|
391 |
}
|
392 |
|
393 |
+
function es_add_cron_interval( $schedules ) {
|
394 |
+
$schedules['ig_es_fifteen_mins_interval'] = array(
|
395 |
+
'interval' => 900,
|
396 |
+
'display' => esc_html__( 'Every Fifteen Minutes' ),
|
397 |
+
);
|
398 |
+
return $schedules;
|
399 |
+
}
|
400 |
+
|
401 |
}
|
includes/class-es-mailer.php
CHANGED
@@ -24,10 +24,10 @@ class ES_Mailer {
|
|
24 |
$subject = $notification['subject'];
|
25 |
$guid = $notification['hash'];
|
26 |
$template_id = ES_DB_Campaigns::get_templateid_by_campaign( $notification['id'] );
|
27 |
-
|
28 |
-
$emails = array_map( function ( $mail ) {
|
29 |
return $mail['email'];
|
30 |
-
}
|
|
|
31 |
|
32 |
$emails_name_map = ES_DB_Contacts::get_subsribers_email_name_map( $emails );
|
33 |
|
24 |
$subject = $notification['subject'];
|
25 |
$guid = $notification['hash'];
|
26 |
$template_id = ES_DB_Campaigns::get_templateid_by_campaign( $notification['id'] );
|
27 |
+
function temp_fun( $mail ) {
|
|
|
28 |
return $mail['email'];
|
29 |
+
}
|
30 |
+
$emails = array_map( "temp_fun", $mails );
|
31 |
|
32 |
$emails_name_map = ES_DB_Contacts::get_subsribers_email_name_map( $emails );
|
33 |
|
includes/db/class-es-db-contacts.php
CHANGED
@@ -79,9 +79,10 @@ class ES_DB_Contacts {
|
|
79 |
|
80 |
$subscriber_email_name_map = array();
|
81 |
if ( count( $emails ) > 0 ) {
|
82 |
-
|
83 |
return "'" . esc_sql( $v ) . "'";
|
84 |
-
}
|
|
|
85 |
|
86 |
$emails_str = implode( ', ', $emails );
|
87 |
$subscribers = $wpdb->get_results( "SELECT email, first_name FROM " . IG_CONTACTS_TABLE . " WHERE email IN ( " . $emails_str . ")", ARRAY_A );
|
79 |
|
80 |
$subscriber_email_name_map = array();
|
81 |
if ( count( $emails ) > 0 ) {
|
82 |
+
function temp( $v ) {
|
83 |
return "'" . esc_sql( $v ) . "'";
|
84 |
+
}
|
85 |
+
$emails = array_map( "temp" , $emails );
|
86 |
|
87 |
$emails_str = implode( ', ', $emails );
|
88 |
$subscribers = $wpdb->get_results( "SELECT email, first_name FROM " . IG_CONTACTS_TABLE . " WHERE email IN ( " . $emails_str . ")", ARRAY_A );
|
languages/email-subscribers.pot
CHANGED
@@ -3,7 +3,7 @@ msgid ""
|
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: Email Subscribers & Newsletters\n"
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
-
"POT-Creation-Date: 2019-03-
|
7 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
8 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
9 |
"Language-Team: \n"
|
@@ -15,11 +15,78 @@ msgstr ""
|
|
15 |
"X-Generator: Loco https://localise.biz/\n"
|
16 |
"X-Loco-Version: 2.2.0; wp-5.1"
|
17 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
18 |
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:143
|
19 |
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:81
|
20 |
msgid "Audience"
|
21 |
msgstr ""
|
22 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
23 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:89
|
24 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:234
|
25 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:484
|
@@ -308,10 +375,6 @@ msgstr ""
|
|
308 |
msgid "What data Email Subscribers stores on your end?"
|
309 |
msgstr ""
|
310 |
|
311 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/help.php:80
|
312 |
-
msgid "Post Notifications"
|
313 |
-
msgstr ""
|
314 |
-
|
315 |
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/help.php:82
|
316 |
msgid "Create and Send Post Notification Emails when new posts are published"
|
317 |
msgstr ""
|
@@ -611,34 +674,6 @@ msgstr ""
|
|
611 |
msgid "Here are some quick links"
|
612 |
msgstr ""
|
613 |
|
614 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:82
|
615 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:19
|
616 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:20
|
617 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:66
|
618 |
-
msgid "Forms"
|
619 |
-
msgstr ""
|
620 |
-
|
621 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:83
|
622 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:76
|
623 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:234
|
624 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:41
|
625 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:54
|
626 |
-
msgid "Campaigns"
|
627 |
-
msgstr ""
|
628 |
-
|
629 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:84
|
630 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:66
|
631 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:290
|
632 |
-
msgid "Lists"
|
633 |
-
msgstr ""
|
634 |
-
|
635 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:85
|
636 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:20
|
637 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:43
|
638 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:78
|
639 |
-
msgid "Reports"
|
640 |
-
msgstr ""
|
641 |
-
|
642 |
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:89
|
643 |
msgid "Add Subscribe form"
|
644 |
msgstr ""
|
@@ -689,6 +724,7 @@ msgid "Privacy Policy"
|
|
689 |
msgstr ""
|
690 |
|
691 |
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:124
|
|
|
692 |
msgid "Subscribe"
|
693 |
msgstr ""
|
694 |
|
@@ -737,13 +773,6 @@ msgstr ""
|
|
737 |
msgid "Email Subscribers Widget"
|
738 |
msgstr ""
|
739 |
|
740 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:11
|
741 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:11
|
742 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:12
|
743 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-form-widget.php:11
|
744 |
-
msgid "Email Subscribers"
|
745 |
-
msgstr ""
|
746 |
-
|
747 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:49
|
748 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:109
|
749 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:315
|
@@ -1301,11 +1330,6 @@ msgstr ""
|
|
1301 |
msgid "No Campaigns Found."
|
1302 |
msgstr ""
|
1303 |
|
1304 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:191
|
1305 |
-
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:183
|
1306 |
-
msgid "Broadcast"
|
1307 |
-
msgstr ""
|
1308 |
-
|
1309 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:131
|
1310 |
msgid "Sender"
|
1311 |
msgstr ""
|
3 |
msgstr ""
|
4 |
"Project-Id-Version: Email Subscribers & Newsletters\n"
|
5 |
"Report-Msgid-Bugs-To: \n"
|
6 |
+
"POT-Creation-Date: 2019-03-12 10:58+0000\n"
|
7 |
"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
|
8 |
"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
|
9 |
"Language-Team: \n"
|
15 |
"X-Generator: Loco https://localise.biz/\n"
|
16 |
"X-Loco-Version: 2.2.0; wp-5.1"
|
17 |
|
18 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:135
|
19 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:11
|
20 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:11
|
21 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-old-widget.php:12
|
22 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-form-widget.php:11
|
23 |
+
msgid "Email Subscribers"
|
24 |
+
msgstr ""
|
25 |
+
|
26 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:138
|
27 |
+
msgid "Dashboard"
|
28 |
+
msgstr ""
|
29 |
+
|
30 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:139
|
31 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:84
|
32 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-lists-table.php:66
|
33 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:290
|
34 |
+
msgid "Lists"
|
35 |
+
msgstr ""
|
36 |
+
|
37 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:140
|
38 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/help.php:80
|
39 |
+
msgid "Post Notifications"
|
40 |
+
msgstr ""
|
41 |
+
|
42 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:141
|
43 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:191
|
44 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:183
|
45 |
+
msgid "Broadcast"
|
46 |
+
msgstr ""
|
47 |
+
|
48 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:142
|
49 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:85
|
50 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:20
|
51 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:43
|
52 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-reports-table.php:78
|
53 |
+
msgid "Reports"
|
54 |
+
msgstr ""
|
55 |
+
|
56 |
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:143
|
57 |
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:81
|
58 |
msgid "Audience"
|
59 |
msgstr ""
|
60 |
|
61 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:144
|
62 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:83
|
63 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-newsletters.php:76
|
64 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-post-notifications.php:234
|
65 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:41
|
66 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-campaigns-table.php:54
|
67 |
+
msgid "Campaigns"
|
68 |
+
msgstr ""
|
69 |
+
|
70 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:145
|
71 |
+
msgid "Settings"
|
72 |
+
msgstr ""
|
73 |
+
|
74 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:146
|
75 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:82
|
76 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:19
|
77 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:20
|
78 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:66
|
79 |
+
msgid "Forms"
|
80 |
+
msgstr ""
|
81 |
+
|
82 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:147
|
83 |
+
msgid "Tools"
|
84 |
+
msgstr ""
|
85 |
+
|
86 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/admin/class-email-subscribers-admin.php:148
|
87 |
+
msgid "Template Preview"
|
88 |
+
msgstr ""
|
89 |
+
|
90 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/class-es-common.php:89
|
91 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-export-subscribers.php:234
|
92 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-subscribers-table.php:484
|
375 |
msgid "What data Email Subscribers stores on your end?"
|
376 |
msgstr ""
|
377 |
|
|
|
|
|
|
|
|
|
378 |
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/help.php:82
|
379 |
msgid "Create and Send Post Notification Emails when new posts are published"
|
380 |
msgstr ""
|
674 |
msgid "Here are some quick links"
|
675 |
msgstr ""
|
676 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
677 |
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:89
|
678 |
msgid "Add Subscribe form"
|
679 |
msgstr ""
|
724 |
msgstr ""
|
725 |
|
726 |
#: ../../../../wpRepos/gitlab/email-subscribers/admin/partials/dashboard.php:124
|
727 |
+
#: ../../../../wpRepos/gitlab/email-subscribers/public/partials/class-es-shortcode.php:191
|
728 |
msgid "Subscribe"
|
729 |
msgstr ""
|
730 |
|
773 |
msgid "Email Subscribers Widget"
|
774 |
msgstr ""
|
775 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
776 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-widget.php:49
|
777 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-handle-sync-wp-user.php:109
|
778 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-forms-table.php:315
|
1330 |
msgid "No Campaigns Found."
|
1331 |
msgstr ""
|
1332 |
|
|
|
|
|
|
|
|
|
|
|
1333 |
#: ../../../../wpRepos/gitlab/email-subscribers/includes/admin/class-es-admin-settings.php:131
|
1334 |
msgid "Sender"
|
1335 |
msgstr ""
|
public/partials/class-es-shortcode.php
CHANGED
@@ -183,12 +183,12 @@ class ES_Shortcode {
|
|
183 |
<input type="hidden" name="es_email_page_url" value="<?php echo $current_page_url; ?>"/>
|
184 |
<input type="hidden" name="status" value="Unconfirmed"/>
|
185 |
<input type="hidden" name="es-subscribe" id="es-subscribe" value="<?php echo $nonce; ?>"/>
|
186 |
-
<label style="<?php echo $hp_style; ?>"><input type="text" name="es_hp_<?php echo wp_create_nonce( 'es_hp' ); ?>" class="es_required_field" tabindex="-1" autocomplete="
|
187 |
<?php do_action( 'es_after_form_fields' ) ?>
|
188 |
<?php if ( ( in_array( 'gdpr/gdpr.php', $active_plugins ) || array_key_exists( 'gdpr/gdpr.php', $active_plugins ) ) ) {
|
189 |
echo GDPR::consent_checkboxes();
|
190 |
} ?>
|
191 |
-
<input type="submit" name="submit" class="es_subscription_form_submit es_submit_button" id="es_subscription_form_submit_<?php echo $unique_id; ?>" value="Subscribe"/>
|
192 |
|
193 |
|
194 |
<?php $spinner_image_path = plugin_dir_url( ES_PLUGIN_BASE_NAME ) . 'public/images/spinner.gif'; ?>
|
183 |
<input type="hidden" name="es_email_page_url" value="<?php echo $current_page_url; ?>"/>
|
184 |
<input type="hidden" name="status" value="Unconfirmed"/>
|
185 |
<input type="hidden" name="es-subscribe" id="es-subscribe" value="<?php echo $nonce; ?>"/>
|
186 |
+
<label style="<?php echo $hp_style; ?>"><input type="text" name="es_hp_<?php echo wp_create_nonce( 'es_hp' ); ?>" class="es_required_field" tabindex="-1" autocomplete="-1"/></label>
|
187 |
<?php do_action( 'es_after_form_fields' ) ?>
|
188 |
<?php if ( ( in_array( 'gdpr/gdpr.php', $active_plugins ) || array_key_exists( 'gdpr/gdpr.php', $active_plugins ) ) ) {
|
189 |
echo GDPR::consent_checkboxes();
|
190 |
} ?>
|
191 |
+
<input type="submit" name="submit" class="es_subscription_form_submit es_submit_button" id="es_subscription_form_submit_<?php echo $unique_id; ?>" value="<?php _e( 'Subscribe', 'email-subscribers' ) ?>"/>
|
192 |
|
193 |
|
194 |
<?php $spinner_image_path = plugin_dir_url( ES_PLUGIN_BASE_NAME ) . 'public/images/spinner.gif'; ?>
|
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
|
8 |
-
Stable tag: 4.0.
|
9 |
License: GPLv3
|
10 |
License URI: http://www.gnu.org/licenses
|
11 |
|
@@ -308,6 +308,12 @@ Use our free plugin [Email Subscribers - Group Selector](https://wordpress.org/p
|
|
308 |
|
309 |
== Changelog ==
|
310 |
|
|
|
|
|
|
|
|
|
|
|
|
|
311 |
= 4.0.5 (11.03.2019) =
|
312 |
* Update: Enable admin email notification after campaign sent
|
313 |
* Fix: Migration of old Email Subscriber's widgets
|
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
|
8 |
+
Stable tag: 4.0.6
|
9 |
License: GPLv3
|
10 |
License URI: http://www.gnu.org/licenses
|
11 |
|
308 |
|
309 |
== Changelog ==
|
310 |
|
311 |
+
= 4.0.6 (12.03.2019) =
|
312 |
+
* Enhancement: Now, queued emails will be processed on every 15 minutes.
|
313 |
+
* Fix: Parse error: syntax error, unexpected T_FUNCTION, expecting ')'
|
314 |
+
* Fix: Parse error: syntax error, unexpected '[', expecting ')'
|
315 |
+
* Update: POT file
|
316 |
+
|
317 |
= 4.0.5 (11.03.2019) =
|
318 |
* Update: Enable admin email notification after campaign sent
|
319 |
* Fix: Migration of old Email Subscriber's widgets
|