/home3/bmscom/webinar.bmice.com/wp-content/plugins/webinar-ignition/inc/schedule_email_live_fn.php
<?php use Twilio\Rest\Client;
defined( 'ABSPATH' ) || exit;
// ####################################
//
// Check If Current Is Within Range Of Email Date
//
// ####################################
function webinarignition_dt_check($start_date, $end_date, $date_from_db)
{
// Convert to timestamp
$start_ts = strtotime($start_date);
$end_ts = strtotime($end_date);
$user_ts = strtotime($date_from_db);
// Check that user date is between start & end
if (($user_ts >= $start_ts) && ($user_ts <= $end_ts)) {
return "yes";
} else {
return "no";
}
}
// ####################################
//
// Send Live-Webinar Email Notification
//
// ####################################
// --------------------------------------------------------------------------------------
function webinarignition_send_email($ID, $num, $webinar_data)
{
$date_format = !empty($webinar_data->date_format ) ? $webinar_data->date_format : get_option( "date_format");
if( !empty($webinar_data->time_format ) && ( $webinar_data->time_format == '12hour' || $webinar_data->time_format == '24hour' ) ){ //old formats
$webinar_data->time_format = get_option( "time_format", 'H:i' );
}
$time_format = $webinar_data->time_format;
global $wpdb;
$table_db_name = $wpdb->prefix . "webinarignition_leads";
$list = $wpdb->get_results("SELECT * FROM $table_db_name WHERE app_id = '$ID' ", OBJECT);
$body = '';
$Subject = $webinar_data->{"email_notiff_sbj_".$num};
$Subject = str_replace("{TITLE}", $webinar_data->webinar_desc, $Subject);
if( !empty( $webinar_data->templates_version ) || ( !empty( $webinar_data->use_new_email_signup_template ) && ( $webinar_data->use_new_email_signup_template == 'yes' ) ) ){
//use new templates
$webinar_data->emailheading = $webinar_data->{"email_notiff_".$num."_heading"};
$webinar_data->emailpreview = $webinar_data->{"email_notiff_".$num."_preview"};
$webinar_data->bodyContent = $webinar_data->{"email_notiff_body_".$num};
$webinar_data->footerContent = ( property_exists( $webinar_data, 'show_or_hide_local_notiff_'.$num.'_footer' ) && $webinar_data->{'show_or_hide_local_notiff_'.$num.'_footer'} == 'show' ) ? $webinar_data->{'local_notiff_'.$num.'_footer'} : '';
$email = new WI_Emails();
$getBodyEmail = $email->build_email( $webinar_data );
} else {
$emailHead = WebinarignitionEmailManager::get_email_head();
$getBodyEmail = $emailHead;
$getBodyEmail .= $webinar_data->{"email_notiff_body_".$num};
$getBodyEmail .= '</html>';
}
$translated_date = webinarignition_get_translated_date( $webinar_data->webinar_date, 'm-d-Y', $date_format );
$timeonly = ( empty($webinar_data->display_tz ) || ( !empty($webinar_data->display_tz) && ($webinar_data->display_tz == 'yes') ) ) ? false : true;
$body = str_replace("{DATE}", $translated_date . " @ " . webinarignition_get_time_tz($webinar_data->webinar_start_time, $time_format, $webinar_data->webinar_timezone, false, $timeonly ), $getBodyEmail);
$errs = 0;
$mesg = '';
webinarignition_test_smtp_options();
foreach ($list as $lead) {
$bdy = $body;
$bdy = str_replace("{FIRSTNAME}", $lead->name, $bdy);
$additional_params = (($webinar_data->paid_status == "paid") ? md5($webinar_data->paid_code) : "");
$bdy = WebinarignitionManager::replace_email_body_placeholders($webinar_data, $lead->ID, $bdy, $additional_params);
$mesg = "Added {$lead->name} ({$lead->email}) to email recipient list\n";
WebinarIgnition_Logs::add($mesg,$ID, WebinarIgnition_Logs::LIVE_EMAIL);
$headers = array('Content-Type: text/html; charset=UTF-8','From: ' . get_option('webinarignition_email_templates_from_name', get_option('blogname')) . ' <' . get_option('webinarignition_email_templates_from_email', get_option('admin_email')) . '>');
try {
if ( ! wp_mail( $lead->email, $Subject, $bdy, $headers) ) {
WebinarIgnition_Logs::add("ERROR:: Email could not be sent to {$lead->email}.",$ID, WebinarIgnition_Logs::LIVE_EMAIL);
} else {
WebinarIgnition_Logs::add( __( "Mail Sent.", "webinarignition"),$ID, WebinarIgnition_Logs::LIVE_EMAIL);
}
} catch ( Exception $e ) {
WebinarIgnition_Logs::add( __( "ERROR:: Email could not be sent to", 'webinarignition')." {$lead->email}.",$ID, WebinarIgnition_Logs::LIVE_EMAIL);
}
}
return true;
}
// --------------------------------------------------------------------------------------
// ####################################
//
// Send TXT Notification
//
// ####################################
function webinarignition_send_txt($results)
{
// LOOP THROUGH EMAILS HERE ::
global $wpdb;
$table_db_name = $wpdb->prefix . "webinarignition_leads";
$leads = $wpdb->get_results("SELECT * FROM $table_db_name WHERE app_id = '{$results->id}' ", OBJECT);
// Loop Through Each Lead & Send ::
// Send TXT Messages
$AccountSid = $results->twilio_id;
$AuthToken = $results->twilio_token;
$client = new Client($AccountSid, $AuthToken);
$MSG = $results->twilio_msg;
// Shortcode {LINK}
$txt_sent = false;
foreach ($leads as $lead) {
if ($lead->phone == "undefined" || $lead->phone == "") {
} else {
$txt_sent = true;
try {
$additional_params = (($results->paid_status == "paid") ? md5($results->paid_code) : "");
$MSG = WebinarignitionManager::replace_email_body_placeholders($results, $lead->ID, $MSG, $additional_params, ['is_sms' => true]);
$client->messages->create(
sanitize_text_field( trim($lead->phone) ),
array(
'from' => $results->twilio_number,
'body' => $MSG
)
);
WebinarIgnition_Logs::add("TXT Sent to {$lead->name} ({$lead->phone})",$results->id, WebinarIgnition_Logs::LIVE_SMS);
//echo 'TXT Sent :: ' . $leads->phone;
//echo "<br>";
} catch (Exception $e) {
// Error On Phone Number - Do Nothing
// echo 'Error: ' . $e->getMessage();
WebinarIgnition_Logs::add(__( "Error sending TXT to", 'webinarignition') ." {$lead->name} ({$lead->phone}): ".$e->getMessage(),$results->id, WebinarIgnition_Logs::LIVE_SMS);
}
}
}
if(!$txt_sent) {
WebinarIgnition_Logs::add( __( "No leads to send TXT to.", "webinarignition"),$results->id, WebinarIgnition_Logs::LIVE_SMS);
}
}
// --------------------------------------------------------------------------------------
// AUTO
// --------------------------------------------------------------------------------------
// Send Out AUTO Emails
function webinarignition_cron_email($ID, $LEADID, $num, $NAME, $EMAIL, $DATE, $TIMEZONE)
{
// Setup Info
$webinar_data = WebinarignitionManager::get_webinar_data($ID);
$is_instant_lead = false;
$is_watched_lead = false;
if( !empty($LEADID) ) {
$lead = webinarignition_get_lead_info( $LEADID, $webinar_data, false );
if( !empty($lead) ) {
if ( isset( $lead->trk8 ) && $lead->trk8 === 'yes' ) {
$is_instant_lead = true;
}
if ( isset( $lead->lead_status ) && $lead->lead_status === 'watched' ) {
$is_watched_lead = true;
}
}
}
if( $is_instant_lead || $is_watched_lead ) return; //Disable email notifications for instant/watched leads
if( !empty($webinar_data->time_format ) && ( $webinar_data->time_format == '12hour' || $webinar_data->time_format == '24hour' ) ){ //old formats
$webinar_data->time_format = get_option( "time_format", 'H:i' );
}
$time_format = $webinar_data->time_format;
$date_format = !empty($webinar_data->date_format ) ? $webinar_data->date_format : get_option( "date_format" );
//check if notification is disabled, and halt sending it
if ($webinar_data->{'email_notiff_' . $num} == 'off') {
WebinarIgnition_Logs::add(webinarignition_prettifyNotificationTitle($num) . " disabled - aborting!",$ID, WebinarIgnition_Logs::AUTO_EMAIL);
// return true so that it can be marked as sent (else the logs table ends up with millions of useless entries)
return true;
}
// Preprocess Email w/ Shortcodes
$getBody = "email_notiff_body_" . $num;
if( !empty( $webinar_data->templates_version ) || ( !empty( $webinar_data->use_new_email_signup_template ) && ( $webinar_data->use_new_email_signup_template == 'yes' ) ) ){
//use new templates
$webinar_data->emailheading = $webinar_data->{"email_notiff_".$num."_heading"};
$webinar_data->emailpreview = $webinar_data->{"email_notiff_".$num."_preview"};
$webinar_data->bodyContent = $webinar_data->{"email_notiff_body_".$num};
$webinar_data->footerContent = ( property_exists( $webinar_data, 'show_or_hide_local_notiff_'.$num.'_footer' ) && $webinar_data->{'show_or_hide_local_notiff_'.$num.'_footer'} == 'show' ) ? $webinar_data->{'local_notiff_'.$num.'_footer'} : '';
$email = new WI_Emails();
$getBodyEmail = $email->build_email( $webinar_data );
} else {
$emailHead = WebinarignitionEmailManager::get_email_head();
$getBodyEmail = $emailHead;
$getBodyEmail .= $webinar_data->$getBody;
$getBodyEmail .= '</html>';
}
$autoDate_info = explode(" ", $DATE);
$translated_date = webinarignition_get_translated_date( $autoDate_info[0], 'Y-m-d', $date_format );
// Replace
$timeonly = ( empty($webinar_data->display_tz ) || ( !empty($webinar_data->display_tz) && ($webinar_data->display_tz == 'yes') ) ) ? false : true;
$getBodyEmail = str_replace("{DATE}", $translated_date . " @ " . webinarignition_get_time_tz($autoDate_info[1], $time_format, $TIMEZONE, false, $timeonly ) , $getBodyEmail);
$getBodyEmail = str_replace("{FIRSTNAME}", $NAME , $getBodyEmail);
$getSBJ = "email_notiff_sbj_" . $num;
$Subject = $webinar_data->$getSBJ;
$Subject = str_replace("{TITLE}", $webinar_data->webinar_desc, $Subject);
$headers = array('Content-Type: text/html; charset=UTF-8','From: ' . get_option('webinarignition_email_templates_from_name', get_option('blogname')) . ' <' . get_option('webinarignition_email_templates_from_email', get_option('admin_email')) . '>');
$additional_params = 'event=OI3shBXlqsw';
$watch_type = 'live';
if($num === 3 || $num === 5) {
$watch_type = 'replay';
}
$additional_params .= "&watch_type={$watch_type}";
$additional_params .= (($webinar_data->paid_status == "paid") ? "&".md5($webinar_data->paid_code) : "");
$getBodyEmail = WebinarignitionManager::replace_email_body_placeholders($webinar_data, $LEADID, $getBodyEmail, $additional_params);
try {
if( ! wp_mail( $EMAIL, $Subject, $getBodyEmail, $headers) ) {
// echo 'Mailer Error: ' . $mail->ErrorInfo;
WebinarIgnition_Logs::add( __( "ERROR:: Email could not be sent to", 'webinarignition') . " {$EMAIL}",$ID, WebinarIgnition_Logs::AUTO_EMAIL);
return false;
} else {
// echo 'Email Sent :: ' . $EMAIL;
// echo "<br>";
WebinarIgnition_Logs::add( __( "Mail Sent.", "webinarignition"),$ID, WebinarIgnition_Logs::AUTO_EMAIL);
return true;
}
} catch (Exception $e) {
WebinarIgnition_Logs::add( __( "ERROR:: Email could not be sent to", 'webinarignition') . " {$EMAIL}",$ID, WebinarIgnition_Logs::AUTO_EMAIL);
return false;
}
}
// ####################################
//
// Send TXT Notification
//
// ####################################
function webinarignition_send_txt_auto($ID, $PHONE, $LEADID)
{
// Get Results
$webinar_data = WebinarignitionManager::get_webinar_data($ID);
$is_instant_lead = false;
if( !empty($LEADID) ) {
$lead = webinarignition_get_lead_info( $LEADID, $webinar_data, false );
if( !empty($lead) && isset( $lead->trk8 ) && $lead->trk8 === 'yes' ) {
$is_instant_lead = true;
}
}
if( $is_instant_lead ) return; //Disable SMS notification for instant leads
if( !empty( $webinar_data->twilio_id ) && !empty( $webinar_data->twilio_token ) ){
$AccountSid = $webinar_data->twilio_id;
$AuthToken = $webinar_data->twilio_token;
$client = new Client($AccountSid, $AuthToken);
$MSG = $webinar_data->twilio_msg;
$additional_params = 'event=OI3shBXlqsw';
$additional_params .= (($webinar_data->paid_status == "paid") ? "&".md5($webinar_data->paid_code) : "");
$MSG = WebinarignitionManager::replace_email_body_placeholders($webinar_data, $LEADID, $MSG, $additional_params, ['is_sms' => true]);
try {
$client->messages->create(
sanitize_text_field( trim($PHONE) ),
array(
'from' => $webinar_data->twilio_number,
'body' => $MSG
)
);
WebinarIgnition_Logs::add( __( "TXT notification Sent.", "webinarignition"), $ID, WebinarIgnition_Logs::AUTO_SMS);
} catch (Exception $e) {
WebinarIgnition_Logs::add( __( "Error sending TXT to", 'webinarignition'). " {$PHONE}: ".$e->getMessage(),$ID, WebinarIgnition_Logs::AUTO_SMS);
}
} else {
WebinarIgnition_Logs::add( __( "Error sending TXT to", 'webinarignition'). " {$PHONE}: Credentials are required to create a Client.",$ID, WebinarIgnition_Logs::AUTO_SMS);
}
}