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"); ?>