plugin_file = $file;
$this->loader = $loader;
$this->table_manager = $table_manager;
$this->add_loadie($table_manager);
$this->translations_path = dirname(plugin_basename($this->plugin_file)) . '/languages/';
}
/**
* Add an Email Log Loadie.
* The `load()` method of the Loadies will be called when Email Log is loaded.
*
* @param \EmailLog\Core\Loadie $loadie Loadie to be loaded.
*
* @return bool False if Email Log is already loaded or if $loadie is not of `Loadie` type. True otherwise.
*/
public function add_loadie($loadie, $loadie_init = false)
{
if ($this->loaded) {
return false;
}
if (! $loadie instanceof Loadie) {
return false;
}
if ($loadie_init === true) {
$this->loadies_init[] = $loadie;
} else {
$this->loadies[] = $loadie;
}
return true;
}
/**
* Load the plugin.
*/
public function load()
{
if ($this->loaded) {
return;
}
load_plugin_textdomain('email-log', false, $this->translations_path);
$this->table_manager->load();
foreach ($this->loadies as $loadie) {
$loadie->load();
}
foreach ($this->loadies_init as $loadie_init) {
add_action('init', array($loadie_init, 'load'));
}
$this->loaded = true;
$options = get_option('email-log-core');
/**
* Email Log plugin loaded.
*
* @since 2.0
*/
do_action('el_loaded');
add_action('admin_enqueue_scripts', array($this, 'admin_enqueue_scripts'));
add_action('admin_action_emaillog_install_wp301', array($this, 'install_wp301'));
}
function admin_enqueue_scripts()
{
$js_localize = array(
'undocumented_error' => __('An undocumented error has occurred. Please refresh the page and try again.', 'email-log'),
'documented_error' => __('An error has occurred.', 'email-log'),
'plugin_name' => 'Email Log PRO',
'url' => EMAIL_LOG_URL,
'icon_url' => EMAIL_LOG_URI . 'assets/img/loader-icon.png',
'settings_url' => admin_url('admin.php?page=email-log'),
'is_plugin_page' => $this->is_plugin_page(),
'home_url' => get_home_url(),
'loading_icon_url' => EMAIL_LOG_URI . 'assets/img/loading-icon.png',
'email_test_url' => EMAIL_LOG_URI . 'assets/img/emaillog-test.gif',
'el_nonce' => wp_create_nonce('el-email-test'),
'wp301_install_url' => add_query_arg(array('action' => 'emaillog_install_wp301', '_wpnonce' => wp_create_nonce('install_wp301'), 'rnd' => wp_rand()), admin_url('admin.php')),
);
if ($this->is_plugin_page()) {
wp_enqueue_style('wp-jquery-ui-dialog');
wp_enqueue_script('jquery-ui-position');
wp_enqueue_script("jquery-effects-core");
wp_enqueue_script("jquery-effects-blind");
wp_enqueue_script('jquery-ui-accordion');
wp_enqueue_script('jquery-ui-dialog');
wp_enqueue_script('email-log', EMAIL_LOG_URL . 'assets/js/email-log-admin.js', array('jquery'), $this->get_version(), true);
wp_enqueue_style('email-log', EMAIL_LOG_URL . 'assets/css/email-log-admin.css', array(), $this->get_version());
wp_localize_script('email-log', 'wp_email_log', $js_localize);
}
}
// auto download / install / activate WP 301 Redirects plugin
public function install_wp301()
{
check_ajax_referer('install_wp301');
if (false === current_user_can('manage_options')) {
wp_die('Sorry, you have to be an admin to run this action.');
}
$plugin_slug = 'eps-301-redirects/eps-301-redirects.php';
$plugin_zip = 'https://downloads.wordpress.org/plugin/eps-301-redirects.latest-stable.zip';
@include_once ABSPATH . 'wp-admin/includes/plugin.php';
@include_once ABSPATH . 'wp-admin/includes/class-wp-upgrader.php';
@include_once ABSPATH . 'wp-admin/includes/plugin-install.php';
@include_once ABSPATH . 'wp-admin/includes/file.php';
@include_once ABSPATH . 'wp-admin/includes/misc.php';
echo '';
echo '
';
echo 'If things are not done in a minute
install the plugin manually via Plugins page';
echo 'Starting ...
';
wp_cache_flush();
$upgrader = new \Plugin_Upgrader();
echo 'Check if WP 301 Redirects is already installed ...
';
if ($this->is_plugin_installed($plugin_slug)) {
echo 'WP 301 Redirects is already installed!
Making sure it\'s the latest version.
';
$upgrader->upgrade($plugin_slug);
$installed = true;
} else {
echo 'Installing WP 301 Redirects.
';
$installed = $upgrader->install($plugin_zip);
}
wp_cache_flush();
if (!is_wp_error($installed) && $installed) {
echo 'Activating WP 301 Redirects.
';
$activate = activate_plugin($plugin_slug);
if (is_null($activate)) {
echo 'WP 301 Redirects Activated.
';
echo '';
echo '
If you are not redirected in a few seconds -
click here.';
}
} else {
echo 'Could not install WP 301 Redirects. You\'ll have to
download and install manually.';
}
echo '
';
} // install_wp301
/**
* Check if given plugin is installed
*
* @param [string] $slug Plugin slug
* @return boolean
*/
static function is_plugin_installed($slug)
{
if (!function_exists('get_plugins')) {
require_once ABSPATH . 'wp-admin/includes/plugin.php';
}
$all_plugins = get_plugins();
if (!empty($all_plugins[$slug])) {
return true;
} else {
return false;
}
} // is_plugin_installed
public function is_plugin_page()
{
if (!function_exists('get_current_screen')) {
return false;
}
$current_screen = get_current_screen();
if (!empty($current_screen) && in_array($current_screen->id, array('toplevel_page_email-log', 'toplevel_page_email-log-license', 'email-log_page_email-log-settings', 'email-log_page_email-log-license', 'email-log_page_email-log-monitor'))) {
return true;
} else {
return false;
}
} // is_plugin_page
/**
* Plugin API has been overridden.
*
* @since 2.4.5
*/
public function plugin_api_overridden()
{
$this->plugins_api_overridden = true;
}
/**
* Has the plugin API have been overridden?
*
* @since 2.4.5
*
* @return bool True if overridden, False otherwise.
*/
public function is_plugin_api_overridden()
{
return $this->plugins_api_overridden;
}
/**
* Return Email Log version.
*
* @return string Email Log Version.
*/
public function get_version()
{
return email_log_plugin_version();
}
/**
* Return the Email Log plugin directory path.
*
* @return string Plugin directory path.
*/
public function get_plugin_path()
{
return plugin_dir_path($this->plugin_file);
}
/**
* Return the Email Log plugin file.
*
* @since 2.0.0
*
* @return string Plugin directory path.
*/
public function get_plugin_file()
{
return $this->plugin_file;
}
public static function wp_kses_wf($html)
{
add_filter('safe_style_css', function ($styles) {
$styles_wf = array(
'text-align',
'margin',
'color',
'float',
'border',
'background',
'background-color',
'border-bottom',
'border-bottom-color',
'border-bottom-style',
'border-bottom-width',
'border-collapse',
'border-color',
'border-left',
'border-left-color',
'border-left-style',
'border-left-width',
'border-right',
'border-right-color',
'border-right-style',
'border-right-width',
'border-spacing',
'border-style',
'border-top',
'border-top-color',
'border-top-style',
'border-top-width',
'border-width',
'caption-side',
'clear',
'cursor',
'direction',
'font',
'font-family',
'font-size',
'font-style',
'font-variant',
'font-weight',
'height',
'letter-spacing',
'line-height',
'margin-bottom',
'margin-left',
'margin-right',
'margin-top',
'overflow',
'padding',
'padding-bottom',
'padding-left',
'padding-right',
'padding-top',
'text-decoration',
'text-indent',
'vertical-align',
'width',
'display',
);
foreach ($styles_wf as $style_wf) {
$styles[] = $style_wf;
}
return $styles;
});
$allowed_tags = wp_kses_allowed_html('post');
$allowed_tags['input'] = array(
'type' => true,
'style' => true,
'class' => true,
'id' => true,
'checked' => true,
'disabled' => true,
'name' => true,
'size' => true,
'placeholder' => true,
'value' => true,
'data-*' => true,
'size' => true,
'disabled' => true
);
$allowed_tags['textarea'] = array(
'type' => true,
'style' => true,
'class' => true,
'id' => true,
'checked' => true,
'disabled' => true,
'name' => true,
'size' => true,
'placeholder' => true,
'value' => true,
'data-*' => true,
'cols' => true,
'rows' => true,
'disabled' => true,
'autocomplete' => true
);
$allowed_tags['select'] = array(
'type' => true,
'style' => true,
'class' => true,
'id' => true,
'checked' => true,
'disabled' => true,
'name' => true,
'size' => true,
'placeholder' => true,
'value' => true,
'data-*' => true,
'multiple' => true,
'disabled' => true
);
$allowed_tags['option'] = array(
'type' => true,
'style' => true,
'class' => true,
'id' => true,
'checked' => true,
'disabled' => true,
'name' => true,
'size' => true,
'placeholder' => true,
'value' => true,
'selected' => true,
'data-*' => true
);
$allowed_tags['optgroup'] = array(
'type' => true,
'style' => true,
'class' => true,
'id' => true,
'checked' => true,
'disabled' => true,
'name' => true,
'size' => true,
'placeholder' => true,
'value' => true,
'selected' => true,
'data-*' => true,
'label' => true
);
$allowed_tags['a'] = array(
'href' => true,
'data-*' => true,
'class' => true,
'style' => true,
'id' => true,
'target' => true,
'data-*' => true,
'role' => true,
'aria-controls' => true,
'aria-selected' => true,
'disabled' => true
);
$allowed_tags['div'] = array(
'style' => true,
'class' => true,
'id' => true,
'data-*' => true,
'role' => true,
'aria-labelledby' => true,
'value' => true,
'aria-modal' => true,
'tabindex' => true
);
$allowed_tags['li'] = array(
'style' => true,
'class' => true,
'id' => true,
'data-*' => true,
'role' => true,
'aria-labelledby' => true,
'value' => true,
'aria-modal' => true,
'tabindex' => true
);
$allowed_tags['span'] = array(
'style' => true,
'class' => true,
'id' => true,
'data-*' => true,
'aria-hidden' => true
);
$allowed_tags['style'] = array(
'class' => true,
'id' => true,
'type' => true,
'style' => true
);
$allowed_tags['fieldset'] = array(
'class' => true,
'id' => true,
'type' => true,
'style' => true
);
$allowed_tags['link'] = array(
'class' => true,
'id' => true,
'type' => true,
'rel' => true,
'href' => true,
'media' => true,
'style' => true
);
$allowed_tags['form'] = array(
'style' => true,
'class' => true,
'id' => true,
'method' => true,
'action' => true,
'data-*' => true,
'style' => true
);
$allowed_tags['script'] = array(
'class' => true,
'id' => true,
'type' => true,
'src' => true,
'style' => true
);
$allowed_tags['table'] = array(
'class' => true,
'id' => true,
'type' => true,
'cellpadding' => true,
'cellspacing' => true,
'border' => true,
'style' => true
);
$allowed_tags['canvas'] = array(
'class' => true,
'id' => true,
'style' => true
);
if(empty($html)){
echo '';
} else {
echo wp_kses($html, $allowed_tags);
}
add_filter('safe_style_css', function ($styles) {
$styles_wf = array(
'text-align',
'margin',
'color',
'float',
'border',
'background',
'background-color',
'border-bottom',
'border-bottom-color',
'border-bottom-style',
'border-bottom-width',
'border-collapse',
'border-color',
'border-left',
'border-left-color',
'border-left-style',
'border-left-width',
'border-right',
'border-right-color',
'border-right-style',
'border-right-width',
'border-spacing',
'border-style',
'border-top',
'border-top-color',
'border-top-style',
'border-top-width',
'border-width',
'caption-side',
'clear',
'cursor',
'direction',
'font',
'font-family',
'font-size',
'font-style',
'font-variant',
'font-weight',
'height',
'letter-spacing',
'line-height',
'margin-bottom',
'margin-left',
'margin-right',
'margin-top',
'overflow',
'padding',
'padding-bottom',
'padding-left',
'padding-right',
'padding-top',
'text-decoration',
'text-indent',
'vertical-align',
'width'
);
foreach ($styles_wf as $style_wf) {
if (($key = array_search($style_wf, $styles)) !== false) {
unset($styles[$key]);
}
}
return $styles;
});
}
}