module['path']."frontend/templates/";
$moduleTpl = "file:".$nbModules->module['path']."templates/";
$site_templates = "file:".$_SERVER['DOCUMENT_ROOT'].'/../smarty/templates/';
require $nbModules->module['function_path']."newsletter_track.functions.php";
require $nbModules->module['function_path']."newsletter_member.functions.php";
require_once $site->filesystem['functions']."htmlMimeMail.php";
require_once $site->filesystem['classes']."link.extractor.class.php";
$site->smarty()->register_modifier("formatId", "FormatID");
$site->smarty()->register_function("in_array", "in_array");
$site->smarty()->assign('newsletterSiteName',$site->newsletter['newsletter_site_name']);
$site->smarty()->assign('showMenu',$site->newsletter['showMenu']);
// Need this for sending confirmations out and validating users
$siteUrl = 'http://'.$_SERVER['HTTP_HOST'].dirname($_SERVER['PHP_SELF']).'/';
//ViewVar($_REQUEST,TRUE);
$MyDBI=New DatabaseInterface(); // Do so to speed up the performance, so sub templates do not have to create db connection
$AllActions=array("subscribe","unsubscribe","archive","track");
$action=trim($_REQUEST['action']);
if (empty($action) or !in_array($action,$AllActions)) $action=$AllActions[0]; //Default-> subscribe
$_REQUEST['action']=$action; //to fill out the field of "action"
switch ($action){
case "subscribe":
$allPublishedGroups = GetAllGroupsForNewsletterMember($MyDBI," And Published=1 ");
//ViewVar($GLOBALS['AllGroupsForNewsletterMember'],true);
$DATASOURCE=GetDataFromDictionary($MyDBI,'newsletter_member');
$site->smarty()->assign('newsletterFormats',$DATASOURCE['newsletter_member']['NewsletterFormatID']['Values']);
if (!isset($_REQUEST['newsletter_member_NewsletterFormatID'])) $_REQUEST['newsletter_member_NewsletterFormatID']=1;//HTML Format
$memberGroups = getMemberGroups($_REQUEST['newsletter_member_Group'],$allPublishedGroups,$MyGroupIDs);
$site->smarty()->assign('memberGroups',$memberGroups);
if ($_REQUEST['page_submit']){
if ($_REQUEST['newsletter_member_ID']>0) $disable_name="readonly";
$email=trim($_REQUEST['newsletter_member_Email']);
$Check=$MyDBI->FetchFirstRecord("select * from newsletter_member where Email='$email' ");
if ($Check){
$MemberInfo=$Check;
$member_id=$MemberInfo['ID'];
$MyGroupIDs=GetGroupIDsForNewsletterMember($MyDBI,$member_id);
$_REQUEST['newsletter_member_ID']=$MemberInfo['ID'];
}else{
$_REQUEST['newsletter_member_ID']="";
}
if ($Check and empty($_POST['newsletter_member_ID'])){
//Redraw the page for existing user
$_REQUEST['newsletter_member_ID']=$member_id;
$_REQUEST['newsletter_member_FirstName']=$Check['FirstName'];
$_REQUEST['newsletter_member_Surname']=$Check['Surname'];
$memberGroups = getMemberGroups($_REQUEST['newsletter_member_Group'],$allPublishedGroups,$MyGroupIDs);
$site->smarty()->assign('memberGroups',$memberGroups);
$content = $site->smarty()->fetch($newsletter_templates.'site_subscribe.tpl');
}
$error_info=CheckNewsletterMemberFormData();
//ViewVar($_POST,TRUE);
if (empty($error_info)){
$send_welcome_letter=false;
$MemberVars=GetVarNames($MyDBI,"newsletter_member");
if ($Check){
//This user exists already
$sql="SELECT *,MD5(CONCAT(Email,FirstName,Surname,ID)) as reg_id FROM newsletter_member WHERE ID='$member_id'";
$MemberInfo=$MyDBI->FetchFirstRecord($sql);
//ViewVar($MemberInfo,TRUE);
$user_email=$MemberInfo['Email'];
$member_id=$MemberInfo['ID'];
$reg_id=$MemberInfo['reg_id'];
$firstname = $MemberInfo['FirstName'];
$MyGroupIDs=$_REQUEST['newsletter_member_Group'];
//ViewVar($MyGroupIDs,TRUE);
$group_id_string=TranslateArrayIntoString($MyGroupIDs);
$MyGroups=GetAllGroupsForNewsletterMember($MyDBI," And ID IN $group_id_string");
$site->smarty()->assign('MyGroupIDs',$MyGroupIDs);
$add_group_ids=urlencode(implode(",",$MyGroupIDs));
$first_name=urlencode(stripslashes($_REQUEST['newsletter_member_FirstName']));
$surname=urlencode(stripslashes($_REQUEST['newsletter_member_Surname']));
$my_list="";
foreach ($MyGroups as $group_name) $my_list.=$group_name."\n
";
$confirm_url = $siteUrl."index.php?action=track&newsletter_member_ID=$member_id&redirect_url=$redirect_url&user_email=".urlencode($user_email)."&user_id=$reg_id&action2=confirm_add&add_group_ids=$add_group_ids&first_name=$first_name&surname=$surname";
}else{
// New member
$id=AddNewsletterMember($MyDBI,$send_welcome_letter);
//Send Email to the visitor:
$sql="SELECT *,MD5(CONCAT(Email,FirstName,Surname,ID)) as reg_id FROM newsletter_member WHERE ID='$id'";
$MemberInfo=$MyDBI->FetchFirstRecord($sql);
//ViewVar($MemberInfo,TRUE);
$user_email=$MemberInfo['Email'];
$member_id=$MemberInfo['ID'];
$reg_id=$MemberInfo['reg_id'];
$firstname = $MemberInfo['FirstName'];
$MyGroupIDs=GetGroupIDsForNewsletterMember($MyDBI,$member_id);
$group_id_string=TranslateArrayIntoString($MyGroupIDs);
$MyGroups=GetAllGroupsForNewsletterMember($MyDBI," And ID IN $group_id_string");
$my_list="";
foreach ($MyGroups as $group_name) $my_list.=$group_name."\n
";
$confirm_url= $siteUrl."index.php?action=track&newsletter_member_ID=$member_id&redirect_url=$redirect_url&user_email=".urlencode($user_email)."&user_id=$reg_id&action2=confirm";
}
$sql = "select newsletter_template.* from newsletter_template inner join newsletter_member_group inner join newsletter_group where newsletter_member_group.NewsletterMemberID='".$member_id."' and newsletter_member_group.NewsletterGroupID=newsletter_group.ID and newsletter_group.WelcomeEmailTemplateID=newsletter_template.ID";
$query = mysql_query($sql);
$templ = mysql_fetch_array($query);
$html=$templ['HTMLBody'];
$html=str_replace("NEWSLETTER_SUBSCRIBE_URL","Verify Subscription",$html);
$html=str_replace("NEWSLETTER_GROUP_Name",$my_list,$html);
$html=ReplaceVars($MemberVars,$MemberInfo,$html);
$html=ReplaceVariables($html);
$mail = new htmlMimeMail();
$text=strip_tags($html);
$from='"'.$templ['TitleForFrom'].'" <'.$templ['From'].'>';
$mail->setHtml($html, $text);
$mail->setReturnPath($templ['From']);
$mail->setFrom($from);
$mail->setSubject($site->newsletter['newsletter_site_name']." Subscription");
$result = $mail->send(array("".$firstname." < ".$user_email." >"), 'mail');
$memberGroups = getMemberGroups($_REQUEST['newsletter_member_Group'],$allPublishedGroups,$MyGroupIDs);
$site->smarty()->assign('memberGroups',$memberGroups);
$content = $site->smarty()->fetch($newsletter_templates.'site_confirm_subscribe.tpl');
}else{
//after validation:
$content = $site->smarty()->fetch($newsletter_templates.'site_subscribe.tpl');
}
}else{
//Default
$content = $site->smarty()->fetch($newsletter_templates.'site_subscribe.tpl');
}
//End of subscribe
break;
case "unsubscribe":
//$GLOBALS['DATASOURCE']=GetDataFromDictionary($MyDBI,'newsletter_member');
//ViewVar($_REQUEST,TRUE);
if ($_REQUEST['list_my_newsletters'] or $_REQUEST['unsubscribe']){
$email=trim($_REQUEST['newsletter_member_Email']);
$Check=$MyDBI->FetchFirstRecord("select * from newsletter_member where Email='$email'");
if (!$Check){
$error_info="Sorry, we couldn't find your email in our system.";
}else{
//Get My Groups
$MemberInfo=$Check;
$member_id=$MemberInfo['ID'];
$MyGroupIDs=GetGroupIDsForNewsletterMember($MyDBI,$member_id);
$group_id_string=TranslateArrayIntoString($MyGroupIDs);
if ($group_id_string) $MyGroups=GetAllGroupsForNewsletterMember($MyDBI," And ID IN $group_id_string");
//ViewVar($MyGroups,TRUE);
}
if (count($MyGroups)==0) $error_info="Sorry, we couldn't find your email in our system.!";
if ($_REQUEST['unsubscribe'] and empty($error_info)){
if (count($_REQUEST['newsletter_member_Group'])==0){
$error_info .= "Please select the newsletters you wish to be removed from";
}else{
$content = $site->smarty()->fetch($newsletter_templates.'site_confirm_unsubscribe.tpl');
// $content=ParseTemplates("");
$member_id=$Check['ID'];
$MemberVars=GetVarNames($MyDBI,"newsletter_member");
$sql="SELECT *,MD5(CONCAT(Email,FirstName,Surname,ID)) as reg_id FROM newsletter_member WHERE ID='$member_id'";
$MemberInfo=$MyDBI->FetchFirstRecord($sql);
//ViewVar($MemberInfo,TRUE);
$user_email=$MemberInfo['Email'];
$member_id=$MemberInfo['ID'];
$reg_id=$MemberInfo['reg_id'];
$MyGroupIDs=$_REQUEST['newsletter_member_Group'];
$group_id_string=TranslateArrayIntoString($MyGroupIDs);
$MyGroups=GetAllGroupsForNewsletterMember($MyDBI," And ID IN $group_id_string");
$my_list="";
foreach ($MyGroups as $group_name) $my_list.=$group_name."\n
";
$delete_group_ids=urlencode(implode(",",$MyGroupIDs));
$hostUrl = 'http://'.$_SERVER['HTTP_HOST'].'/'.dirname($_SERVER['PHP_SELF']);
$confirm_url = $siteUrl."index.php?action=track&newsletter_member_ID=$member_id&redirect_url=$redirect_url&user_id=$reg_id&action2=confirm_delete&delete_group_ids=$delete_group_ids&first_name=$first_name&surname=$surname&user_email=".urlencode($user_email)."";
$sql = "select newsletter_template.* from newsletter_template inner join newsletter_member_group inner join newsletter_group where newsletter_member_group.NewsletterMemberID='".$member_id."' and newsletter_member_group.NewsletterGroupID=newsletter_group.ID and newsletter_group.UnsubscribeEmailTemplateID=newsletter_template.ID";
$query = mysql_query($sql);
$templ = mysql_fetch_array($query);
$html=$templ['HTMLBody'];
$html=str_replace("NEWSLETTER_UNSUBSCRIBE_URL","Verify your unsubscription",$html);
$html=str_replace("NEWSLETTER_GROUP_Name",$my_list,$html);
$html=ReplaceVars($MemberVars,$MemberInfo,$html);
$html=ReplaceVariables($html);
$mail = new htmlMimeMail();
$text=strip_tags($html);
$from='"'.$templ['TitleForFrom'].'" <'.$templ['From'].'>';
$mail->setHtml($html, $text);
$mail->setReturnPath($templ['From']);
$mail->setFrom($from);
$mail->setSubject($site->newsletter['newsletter_site_name']." Unsubscribe");
$result = $mail->send(array("".$firstname." < ".$user_email." >"), 'mail');
}
}
}
$memberGroups = getMemberGroups($_REQUEST['newsletter_member_Group'],$MyGroups,$MyGroupIDs);
$site->smarty()->assign('memberGroups',$memberGroups);
$content .= $site->smarty()->fetch($newsletter_templates.'site_unsubscribe.tpl');
//End of unsubscribe
break;
case "archive": //list of archive
$GLOBALS['DATASOURCE']=GetDataFromDictionary($MyDBI,'newsletter_member');
$sql="SELECT * FROM newsletter_archive WHERE DateSent>0 ORDER BY DateSent DESC limit 100";
$q = $site->db('backend')->prepare($sql);
$q->execute();
$archives = $q->fetchAll(PDO::FETCH_ASSOC);
$site->smarty()->assign('archives',$archives);
$content = $site->smarty()->fetch($newsletter_templates.'site_archive.tpl');
//End of archive
break;
/*
case "archive_view": #view one newsletter
$archive_id=intval($_REQUEST['newsletter_archive_ID']);
$sql="select * from newsletter_archive where ID=$archive_id and DateSent>=0";
$Newsletter=$MyDBI->FetchFirstRecord($sql);
if ($Newsletter){
$redirect_url = "view.php?newsletter_archive_ID=$archive_id";
#require "Templates/site_newsletter.tpl.php";
header("Location: $redirect_url");
exit;
}
exit;
//end of archive_view
break;
*/
case "track": //this block processes confirmed subscribe, confirmed unsubscribe and other link click backs
$archive_id=trim($_REQUEST['newsletter_archive_ID']);
$group_id=trim($_REQUEST['newsletter_group_ID']);
$user_email=trim($_REQUEST['user_email']);
$error=ValidateEmail($user_email);
$reg_id=trim($_REQUEST['user_id']);
$redirect_url=$_REQUEST['redirect_url'];
if (strlen($reg_id)==32 and $_REQUEST['action2']=='confirm'){
//confirm activation
$sql="SELECT * FROM newsletter_member WHERE MD5(CONCAT(Email,FirstName,Surname,ID))='$reg_id'";
$MemberInfo=$MyDBI->FetchFirstRecord($sql);
if ($MemberInfo){// member exists:
$member_id=intval($MemberInfo['ID']);
$old_status=$MemberInfo['Activated'];
$sql="update newsletter_member set Activated=1 where ID=$member_id";
$MyDBI->ExecuteSQL($sql);
$MyGroupIDs=GetGroupIDsForNewsletterMember($MyDBI,$member_id);
$group_id_string=TranslateArrayIntoString($MyGroupIDs);
$MyGroups=GetAllGroupsForNewsletterMember($MyDBI," And ID IN $group_id_string");
$memberGroups = getMemberGroups($_REQUEST['newsletter_member_Group'],$MyGroups,$MyGroupIDs);
$site->smarty()->assign('memberGroups',$memberGroups);
$content = $site->smarty()->fetch($newsletter_templates.'site_confirmed_subscribe.tpl');
if ($old_status==0){
//Not activated yet.
WelcomeMember($MyDBI,$member_id);
}
}
}elseif (strlen($reg_id)==32 and $_REQUEST['action2']=='confirm_add'){
// confirm adding new groups to it
$sql="SELECT * FROM newsletter_member WHERE MD5(CONCAT(Email,FirstName,Surname,ID))='$reg_id'";
$MemberInfo=$MyDBI->FetchFirstRecord($sql);
if ($MemberInfo){
// member exists:
$member_id=intval($MemberInfo['ID']);
$old_status=$MemberInfo['Activated'];
$sql="update newsletter_member set Activated=1 where ID=$member_id";
$MyDBI->ExecuteSQL($sql);
$OldGroupIDs=GetGroupIDsForNewsletterMember($MyDBI,$member_id);
$NewGroupIDs=explode(",",$_REQUEST['add_group_ids']);
$_REQUEST['newsletter_member_Group']=array_unique(array_merge($OldGroupIDs,$NewGroupIDs));
$_REQUEST['newsletter_member_ID']=$member_id;
//$_REQUEST['newsletter_member_FirstName']=$_REQUEST['first_name'];
//$_REQUEST['newsletter_member_Surname'] =$_REQUEST['surname'];
$_REQUEST['newsletter_member_FirstName']=$MemberInfo['FirstName'];
$_REQUEST['newsletter_member_Surname'] =$MemberInfo['Surname'];
//ViewVar($_REQUEST,TRUE);
UpdateNewsletterMember($MyDBI);
$MyGroupIDs=GetGroupIDsForNewsletterMember($MyDBI,$member_id);
$group_id_string=TranslateArrayIntoString($MyGroupIDs);
$MyGroups = GetAllGroupsForNewsletterMember($MyDBI," And ID IN $group_id_string");
$memberGroups = getMemberGroups($_REQUEST['newsletter_member_Group'],$MyGroups,$MyGroupIDs);
$site->smarty()->assign('memberGroups',$memberGroups);
$content = $site->smarty()->fetch($newsletter_templates.'site_confirmed_subscribe.tpl');
WelcomeMember($MyDBI,$member_id,$OldGroupIDs);
}
}elseif (strlen($reg_id)==32 and $_REQUEST['action2']=='confirm_delete'){
//confirm deleting some group(s)
$sql="SELECT * FROM newsletter_member WHERE MD5(CONCAT(Email,FirstName,Surname,ID))='$reg_id'";
$MemberInfo=$MyDBI->FetchFirstRecord($sql);
if ($MemberInfo){
// member exists:
$member_id=intval($MemberInfo['ID']);
$old_status=$MemberInfo['Activated'];
$sql="update newsletter_member set Activated=1 where ID=$member_id";
$MyDBI->ExecuteSQL($sql);
$OldGroupIDs=GetGroupIDsForNewsletterMember($MyDBI,$member_id);
$DeleteGroupIDs=explode(",",$_REQUEST['delete_group_ids']);
//ViewVar($OldGroupIDs,TRUE);
$_REQUEST['newsletter_member_Group']=array_unique(array_diff($OldGroupIDs,$DeleteGroupIDs));
#$_REQUEST['newsletter_member_Group']=$OldGroupIDs;
$_REQUEST['newsletter_member_ID']=$member_id;
$_REQUEST['newsletter_member_FirstName']=$MemberInfo['FirstName'];
$_REQUEST['newsletter_member_Surname'] =$MemberInfo['Surname'];
//ViewVar($_REQUEST,TRUE);
UpdateNewsletterMember($MyDBI);
$group_id_string=TranslateArrayIntoString($DeleteGroupIDs);
$MyGroups = GetAllGroupsForNewsletterMember($MyDBI," And ID IN $group_id_string");
$content = $site->smarty()->fetch($newsletter_templates.'site_confirmed_unsubscribe.tpl');
//SendUnsubscribeEmail($MyDBI,$member_id,$DeleteGroupIDs);
$sql = "select * from newsletter_member_group where NewsletterMemberID='".$member_id."'";
$query = mysql_query($sql);
if(mysql_num_rows($query)==0){
$sql = "delete from newsletter_member where ID='".$member_id."'";
mysql_query($sql);
}
}
}elseif ($archive_id>0 and $group_id>0 and empty($error)){
//Track member clicks back:
$_REQUEST['newsletter_track_NewsletterArchiveID']=$archive_id;
$_REQUEST['newsletter_track_NewsletterGroupID']=$group_id;
$_REQUEST['newsletter_track_MemberEmail']=$user_email;
$_REQUEST['newsletter_track_RedirectURL']=addslashes($redirect_url);
AddNewsletterTrack($MyDBI);
//ViewVar("$redirect_ur",TRUE);
header("Location: $redirect_url");
exit;
}else{
header("Location: $redirect_url");
exit;
}
//End of track
break;
}
$site->smarty()->assign('error_info',$error_info);
$site->smarty()->assign('newsletterHeader',$site->smarty()->fetch($site_templates.$site->newsletter['site_header']));
$site->smarty()->assign('newsletterFooter',$site->smarty()->fetch($site_templates.$site->newsletter['site_footer']));
$site->smarty()->assign('content',$content);
$site->smarty()->display($newsletter_templates."site_main.tpl");
?>