showExistingNewsletters(); } else { switch ($action) { case 'vs' : // View subscribers of a newsletter $nl -> view_subscribers($id); break; case 'remove' : // Remove subscriber $nl -> remove_subscribers($id,$key); $nl -> view_subscribers($id); break; default: $function = $action."Newsletter"; if (method_exists($nl, $function)) { $nl -> $function(); } else { exit; } } } class newsletter { var $message; function newsletter() { global $ns, $tp; foreach($_POST as $key => $value) { $key = $tp->toDB($key); if(strstr($key, "nlmailnow")) { $this->releaseIssue($key); break; } } if(isset($_POST['delete'])) { $this->deleteNewsletter(); } if(isset($_POST['createNewsletter'])) { $this->createNewsletter(); } if(isset($_POST['createIssue'])) { $this->createIssue(); } if($this -> message) { $ns->tablerender("", "
".$this -> message."
"); } } function showExistingNewsletters() { global $sql, $ns, $tp; if(!$sql -> db_Select("newsletter", "*", "newsletter_parent='0' ORDER BY newsletter_id DESC")) { $text = NLLAN_05; } else { $text = "
"; $nlArray = $sql -> db_getList(); foreach($nlArray as $data) { $text .= " "; } $text .= "
".NLLAN_55." ".NLLAN_06." ".NLLAN_07." ".NLLAN_08."
".$data['newsletter_id']." ".$data['newsletter_title']." ".((substr_count($data['newsletter_subscribers'], chr(1))!= 0)?"".substr_count($data['newsletter_subscribers'], chr(1))."":substr_count($data['newsletter_subscribers'], chr(1)))." ".ADMIN_EDIT_ICON." toJS(NLLAN_09." [ID: ".$data['newsletter_id']." ]")."') \"/>
"; } $ns -> tablerender(NLLAN_10, $text); if(!$sql -> db_Select("newsletter", "*", "newsletter_parent!='0' ORDER BY newsletter_id DESC")) { $text = NLLAN_11; } else { $text = "
"; $nlArray = $sql -> db_getList(); foreach($nlArray as $data) { $text .= " "; } $text .= "
ID ".NLLAN_12." ".NLLAN_13." ".NLLAN_14." ".NLLAN_15."
".$data['newsletter_id']." ".$data['newsletter_issue']." [ ".$data['newsletter_parent']." ] ".$data['newsletter_title']." ".($data['newsletter_flag'] ? NLLAN_16 : "toJS(NLLAN_18)."') \" />")." ".ADMIN_EDIT_ICON." toJS(NLLAN_19." [ID: ".$data['newsletter_id']." ]")."') \"/>
"; } $ns -> tablerender(NLLAN_20, $text); } function defineNewsletter($edit=FALSE) { global $ns, $tp; // We've been passed a value from DB, so should be reasonably sanitised. if($edit) { $newsletter_title = $tp -> toFORM($edit['newsletter_title']); $newsletter_text = $tp -> toFORM($edit['newsletter_text']); $newsletter_footer = $tp -> toFORM($edit['newsletter_footer']); $newsletter_header = $tp -> toFORM($edit['newsletter_header']); // Looks as if this was missed } $text .= "
".NLLAN_21."
".NLLAN_22."
".NLLAN_23."
".NLLAN_24."
". ($edit ? "\n" : "")."
"; $caption = ($edit ? NLLAN_25 : NLLAN_26); $ns -> tablerender($caption, $text); } function createNewsletter() { global $sql, $tp; $letter['newsletter_title'] = $tp -> toDB($_POST['newsletter_title']); $letter['newsletter_text'] = $tp -> toDB($_POST['newsletter_text']); $letter['newsletter_header'] = $tp -> toDB($_POST['newsletter_header']); $letter['newsletter_footer'] = $tp -> toDB($_POST['newsletter_footer']); if(isset($_POST['editid'])) { $sql -> db_Update("newsletter", "newsletter_title='{$letter['newsletter_title']}', newsletter_text='{$letter['newsletter_text']}', newsletter_header='{$letter['newsletter_header']}', newsletter_footer='{$letter['newsletter_footer']}' WHERE newsletter_id=".intval($_POST['editid'])); $this -> message = NLLAN_27; } else { $letter['newsletter_datestamp'] = time(); $sql -> db_Insert('newsletter', $letter); $this -> message = NLLAN_28; } } function makeNewsletter($edit=FALSE) { global $sql, $ns, $tp; // Passed data is from DB if($edit) { $newsletter_title = $tp -> toFORM($edit['newsletter_title']); $newsletter_text = $tp -> toFORM($edit['newsletter_text']); $newsletter_issue = $tp -> toFORM($edit['newsletter_issue']); } if(!$sql -> db_Select("newsletter", "*", "newsletter_parent='0' ")) { $this -> message = NLLAN_29; return; } $nlArray = $sql -> db_getList(); $text .= "
".NLLAN_30."
".NLLAN_31."
".NLLAN_32."
".NLLAN_33."
". ($edit ? "\n" : "")."
"; $caption = ($edit ? NLLAN_36 : NLLAN_37); $ns -> tablerender($caption, $text); } function createIssue() { global $sql, $tp; $letter['newsletter_title'] = $tp -> toDB($_POST['newsletter_title']); $letter['newsletter_text'] = $tp -> toDB($_POST['newsletter_text']); $letter['newsletter_parent'] = intval($_POST['newsletter_parent']); $letter['newsletter_issue'] = $tp->toDB($_POST['newsletter_issue']); if (isset($_POST['editid'])) { $sql -> db_Update('newsletter', "newsletter_title='{$letter['newsletter_title']}', newsletter_text='{$letter['newsletter_text']}', newsletter_parent='".$letter['newsletter_parent']."', newsletter_issue='".$letter['newsletter_issue']."' WHERE newsletter_id=".intval($_POST['editid'])); $this -> message = NLLAN_38; } else { $letter['newsletter_datestamp'] = time(); $sql -> db_Insert('newsletter', $letter); $this -> message = NLLAN_39; } } function releaseIssue($issue) { global $pref, $sql, $ns, $tp, $THEMES_DIRECTORY; $issue = str_replace("nlmailnow_", "", $issue); if(!$sql -> db_Select("newsletter", "*", "newsletter_id='{$issue}' ")) { return FALSE; } $newsletterInfo = $sql -> db_Fetch(); if(!$sql -> db_Select("newsletter", "*", "newsletter_id='".$newsletterInfo['newsletter_parent']."' ")) { return FALSE; } $newsletterParentInfo = $sql -> db_Fetch(); $memberArray = explode(chr(1), $newsletterParentInfo['newsletter_subscribers']); require(e_HANDLER."phpmailer/class.phpmailer.php"); $mail = new PHPMailer(); $mail->From = $pref['siteadminemail']; $mail->FromName = $pref['siteadmin']; if ($pref['mailer'] == "smtp") { $mail->Mailer = "smtp"; $mail->SMTPKeepAlive = (isset($pref['smtp_keepalive']) && $pref['smtp_keepalive']==1) ? TRUE : FALSE; $mail->SMTPAuth = TRUE; $mail->Username = $pref['smtp_username']; $mail->Password = $pref['smtp_password']; $mail->Host = $pref['smtp_server']; } else { $mail->Mailer = "mail"; } $mail->WordWrap = 50; $mail->CharSet = 'utf-8'; $mail->Subject = $newsletterParentInfo['newsletter_title'] . ": ".$newsletterInfo['newsletter_title']; $mail->IsHTML(true); // ============================ Render Results and Mail it ========= $message_subject = stripslashes($tp -> toHTML($mail->Subject)); $message_body = stripslashes($tp -> toHTML($mail->Subject, TRUE)); $message_body = str_replace(""", '"', $tp -> toHTML($newsletterInfo['newsletter_text'], TRUE)); $message_body = str_replace('src="', 'src="'.SITEURL, $message_body); $newsletter_header = $tp -> toHTML($newsletterParentInfo['newsletter_header'], TRUE); $newsletter_footer = $tp -> toHTML($newsletterParentInfo['newsletter_footer'], TRUE); $theme = $THEMES_DIRECTORY.$pref['sitetheme']."/"; $mail_style = ""; $mail_style .= "
"; $mail_style .= "
"; $mail_style .= "
$message_subject
[ ".NLLAN_12." ".$newsletterInfo['newsletter_issue']." ]


