true, 'file' => $raw_file, 'description' => $details['AttachmentDescription']); } } return $return; } function ArchiveNewsletter($cID, $sID) { global $ROOTDIR; global $ROOTURL; global $TABLEPREFIX; // Save a copy of the newsletter to /sendstudio/archive/$listID/$cID $cResult = mysql_query("SELECT * FROM " . $TABLEPREFIX . "composed_emails WHERE ComposedID = '".addslashes($cID)."'"); // Use the send ID to get the list name for where this is being sent $lID = (int)mysql_result(mysql_query("SELECT ListID FROM " . $TABLEPREFIX . "sends WHERE SendID = '".addslashes($sID)."'"), 0, 0); $lName = str_replace(" ", "_", stripslashes(mysql_result(mysql_query("SELECT ListName FROM " . $TABLEPREFIX . "lists WHERE ListID = '".addslashes($lID)."'"), 0, 0))); clearstatcache(); $dir = $ROOTDIR . 'archive/' . $lID; if (!is_dir($dir) && !mkdir($dir, 0777)) { echo 'Unable to make directory to archive the newsletter.
'; return false; } // Put the archive index.php file in the directory if (!is_file($dir . '/index.php') && !@copy($ROOTDIR . '/archive/index.php', $dir . '/index.php')) { echo 'Unable to copy files for archiving the newsletter.
'; if (SAFE_MODE) { echo 'This is due to Safe Mode restrictions - see http://www.php.net/manual/en/features.safe-mode.functions.php for information about copying files.
Your webhost will need to change ownerships of the archive/index_list.php file. Alternatively, you can turn off newsletter archiving.
'; } return false; } $dir .= '/' . $cID; if (!is_dir($dir) && !mkdir($dir, 0777)) { echo 'Unable to make directory to archive the newsletter.'; return false; } // Put the archive index.php file in the directory if (!is_file($dir . '/index.php') && !copy('../archive/index_list.php', $dir . '/index.php')) { echo 'Unable to copy files for archiving the newsletter.'; if (SAFE_MODE) { echo 'This is due to Safe Mode restrictions - see http://www.php.net/manual/en/features.safe-mode.functions.php for information about copying files.
Your webhost will need to change ownerships of the archive/index_list.php file. Alternatively, you can turn off newsletter archiving.
'; } return false; } $archive_filenames = array('HTML' => '', 'TEXT' => ''); if(is_writable($dir)) { if($cRow = mysql_fetch_assoc($cResult)) { $cRow = stripslashes_array($cRow); $attachmentids = explode(':', $cRow['AttachmentIDs']); $attach_status = archive_attachments($attachmentids, $dir.'/attachments'); $attachment_details_text = "\n\n"; $attachment_details_html = '

'; foreach($attach_status as $pos => $details) { if ($details['status']) { $attachment_details_text .= 'View attachment \'' . $details['description'] . '\' ' . $ROOTURL . 'archive/' . $lID . '/' . $cID . '/attachments/' . $details['file'] . "\n"; $attachment_details_html .= 'View attachment \'' . $details['description'] . '\' ' . $details['description'] . '
' . "\n"; } } if($cRow['Format'] == 3) { // Generate a text and a HTML file name $fNameHTML = str_replace('/', '_', str_replace(' ', '_', $cRow['EmailName'] . '_' . DisplayDate(time()) . '.html')); $fNameText = str_replace('/', '_', str_replace(' ', '_', $cRow['EmailName'] . '_' . DisplayDate(time()) . '.txt')); $archive_html_filename = $lID . '/' .$cID . '/' . $fNameHTML; $archive_text_filename = $lID . '/' .$cID . '/' . $fNameText; $archive_filenames = array('HTML' => $archive_html_filename, 'TEXT' => $archive_text_filename); // Try to save the HTML file if($fp = fopen($dir . '/' . $fNameHTML, 'wb')) { fwrite($fp, html_entity_decode($cRow['HTMLBody'])); fwrite($fp, $attachment_details_html); fclose($fp); } else { echo 'Unable to archive the newsletter.'; return false; } @chmod($dir.'/'.$fNameHTML, 0664); // Try to save the text file if($fp = fopen($dir . '/' . $fNameText, 'wb')) { fwrite($fp, $cRow['TextBody']); fwrite($fp, $attachment_details_text); fclose($fp); } else { echo 'Unable to archive the newsletter.'; return false; } @chmod($dir.'/'.$fNameText, 0664); } else { // Generate a single file name if($cRow['Format'] == 2) { $fName = str_replace('/', '_', str_replace(' ', '_', $cRow['EmailName'] . '_' . DisplayDate(time()) . '.html')); $archive_html_filename = $lID . '/' .$cID . '/' . $fName; $archive_text_filename = ''; } else { $fName = str_replace('/', '_', str_replace(' ', '_', $cRow['EmailName'] . '_' . DisplayDate(time()) . '.txt')); $archive_text_filename = $lID . '/' .$cID . '/' . $fName; $archive_html_filename = ''; } $archive_filenames = array('HTML' => $archive_html_filename, 'TEXT' => $archive_text_filename); // Try to save the text file if($fp = fopen($dir . '/' . $fName, 'wb')) { if($cRow['Format'] == 2) { fwrite($fp, html_entity_decode($cRow['HTMLBody'])); fwrite($fp, $attachment_details_html); } else { fwrite($fp, $cRow['TextBody']); fwrite($fp, $attachment_details_text); } fclose($fp); @chmod($dir.'/'.$fName, 0664); } else { echo 'Unable to archive the newsletter.'; return; } } } } return $archive_filenames; } if($Action == 'Cancel') { $OUTPUT .= MakeSuccessBox('Newsletter Sending Cancelled', 'To resume sending, click on the "Resume" link next to this newsletter in the newsletter manager.', MakeAdminLink('compose')); } if($Action == 'Done') { if (!session_id()) { session_save_path($ROOTDIR.'temp'); session_name('SendStudio'); session_start(); } foreach($_SESSION as $k => $v) { session_unregister($k); } session_destroy(); $send_details_result = mysql_query("SELECT * FROM " . $TABLEPREFIX . "sends WHERE SendID='" . addslashes($_GET['SendID']) . "'"); $send_details = mysql_fetch_assoc($send_details_result); $total = $send_details['TotalRecipients']; $start_time = $send_details['DateStarted']; $end_time = $send_details['DateEnded']; $send_time = $end_time - $start_time; $msg = 'The selected newsletter has been sent successfully.'; $errors_link = $ROOTURL . 'temp/mail_errors.' . $_GET['SendID'] . '.csv'; $msg .= ' It was sent to ' . number_format($total, 0) . ' subscriber' . (($total == 1) ? '' : 's') . ' and took ' . timedifference($send_time); if (is_file($ROOTDIR . 'temp/mail_errors.' . $_GET['SendID'] . '.csv')) $msg .= ' You can view any errors here.'; $OUTPUT .= MakeSuccessBox('Newsletter Sent Successfully!', $msg, MakeAdminLink('index')); } if($Action == 'Resend') { // Workout which newsletter can be resent $resend = mysql_query("SELECT * FROM " . $TABLEPREFIX . "sends INNER JOIN " . $TABLEPREFIX . "composed_emails ON " . $TABLEPREFIX . "sends.ComposedID = " . $TABLEPREFIX . "composed_emails.ComposedID INNER JOIN " . $TABLEPREFIX . "lists ON " . $TABLEPREFIX . "sends.ListID = " . $TABLEPREFIX . "lists.ListID where " . $TABLEPREFIX . "sends.Completed = 0"); $resendlists = ""; while($r = mysql_fetch_assoc($resend)) { $r = stripslashes_array($r); // Are there still recipients waiting to receive this newsletter? if($r['EmailsSent'] < ($r['HTMLRecipients'] + $r['TextRecipients'])) $resendlists.=$r['SendID'].'->'.$r['EmailName'].';'; } $FORM_ITEMS2[$FORM_REQUIRED_ITEM . "Mailing List"]="select|SendID:5:$resendlists"; $FORM_ITEMS2["-1"]="submit|Continue"; $FORM2=new AdminForm; $FORM2->title="Restart a send"; $FORM2->items=$FORM_ITEMS2; $FORM2->action=MakeAdminLink("send?Action=FinalOptions&Resuming=1"); $FORM2->MakeForm("Newsletter Details"); $FORM2->output = "If you stopped the sending process before it finished then
choose a newsletter from those below to resume sending." . $FORM2->output; $OUTPUT.=MakeBox("Resume Sending (Step 1 of 2)",$FORM2->output); $OUTPUT .= ' '; } if($Action=='DoSending') { $archive_result = ''; $qry = "SELECT newsletter_archives FROM " . $TABLEPREFIX . "sends WHERE SendID='".addslashes($SendID)."'"; $result = mysql_query($qry); if (mysql_num_rows($result) > 0) { $archive_result = mysql_result($result, 0, 0); } if ($archive_result == '') { $newsletter_archives = array('HTML' => '', 'TEXT' => ''); } else { $newsletter_archives = unserialize(stripslashes($archive_result)); } $GLOBALS['newsletter_archives'] = $newsletter_archives; $OUTPUT .= ''; $POPOUTPUT=1; include($ROOTDIR . 'admin/includes/send_emails.inc.php'); } if($Action=='FinalOptions') { $Send=mysql_fetch_assoc(mysql_query("SELECT * FROM " . $TABLEPREFIX . "sends WHERE SendID='".addslashes($SendID)."'")); if(!$Resuming) { $SendFrom= '"' . $SendName.'" <'.$SendEmail.'>'; $notify = (isset($_POST['NotifyOwner'])) ? 1 : 0; $tracklinks = (isset($_POST['TrackLinks'])) ? 1 : 0; $trackopens = (isset($_POST['TrackOpens'])) ? 1 : 0; $qry = "UPDATE " . $TABLEPREFIX . "sends SET ComposedID='".addslashes($ComposedID)."', SendFrom='".addslashes($SendFrom)."', ReplyTo='".addslashes($ReplyTo)."', ReturnPath='".addslashes($ReturnPath)."', NotifyOwner='" . $notify . "', TrackLinks='" . $tracklinks . "', TrackOpens='" . $trackopens . "' WHERE SendID='".addslashes($SendID)."'"; mysql_query($qry); $newsletter_format_result = mysql_query("SELECT Format FROM " . $TABLEPREFIX . "composed_emails WHERE ComposedID='" . addslashes($ComposedID) . "'"); $newsletter_format = mysql_result($newsletter_format_result, 0, 0); if (isset($_POST['Multipart']) && $newsletter_format == 3) { $qry = "UPDATE " . $TABLEPREFIX . "send_recipients SET Format='3' WHERE SendID='" . addslashes($SendID) . "'"; mysql_query($qry); } if($AutoArchive == 1) { // Save a copy of this newsletter to the /sendstudio/archive folder $composedID = (int)mysql_result(mysql_query("SELECT ComposedID FROM " . $TABLEPREFIX . "sends WHERE SendID = '".addslashes($SendID)."'"), 0, 0); $newsletter_archives = ArchiveNewsletter($composedID, $SendID); mysql_query("UPDATE " . $TABLEPREFIX . "sends SET newsletter_archives='" . addslashes(serialize($newsletter_archives)) . "' WHERe SendID='".addslashes($SendID)."'"); } } $list=mysql_fetch_assoc(mysql_query("SELECT * FROM " . $TABLEPREFIX . "lists WHERE ListID='".addslashes($Send['ListID'])."'")); $list = stripslashes_array($list); if($Resuming != 1) { $SR = "The details of this sending are shown below. Click on the button below to start sending this newsletter."; } else { $SR = "The details of this resuming are shown below.
Click on the \"Resume Sending\" button below to resume sending this newsletter."; } if($ComposedID == "") { $ComposedID = mysql_result(mysql_query("SELECT ComposedID FROM " . $TABLEPREFIX . "sends WHERE SendID = '".addslashes($SendID)."'"), 0, 0); } $total = mysql_result(mysql_query("SELECT TotalRecipients FROM " . $TABLEPREFIX . "sends WHERE SendID='".addslashes($SendID)."'"), 0, 0); $newsletter_result = mysql_query("SELECT EmailName FROM " . $TABLEPREFIX . "composed_emails WHERE ComposedID = '" . addslashes($ComposedID) . "'"); if (mysql_num_rows($newsletter_result) > 0) { $NewsletterName = mysql_result($newsletter_result, 0, 0); } else { $NewsletterName = "Unknown Newsletter. Has been deleted."; } $SR .= ""; if ($ServerSending) { if (isset($_GET['SendType']) && $_GET['SendType'] == 'Schedule') { $title = 'Schedule Newsletter (Step 4 of 5)'; // We're sending a newsletter $SR .= " "; $OUTPUT.=MakeBox($title,$SR); } else { $ok_to_send = CheckPerMonthSend($total, $Send['ListID'], $SendID, time()); if (!$ok_to_send) { mysql_query("DELETE FROM " . $TABLEPREFIX . "send_recipients WHERE SendID='".addslashes($SendID)."'"); $OUTPUT .= MakeErrorBox("Too many subscribers", "Sorry, sending to " . number_format($Members, 0) . " subscriber" . (($Members > 1) ? "s" : "") . " will put you over your monthly quota of " . $CURRENTADMIN['PerMonth'] . ". Please speak to your administrator about changing the limit."); } else { $query = "INSERT INTO " . $TABLEPREFIX . "server_sends(SendTime, SendID, AdminID, InProgress, Paused, Resumed, Notified) VALUES (" . (time()-5) . ", '" . addslashes($SendID)."', '".addslashes($CURRENTADMIN['AdminID'])."', 0, 0, 0, 0)"; $result = mysql_query($query); $title = 'Send Newsletter'; $info = 'Your newsletter is scheduled to send as soon as possible.'; $OUTPUT .= MakeSuccessBox($title, $info, MakeAdminLink('scheduler')); } } } if (!$ServerSending) { if($Resuming == 1) { // We're resuming a send $SR .= ""; $OUTPUT.=MakeBox("Resume Sending (Step 2 of 2)",$SR); } else { // We're sending a newsletter $SR .= ""; $OUTPUT.=MakeBox("Send Newsletter (Step 4 of 4)",$SR); } } } if($Action=='LogRecipients') { mysql_query("DELETE FROM " . $TABLEPREFIX . "send_recipients WHERE SendID='".addslashes($SendID)."'"); $Send=mysql_fetch_assoc(mysql_query("SELECT * FROM " . $TABLEPREFIX . "sends WHERE SendID='".addslashes($SendID)."'")); $table_details = array(); $table_details['table'] = 'send_recipients'; $table_details['idname'] = 'SendID'; $table_details['id'] = $SendID; $table_details['orderby'] = 'MemberID'; $Members = ReturnMembers($Send['ListID'],$Email,$Status,$Confirmed,$Fields,$HaveClickedLink,$Format, false, $table_details, false, array(), 'Email', 'Up', false, array(), $HaveOpenedNewsletter); $ok_to_continue = true; if (!$ServerSending) { $ok_to_send = CheckPerMonthSend($Members, $Send['ListID'], $SendID, time()); if (!$ok_to_send) { mysql_query("DELETE FROM " . $TABLEPREFIX . "send_recipients WHERE SendID='".addslashes($SendID)."'"); $OUTPUT .= MakeErrorBox("Too many subscribers", "Sorry, sending to " . number_format($Members, 0) . " subscriber" . (($Members > 1) ? "s" : "") . " will put you over your monthly quota of " . $CURRENTADMIN['PerMonth'] . ". Please speak to your administrator about changing the limit."); $ok_to_continue = false; } } if ($ok_to_continue) { // Update the TotalRecipients field mysql_query("UPDATE " . $TABLEPREFIX . "sends SET TotalRecipients = " . $Members . " WHERE SendID='".addslashes($SendID)."'"); if($Members) { $emails_query = "SELECT ComposedID, EmailName, Format FROM " . $TABLEPREFIX . "composed_emails"; if(!$CURRENTADMIN['Manager']) $emails_query .= " WHERE AdminID = '" . addslashes($CURRENTADMIN["AdminID"]) . "'"; $emails_query .= " ORDER BY EmailName ASC"; $emails=mysql_query($emails_query); if ($_POST['ComposedID'] == 0) $ComposedID = 0; $allemails = '0->Please select a newsletter;'; while($e=mysql_fetch_assoc($emails)) { $allemails.=stripslashes($e['ComposedID']).'->'.str_replace(':', '$$COLON$$', stripslashes($e['EmailName'])).';'; } $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Send Newsletter"]="select|ComposedID:1:$allemails:$ComposedID"; $HELP_ITEMS["ComposedID"]["Title"] = "Send Newsletter"; $HELP_ITEMS["ComposedID"]["Content"] = "Which newsletter would you like to send to your subscribers?"; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . " "]="raw| Preview"; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Send Multipart"]="checkbox|Multipart:1:Yes, send the email as multipart :"; $HELP_ITEMS["Multipart"]["Title"] = "Send Multipart"; $HELP_ITEMS["Multipart"]["Content"] = "Sending a multipart email will let the subscribers email program decide which format (HTML or Text) to display the newsletter in.

It is best to use this if you don\'t give your subscribers a choice to which format they receive (e.g. they all subscribe as HTML), when they receive the newsletter their email program will automatically show the correct format."; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Track Email Opens"]="checkbox|TrackOpens:1:Yes, track opening of HTML emails :CHECKED"; $HELP_ITEMS["TrackOpens"]["Title"] = "Track Email Opens"; $HELP_ITEMS["TrackOpens"]["Content"] = "Track opening of emails when a subscriber receives a newsletter. This only applies to HTML newsletters."; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Track Links"]="checkbox|TrackLinks:1:Yes, track all links in this newsletter :CHECKED"; $HELP_ITEMS["TrackLinks"]["Title"] = "Track Links"; $HELP_ITEMS["TrackLinks"]["Content"] = "Track all links in this newsletter (for use with statistics)"; $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Send From Name"]="textfield|SendName:100:44:$WebmasterName"; $HELP_ITEMS["SendName"]["Title"] = "Send Name"; $HELP_ITEMS["SendName"]["Content"] = "Which person or company name should show in the "From Name" field for this email?"; $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Send From Email"]="textfield|SendEmail:100:44:$WebmasterEmail"; $HELP_ITEMS["SendEmail"]["Title"] = "Send From Email"; $HELP_ITEMS["SendEmail"]["Content"] = "Which email address should show in the "From Email" field for this email?"; $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Reply-To Email"]="textfield|ReplyTo:100:44:$WebmasterEmail"; $HELP_ITEMS["ReplyTo"]["Title"] = "Reply-To Email"; $HELP_ITEMS["ReplyTo"]["Content"] = "When a subscriber receives your email and clicks reply, which email address should that email be sent to? If you are unsure, use \'$WebmasterEmail\'."; // if we're in safe mode, we don't get a choice about the returnpath - it will be the to field. // instead, set it to the current webmasteremail - it won't be used anyway. if (SAFE_MODE) { $FORM_ITEMS['-50'] = 'hidden|ReturnPath:' . $WebmasterEmail; } else { $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Return-Path Email"]="textfield|ReturnPath:100:44:$WebmasterEmail"; $HELP_ITEMS["ReturnPath"]["Title"] = "Return-Path Email"; $HELP_ITEMS["ReturnPath"]["Content"] = "When an email bounces, or is rejected by the mail server, which email address should the error be sent to? If you plan to use the bounce handler, then make sure no other emails will be sent to this address."; } if ($ServerSending) { $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Notify List Owner"] = "checkbox|NotifyOwner:1:Yes, notify owner via email :"; $HELP_ITEMS["NotifyOwner"]["Title"] = "Notify List Owner"; $HELP_ITEMS["NotifyOwner"]["Content"] = "Notify the list owner when the schedule is altered, starts sending, finishes sending or an error occurs"; } $FORM_ITEMS["-1"]="submit|Next »:1-send?Action=CancelSchedule&ResetSendID=$SendID"; $FORM=new AdminForm; $FORM->title="FinalSendOptions"; $FORM->items=$FORM_ITEMS; $link = "send?Action=FinalOptions&SendID=$SendID"; if (isset($_GET['SendType'])) $link .= '&SendType=' . $_GET['SendType']; $FORM->action=MakeAdminLink($link); $FORM->MakeForm("Newsletter Details"); $FORM->output = "The selected newsletter will be sent to " . number_format(mysql_result(mysql_query("SELECT COUNT(*) FROM " . $TABLEPREFIX . "send_recipients WHERE SendID='".addslashes($SendID)."'"), 0, 0), 0) . " member(s).
Click on the \"Next\" button below to continue." . $FORM->output; $heading = "Send Newsletter (Step 3 of 4)"; if (isset($_GET['SendType']) && $_GET['SendType'] == 'Schedule') $heading = 'Schedule Newsletter (Step 3 of 5)'; $OUTPUT.=MakeBox($heading,$FORM->output); $OUTPUT .= ' '; } else { // This list is empty $OUTPUT .= MakeErrorBox("No Subscribers Found", "No subscribers were found for the criteria that you specified. Please click on the button below to go back and try again."); } } } if($Action=="MakeSend") { if(!$SendID){ mysql_query("INSERT INTO " . $TABLEPREFIX . "sends set ListID='".addslashes($ListID)."', EmailsSent=0, HTMLRecipients=0, TextRecipients=0"); $SendID=mysql_insert_id(); } $size = $min = $max = $Width = $Height = 0; //search for members form! $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Status"]="select|Status:1:ALL->View All;0->Inactive;1->Active:1"; $HELP_ITEMS["Status"]["Title"] = "Status"; $HELP_ITEMS["Status"]["Content"] = "Should this newsletter be sent to only active, only inactive or all subscribers?"; $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Confirmed"]="select|Confirmed:1:ALL->Either;0->Not Confirmed;1->Confirmed:1"; $HELP_ITEMS["Confirmed"]["Title"] = "Confirmed"; $HELP_ITEMS["Confirmed"]["Content"] = "Should this newsletter be sent to only confirmed, only unconfirmed or all subscribers?"; $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Format"]="select|Format:1:ALL->Either;1->Text;2->HTML"; $HELP_ITEMS["Format"]["Title"] = "Format"; $HELP_ITEMS["Format"]["Content"] = "Should this newsletter be sent to subscribers who are flagged to receive text, HTML or both types of newsletters?"; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match Email"]="textfield|Email:100:44:"; $HELP_ITEMS["Email"]["Title"] = "Match Email"; $HELP_ITEMS["Email"]["Content"] = "If you want to filter which subscribers receive this email, then enter the complete or partial email address to match here."; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Filter by Date"]="dateboxsearch|SubscribeDate::"; $HELP_ITEMS["SubscribeDate"]["Title"] = "Filter by Date"; $HELP_ITEMS["SubscribeDate"]["Content"] = "If you would like to filter your search by date subscribed, select this and select your date range"; $links = FetchLinks(); $alllinks = '0->Not Applicable;N->None;A->Any Link;'; foreach($links as $pos => $details) { $alllinks .= $details['LinkID'] . '->' . $details['URL'] . ';'; } $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Have Clicked Link"]="select|HaveClickedLink:1:" . str_replace(':', '$$COLON$$', $alllinks); $HELP_ITEMS["HaveClickedLink"]["Title"] = "Have Clicked Link"; $HELP_ITEMS["HaveClickedLink"]["Content"] = "Should this newsletter be sent only to subscribers who have clicked on a particular link?"; $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Have Opened Newsletter"]="select|HaveOpenedNewsletter:1:0->Not Applicable;N->None;A->Any Newsletter"; $HELP_ITEMS["HaveOpenedNewsletter"]["Title"] = "Have Opened Newsletter"; $HELP_ITEMS["HaveOpenedNewsletter"]["Content"] = "Should this newsletter be sent only to subscribers who have opened any newsletter?"; $custom_fields = FetchCustomFields(); if (!empty($custom_fields)) { $FORM_ITEMS['-100'] = 'spacer|
  Filter by Custom Fields
'; } foreach($custom_fields as $pos => $f) { $f = stripslashes_array($f); switch($f['FieldType']){ case 'shorttext': if (strpos($f['AllValues'], ',') === false) { $size = 10; $min = 10; $max = 10; } else { list($size,$min,$max)=explode(',',$f['AllValues']); } $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match ".$f['FieldName']]="textfield|Fields[".$f['FieldID']."]:$max:44"; break; case 'longtext': if (strpos($f['AllValues'], ',') === false) { $Width = 10; $Height=5; } else { list($Width,$Height)=explode(',',$f['AllValues']); } $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match ".$f['FieldName']]="textfield|Fields[".$f['FieldID']."]:500:44"; break; case 'checkbox': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match " . $f["FieldName"]]="select|Fields[".$f['FieldID']."]:1:y->Yes;n->No;all->All:all"; break; case 'multicheckbox': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match " . $f["FieldName"]]="checkboxes|Fields[".$f["FieldID"]."]:" . $f['AllValues'] . ":"; break; case 'dropdown': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match " . $f['FieldName']]="select|Fields[".$f['FieldID']."]:1:->All Values;".str_replace(':', '$$COLON$$', $f["AllValues"]).":"; break; case 'number': if (strpos($f['AllValues'], ',') === false) { $size = 10; $min = 10; $max = 10; } else { list($size,$min,$max)=explode(',',$f['AllValues']); } $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match ".$f['FieldName']]="number|Fields[".$f['FieldID']."]:$max:44"; $HELP_ITEMS['Fields['.$f['FieldID'].']']['Title'] = 'Match Numbers'; $HELP_ITEMS['Fields['.$f['FieldID'].']']['Content'] = 'You can use operators like >, <, <=, >= in this field'; break; case 'datebox': $FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . "Match ".$f['FieldName']]="dateboxsearch|Fields[".$f['FieldID']."]:" . $f['AllValues'] . ":"; break; } } $FORM_ITEMS["-1"]="submit|Next »:1-send"; $FORM_ITEMS[-2]="hidden|ComposedID:$ComposedID"; $FORM=new AdminForm; $FORM->title="SelectSendRecipients"; $FORM->items=$FORM_ITEMS; $link = "send?Action=LogRecipients&SendID=$SendID"; if (isset($_GET['SendType'])) $link .= '&SendType=' . $_GET['SendType']; $FORM->action=MakeAdminLink($link); $FORM->MakeForm("Newsletter Recipient Details"); $FORM->output = "Use the form below to choose the recipients to receive this newsletter.
Click on the \"Next\" button to continue." . $FORM->output; $heading = "Send Newsletter (Step 2 of 4)"; if (isset($_GET['SendType']) && $_GET['SendType'] == 'Schedule') $heading = 'Schedule Newsletter (Step 2 of 5)'; $OUTPUT.=MakeBox($heading,$FORM->output); $OUTPUT .= ' '; } if ($Action == 'CancelSchedule') { $send_id = (int)$_GET['ResetSendID']; ResetPerMonth($send_id, 0); $Action = ''; } if(!$SendID && $Action == "") { $TO = ''; $lists = mysql_query("SELECT * FROM " . $TABLEPREFIX . "lists ORDER BY ListName ASC"); $alllists = $alllists1 = ''; while($l=mysql_fetch_assoc($lists)) { $l = stripslashes_array($l); if(AllowList($l['ListID'])) { if ($CURRENTADMIN['DisplaySummaries']) { $numSubs = (int)mysql_result(mysql_query("SELECT COUNT(*) FROM " . $TABLEPREFIX . "members WHERE ListID=" . addslashes($l['ListID'])), 0, 0); if($numSubs == 1) $subs = "1 subscriber"; else $subs = number_format($numSubs, 0) . " subscribers"; $subs = " (" . $subs . ")"; } else { $subs = ""; } $alllists.=$l["ListID"]."->".str_replace(';', '$$SEMI$$', str_replace(':', '$$COLON$$', $l["ListName"]))."$subs;"; } } $alllists = eregi_replace(",$", "", $alllists); // How many newsletters are there to send? if($alllists == '') { $numNL = 0; } else { if($CURRENTADMIN["Manager"] == 1) { $numNL = mysql_result(mysql_query("SELECT COUNT(*) FROM " . $TABLEPREFIX . "composed_emails"), 0, 0); } else { $numNL = mysql_result(mysql_query("SELECT COUNT(*) FROM " . $TABLEPREFIX . "composed_emails WHERE AdminID = '" . addslashes($CURRENTADMIN["AdminID"])."'"), 0, 0); } } if($alllists != '' && $numNL == 0) { if(AllowSection(11)) { $TO .= 'No newsletters have been created. Click the "Create Newsletter" button to create one.



'; } else { $TO .= 'No newsletters have been created.

'; } $heading = "Send Newsletter (Step 1 of 4)"; if (isset($_GET['SendType']) && $_GET['SendType'] == 'Schedule') { $heading = 'Schedule Newsletter (Step 1 of 5)'; } $OUTPUT .= MakeBox($heading, $TO); } else { if($alllists == "") { if(AllowSection(2)) { $TO .= 'No mailing lists have been created. Click the "Create Mailing List" button to create one.



'; } else { $TO .= 'No mailing lists have been created.

'; } $heading = "Send Newsletter (Step 1 of 4)"; if (isset($_GET['SendType']) && $_GET['SendType'] == 'Schedule') $heading = 'Schedule Newsletter (Step 1 of 5)'; $OUTPUT.=MakeBox($heading, $TO); } else { $FORM_ITEMS[$FORM_REQUIRED_ITEM . "Mailing List"]="select|ListID:5:$alllists"; $FORM_ITEMS["-1"]="submit|Next »:1-send"; $FORM_ITEMS[-2]="hidden|ComposedID:$ComposedID"; $FORM=new AdminForm; $FORM->title="SelectList"; $FORM->items=$FORM_ITEMS; $link = "send?Action=MakeSend&SendID=$SendID"; if (isset($_GET['SendType'])) $link .= '&SendType=' . $_GET['SendType']; $FORM->action=MakeAdminLink($link); $FORM->MakeForm("Mailing List Details"); $FORM->output = "Complete the form below to send a newsletter. Click on the \"Next\" button to continue.

" . $FORM->output; $show_box = true; $heading = "Send Newsletter (Step 1 of 4)"; if (isset($_GET['SendType']) && $_GET['SendType'] == 'Schedule') $heading = 'Schedule Newsletter (Step 1 of 5)'; $heading = "Send Newsletter (Step 1 of 4)"; if (isset($_GET['SendType']) && $_GET['SendType'] == 'Schedule') { $heading = 'Schedule Newsletter (Step 1 of 5)'; if (!$ServerSending) $show_box = false; } if ($show_box) { $OUTPUT.=MakeBox($heading,$FORM->output); $OUTPUT .= ' '; } else { $errormsg = 'Scheduling is not currently enabled. '; if ($CURRENTADMIN['Root']) { $errormsg .= ' You will need to set up a CRON job to run (see documentation), and enable "Send Emails via Cron" in Settings.
'; } else { $errormsg .= ' Please speak to your Administrator about this.
'; } $OUTPUT .= MakeErrorBox('Scheduling not enabled', $errormsg); } } } } ?>