/home3/bmscom/webinar.bmice.com/wp-content/plugins/webinar-ignition/inc/class-wi-emails.php
<?php
defined( 'ABSPATH' ) || exit;
use Pelago\Emogrifier\CssInliner;
class WI_Emails {
/**
* The single instance of the class
*
* @var WI_Emails
*/
protected static $_instance = null;
/**
* Main WI_Emails Instance.
*
* Ensures only one instance of WI_Emails is loaded or can be loaded.
*
* @static
* @return WI_Emails Main instance
*/
public static function instance() {
if ( is_null( self::$_instance ) ) {
self::$_instance = new self();
}
return self::$_instance;
}
private function init_hooks() {
add_action('admin_init', array($this, 'webinarignition_preview_email'));
add_action('webinarignition_email_header', array($this, 'webinarignition_email_header'));
add_action('webinarignition_email_footer', array($this, 'webinarignition_email_footer'), 20, 2);
add_filter( 'webinarignition_email_footer_text', array( $this, 'webinarignition_replace_email_template_placeholders') , 10, 2 );
/**
* Disabling WI SMTP options, in favour of other good third-party plugins
* TODO: Remove any unnecessary codes/files related to SMTP functionality in newer WI admin version
* /
/*add_action('phpmailer_init', array($this, 'webinarignition_set_wp_mail_from'));
if( ( get_option( 'webinarignition_smtp_connect' ) == 1 ) && get_option( 'webinarignition_smtp_settings_global' ) == 1 ){
add_action('phpmailer_init', array($this, 'webinarignition_phpmailer_smtp_config'), PHP_INT_MAX);
} elseif ( get_option( 'webinarignition_smtp_connect' ) == 1 ) {
add_action('phpmailer_init', array($this, 'webinarignition_phpmailer_smtp_config'));
}*/
}
/**
* Constructor for the email class hooks in all emails that can be sent.
*/
public function __construct() {
$this->init_hooks();
}
public function webinarignition_replace_email_template_placeholders( $string ) {
$privacy_policy_link = get_privacy_policy_url();
$privacy_policy = '<a href="'.$privacy_policy_link.'" target="_blank">'.__( "Privacy Policy", 'webinarignition').'</a>';
$imprint_page = wi_get_page_by_title ('Imprint');
$imprint_page = empty( $imprint_page ) ? wi_get_page_by_title('Impressum') : $imprint_page;
$imprint_page_url = !empty( $imprint_page ) ? get_permalink($imprint_page->ID) : '';
$imprint_page_link = '<a href="'.$imprint_page_url.'" target="_blank">'.__( "Imprint", 'webinarignition').'</a>';
$domain = wp_parse_url( home_url(), PHP_URL_HOST );
return str_replace(
array(
'{site_title}',
'{year}',
'{site_description}',
'{privacy_policy}',
'{imprint}',
),
array(
get_bloginfo( 'name' ),
date( "Y" ),
get_bloginfo( 'description' ),
$privacy_policy,
$imprint_page_link,
),
$string
);
}
public function webinarignition_email_header( $email_data ) {
include_once WEBINARIGNITION_PATH . 'templates/emails/email-header.php';
}
public function webinarignition_email_footer( $email_data ) {
$show_webinarignition_footer_logo = get_option( 'show_webinarignition_footer_logo' );
include_once WEBINARIGNITION_PATH . 'templates/emails/email-footer.php';
}
/**
* Wraps a message in the mail template
* @param string $body_content Email message.
* @param string $footer Footer html from DB is webinar-specific footer chosen
* @param obj $webinar_data Webinar data object.
*
* @return string
*/
public function wrap_email_content( $email_data ) {
$webinarignition_enable_header_img_max_width = get_option( 'webinarignition_enable_header_img_max_width', 'yes' );
$webinarignition_email_logo_max_width = get_option( 'webinarignition_email_logo_max_width', 265 );
$email_data->max_width_css = !empty( $webinarignition_enable_header_img_max_width ) ? 'max-width:' . $webinarignition_email_logo_max_width . 'px;' : '';
$show_webinarignition_footer_logo = get_option( 'show_webinarignition_footer_logo' );
// Buffer.
ob_start();
include_once WEBINARIGNITION_PATH . 'templates/emails/email-header.php';
echo wpautop( wptexturize( $email_data->bodyContent ) );
include_once WEBINARIGNITION_PATH . 'templates/emails/email-footer.php';
// Get contents.
$body_content = ob_get_clean();
return $body_content;
}
/**
* Apply inline styles to dynamic content.
*/
public function style_inline( $content ) {
ob_start();
include_once WEBINARIGNITION_PATH . 'templates/emails/email-styles.php';
$css = apply_filters( 'webinarignition_email_styles', ob_get_clean() );
$emogrifier_class = 'Pelago\\Emogrifier';
if ( class_exists( 'DOMDocument' ) && class_exists( $emogrifier_class ) ) {
$emogrifier = new $emogrifier_class( $content, $css );
$content = $emogrifier->emogrify();
$html_prune = \Pelago\Emogrifier\HtmlProcessor\HtmlPruner::fromHtml( $content );
$html_prune->removeElementsWithDisplayNone();
$content = $html_prune->render();
} else {
$content = '<style type="text/css">' . $css . '</style>' . $content;
}
return $content;
}
public function build_email( $email_data ) {
ob_start();
$webinarignition_enable_header_img_max_width = get_option( 'webinarignition_enable_header_img_max_width', 'yes' );
$webinarignition_email_logo_max_width = get_option( 'webinarignition_email_logo_max_width', 265 );
$email_data->max_width_css = !empty( $webinarignition_enable_header_img_max_width ) ? 'max-width:' . $webinarignition_email_logo_max_width . 'px;' : '';
$show_webinarignition_footer_logo = get_option( 'show_webinarignition_footer_logo' );
include WEBINARIGNITION_PATH . 'templates/emails/email-header.php';
echo wpautop( wptexturize( $email_data->bodyContent ) );
include WEBINARIGNITION_PATH . 'templates/emails/email-footer.php';
// Get contents.
$content = ob_get_clean();
ob_start();
include WEBINARIGNITION_PATH . 'templates/emails/email-styles.php';
$css = apply_filters( 'webinarignition_email_styles', ob_get_clean() );
$emogrifier_class = 'Pelago\\Emogrifier';
if ( class_exists( 'DOMDocument' ) && class_exists( $emogrifier_class ) ) {
$emogrifier = new $emogrifier_class( $content, $css );
$content = $emogrifier->emogrify();
$html_prune = \Pelago\Emogrifier\HtmlProcessor\HtmlPruner::fromHtml( $content );
$html_prune->removeElementsWithDisplayNone();
$content = $html_prune->render();
} else {
$content = '<style type="text/css">' . $css . '</style>' . $content;
}
return $content;
}
public function webinarignition_preview_email( ) {
if ( isset( $_GET['preview-webinarignition-template'] ) ) {
if ( ! ( isset( $_REQUEST['_wpnonce'] ) && wp_verify_nonce( sanitize_text_field( wp_unslash( $_REQUEST['_wpnonce'] ) ), 'preview-mail' ) ) ) {
die( 'Security check' );
}
ob_start();
include_once WEBINARIGNITION_PATH . 'templates/emails/html-email-template-preview.php';
$bodyContent = ob_get_clean();
$email_data = new stdClass();
$email_data->email_subject = __( 'Email Message Subject', 'webinarignition' );
$email_data->emailheading = __( 'Sign Up Email Heading Text', 'webinarignition' );
$email_data->emailpreview = __( 'Sign Up Email Preview Text...', 'webinarignition' );
$email_data->bodyContent = $bodyContent;
$bodyContent = $this->style_inline( $this->wrap_email_content( $email_data ) );
echo $bodyContent;
exit;
}
}
public function webinarignition_set_wp_mail_from( $phpmailer ) {
$name = get_option( 'webinarignition_smtp_name' );
$email = get_option( 'webinarignition_smtp_email' );
$reply_to_email = get_option( 'webinarignition_reply_to_email' );
if( !empty( $email ) && !empty($name) && filter_var($email, FILTER_VALIDATE_EMAIL) ){
$phpmailer->setFrom( $email, $name );
} else {
$phpmailer->setFrom( get_bloginfo( "admin_email" ), get_bloginfo( "name" ) );
}
if( !empty( $reply_to_email ) ){
$phpmailer->addReplyTo( $reply_to_email, $name);
}
}
public function webinarignition_phpmailer_smtp_config( $phpmailer ) {
$host = get_option( 'webinarignition_smtp_host' );
$port = get_option( 'webinarignition_smtp_port' );
$protocol = get_option( 'webinarignition_smtp_protocol' );
$user = get_option( 'webinarignition_smtp_user' );
$pass = get_option( 'webinarignition_smtp_pass' );
$can_use_smtp = (int) get_option( 'webinarignition_smtp_connect' );
if( ! empty( $can_use_smtp ) && ! empty( $host ) && ! empty( $port ) && ! empty( $protocol ) && ! empty( $user ) && ! empty( $pass ) ){
$phpmailer->IsSMTP();
$phpmailer->Host = $host;
$phpmailer->Port = $port;
$phpmailer->SMTPAuth = true;
$phpmailer->Username = $user;
$phpmailer->Password = $pass;
$phpmailer->SMTPSecure = $protocol;
}
}
}
return new WI_Emails();