"; $mail_style .= "
"; $message_body = $mail_style.$newsletter_header."
".$message_body."


".$newsletter_footer."
"; $message_body = str_replace("\n", "
", $message_body); $mail->Body = $tp->toHTML($message_body, TRUE,'no_replace, emotes_off'); $mail->AltBody = strip_tags(str_replace("
", "\n", $message_body)); $sent_counter = 0; foreach($memberArray as $memberID) { if($memberID) { if($sql -> db_Select("user", "user_name, user_email", "user_id='$memberID' ")) { $row = $sql -> db_Fetch(); $mname = $row['user_name']; $memail = $row['user_email']; } $mail->AddAddress($memail, $mname); echo "".NLLAN_54." ".$mname." ( ".$memail." )
"; $mail->Send(); $sent_counter ++; $mail->ClearAddresses(); if ($pref['mailer'] == "smtp") { $mail->SmtpClose(); } } } $sql -> db_Update("newsletter", "newsletter_flag='1' WHERE newsletter_id='$issue' "); $this -> message = NLLAN_40.$sent_counter.NLLAN_41; } function editNewsletter() { global $id, $sql; if($sql -> db_Select("newsletter", "*", "newsletter_id='{$id}' ")) { $foo = $sql -> db_Fetch(); if(!$foo['newsletter_parent']) { $this -> defineNewsletter($foo); } else { $this -> makeNewsletter($foo); } } } function deleteNewsletter() { global $sql; $tmp = each($_POST['delete']); if(strstr($tmp['key'], "newsletter")) { $id = str_replace("newsletter_", "", $tmp['key']); $sql -> db_Delete("newsletter", "newsletter_id='{$id}' "); $this -> message = NLLAN_42; } else { $id = str_replace("issue_", "", $tmp['key']); $sql -> db_Delete("newsletter", "newsletter_id='{$id}' "); $this -> message = NLLAN_43; } } function show_options($action) { global $sql; if ($action == "") { $action = "main"; } // ##### Display options --------------------------------------------------------------------------------------------------------- $var['main']['text'] = NLLAN_44; $var['main']['link'] = e_SELF; $var['define']['text'] = NLLAN_45; $var['define']['link'] = e_SELF."?define"; $var['make']['text'] = NLLAN_46; $var['make']['link'] = e_SELF."?make"; show_admin_menu(NLLAN_47, $action, $var); } function view_subscribers($p_id) { global $ns; $nl_sql = new db; if(!$nl_sql -> db_Select('newsletter', '*', 'newsletter_id='.$p_id)) { // Check if newsletter id is available $vs_text .= "

".NLLAN_56."

"; $ns -> tablerender(NLLAN_58, $vs_text); return; } else { $vs_text .= "
"; // $nl_sql -> db_Select("newsletter", "*", "newsletter_id=".$p_id); Already done if($nl_row = $nl_sql-> db_Fetch()) { $subscribers_list = explode(chr(1), trim($nl_row['newsletter_subscribers'])); $subscribers_total_count = count($subscribers_list) - 1; // Get a null entry as well } if ($subscribers_total_count<1) { header("location:".e_SELF); exit; } // Loop through each user in the array subscribers_list foreach ($subscribers_list as $val) { $val=trim($val); if ($val) { $nl_sql -> db_Select("user", "*", "user_id=".$val); if($nl_row = $nl_sql-> db_Fetch()) { $vs_text .= ""; } } } } $vs_text .= "
".NLLAN_55." ".NLLAN_59." ".NLLAN_60." ".NLLAN_61."
{$val} ".$nl_row['user_name']." ".$nl_row['user_email']." ".ADMIN_DELETE_ICON." ".(($nl_row['user_ban'] > 0) ? NLLAN_62 : "")."
".NLLAN_63.": ".$subscribers_total_count."

"; $ns -> tablerender(NLLAN_65.' '.$p_id, $vs_text); } function remove_subscribers($p_id, $p_key) { global $sql; $sql -> db_Select("newsletter", "*", "newsletter_id=".$p_id); if($nl_row = $sql-> db_Fetch()) { $subscribers_list = array_flip(explode(chr(1), $nl_row['newsletter_subscribers'])); unset($subscribers_list[$p_key]); $new_subscriber_list = implode(chr(1), array_keys($subscribers_list)); $sql -> db_Update("newsletter", "newsletter_subscribers='{$new_subscriber_list}' WHERE newsletter_id=".$p_id); } } } require_once(e_ADMIN."footer.php"); function admin_config_adminmenu() { global $nl; global $action; $nl->show_options($action); } ?>