function CheckForm()
{
return true;
}
';
if ($ScheduleID) {
$lists_result=mysql_query("SELECT * FROM " . $TABLEPREFIX . "lists ORDER BY ListName ASC");
$lists = '';
while($l=mysql_fetch_assoc($lists_result))
{
$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 = "";
}
$lists.=$l["ListID"]."->".str_replace(';', '$$SEMI$$', str_replace(':', '$$COLON$$', $l["ListName"]))."$subs;";
}
}
$FORM_ITEMS[$FORM_REQUIRED_ITEM . "Send to List"]="select|ListID:1:$lists:".$schedule['ListID'];
$HELP_ITEMS["ListID"]["Title"] = "Which List?";
$HELP_ITEMS["ListID"]["Content"] = "Which list is this scheduled for?";
$e_query = "SELECT ComposedID, EmailName FROM " . $TABLEPREFIX . "composed_emails";
if (!$CURRENTADMIN['Manager']) $e_query .= " WHERE AdminID='".addslashes($CURRENTADMIN['AdminID'])."'";
$e_query .= " ORDER BY EmailName";
$emails_result = mysql_query($e_query);
$emails = '0->Please select a newsletter;';
while($e = mysql_fetch_assoc($emails_result)) {
$emails .= $e['ComposedID'] . '->' . str_replace(':', '$$COLON$$', stripslashes($e['EmailName'])) . ';';
}
$FORM_ITEMS[$FORM_REQUIRED_ITEM . "Newsletter"]="select|ComposedID:1:$emails:".$schedule['ComposedID'];
$HELP_ITEMS["ComposedID"]["Title"] = "Newsletter?";
$HELP_ITEMS["ComposedID"]["Content"] = "Which newsletter is this scheduled for?";
$FORM_ITEMS[$FORM_NOT_REQUIRED_ITEM . " "]="raw| Preview";
$OUTPUT .= '
';
$steps = "1 of 1";
}
$FORM_ITEMS["-1"]="submit|".$continue_button.":1-".$cancel_button;
$FORM=new AdminForm;
$FORM->title="FinalSendOptions";
$FORM->items=$FORM_ITEMS;
$FORM->action=MakeAdminLink("scheduler?Action=DoSchedule&SendID=$SendID&ScheduleID=$ScheduleID");
$FORM->MakeForm("Newsletter Details");
$FORM->output = "Use the form below to schedule your newsletter.
Click on the \"Finish\" button to schedule your newsletter." . $FORM->output;
$OUTPUT.=MakeBox("Schedule Newsletter (Step " . $steps . ")",$FORM->output);
}
if ($Action == 'Pause') {
$query = "UPDATE " . $TABLEPREFIX . "server_sends SET Paused='".addslashes($CURRENTADMIN['AdminID'])."', Resumed=0, Notified=0, InProgress=0 WHERE ServerSendID='".addslashes($ScheduleID)."'";
mysql_query($query);
NotifySchedulerAdmin('pause', $ScheduleID);
$OUTPUT .= MakeSuccessBox("Newsletter Scheduled", "The newsletter has been paused.", MakeAdminLink("scheduler"));
}
if ($Action == 'Resume') {
$query = "UPDATE " . $TABLEPREFIX . "server_sends SET Paused=0, Resumed='".addslashes($CURRENTADMIN['AdminID'])."', Notified=0, InProgress=0 WHERE ServerSendID='".addslashes($ScheduleID)."'";
mysql_query($query);
NotifySchedulerAdmin('resume', $ScheduleID);
$OUTPUT .= MakeSuccessBox("Newsletter Scheduled", "The newsletter has been resumed.", MakeAdminLink("scheduler"));
}
if ($Action == 'DoSchedule') {
$timestamp = mktime($_POST['SendTimeDate']['hour'], $_POST['SendTimeDate']['minute'], 0, $_POST['SendTimeDate']['month'], $_POST['SendTimeDate']['day'], $_POST['SendTimeDate']['year']);
$now = time();
$ok_to_send = true;
$result = false;
$Send=mysql_fetch_assoc(mysql_query("SELECT * FROM " . $TABLEPREFIX . "sends WHERE SendID='".addslashes($SendID)."'"));
$ok_to_send = CheckPerMonthSend($Send['TotalRecipients'], $Send['ListID'], $SendID, $timestamp);
if ($ok_to_send) {
if ($ScheduleID) {
$query = "UPDATE " . $TABLEPREFIX . "server_sends SET SendTime='" . addslashes($timestamp) . "', InProgress=0, Finished=0, Paused=0, Resumed=0, Notified=0 WHERE ServerSendID='".addslashes($ScheduleID)."'";
$result = mysql_query($query);
$query = "UPDATE " . $TABLEPREFIX . "sends SET ListID='".addslashes($_POST['ListID']) . "', ComposedID='".addslashes($_POST['ComposedID'])."' WHERE SendID='".addslashes($SendID)."'";
$result = mysql_query($query);
ResetPerMonth($SendID, $Send['TotalRecipients']);
} else {
$query = "INSERT INTO " . $TABLEPREFIX . "server_sends(SendTime, SendID, AdminID, InProgress, Paused, Resumed, Notified) VALUES ('" . addslashes($timestamp)."', '" . addslashes($SendID)."', '".addslashes($CURRENTADMIN['AdminID'])."', 0, 0, 0, 0)";
$result = mysql_query($query);
}
}
if ($result && $ok_to_send) {
$OUTPUT .= MakeSuccessBox("Newsletter Scheduled", "The newsletter has been scheduled for sending.", MakeAdminLink("scheduler"));
} else {
if (!$ok_to_send) {
$OUTPUT .= MakeErrorBox("Too many subscribers", "Sorry, sending to " . number_format($Send['TotalRecipients'], 0) . " subscriber" . (($Send['TotalRecipients'] > 1) ? "s" : "") . " will put you over your monthly quota of " . $CURRENTADMIN['PerMonth'] . ". Please speak to your administrator about changing the limit.");
} else {
$OUTPUT .= MakeErrorBox("Newsletter Not Scheduled", "Sorry, unable to schedule your newsletter for sending.");
}
}
}
if ($Action == 'Delete') {
$sendid_result = mysql_query("SELECT SendID FROM " . $TABLEPREFIX . "server_sends WHERE ServerSendID='".addslashes($ScheduleID)."'");
if (mysql_num_rows($sendid_result) > 0) {
$sendid = mysql_result($sendid_result, 0, 0);
} else {
$sendid = 0;
}
// see how many we have to take off the per-month sending....
$query = "SELECT COUNT(*) FROM " . $TABLEPREFIX . "send_recipients WHERE SendID='" . addslashes($sendid) . "' AND Problems='0'";
$reset_result = mysql_query($query);
$reset_amount = mysql_result($reset_result, 0, 0);
// if we're deleting the schedule in the middle of a run, its cancelled.
// otherwise, we're deleting the schedule because we don't need it anymore.
if ($reset_amount > 0) {
// this tells stats that the newsletter sending was cancelled.
$query = "UPDATE " . $TABLEPREFIX . "sends SET Completed='-1', DateEnded='" . addslashes($SYSTEMTIME) . "' WHERE SendID='" . addslashes($sendid) . "'";
mysql_query($query);
}
$query = "DELETE FROM " . $TABLEPREFIX . "server_sends WHERE ServerSendID='".addslashes($ScheduleID)."'";
mysql_query($query);
$query = "DELETE FROM " . $TABLEPREFIX . "send_recipients WHERE SendID='".addslashes($sendid)."'";
mysql_query($query);
ResetPerMonth($sendid, $reset_amount);
$Action = 'ViewSchedule';
}
if (!$Action || $Action == 'ViewSchedule') {
global $ServerSending;
if (!$ServerSending) {
$errormsg = 'Scheduling is not currently enabled. ';
if ($CURRENTADMIN['Root']) {
$errormsg .= '
You will need to set up a CRON job to run (see documenation), and enable "Send Emails via Cron" in Settings.
';
} else {
$errormsg .= '
Please speak to your Administrator about this.
';
}
$OUTPUT .= MakeErrorBox('Scheduling not enabled', $errormsg);
}
if ($ServerSending) {
$schedule_query = "SELECT ServerSendID, Paused, Resumed, Finished, InProgress, ListName, EmailName, SendTime FROM " . $TABLEPREFIX . "server_sends ss, " . $TABLEPREFIX . "sends s, " . $TABLEPREFIX . "lists l, " . $TABLEPREFIX . "composed_emails ce WHERE s.ListID=l.ListID AND ss.SendID=s.SendID AND ce.ComposedID=s.ComposedID";
if (!$CURRENTADMIN['Manager']) {
$schedule_query .= " AND ss.AdminID='".addslashes($CURRENTADMIN['AdminID'])."'";
}
$schedule_query .= " ORDER BY SendTime DESC, ListName";
$TO = '
Use the form below to manage your scheduled newsletters.
| Newsletter Name | Mailing List | Date Scheduled | Status | Action | |
|
Nothing scheduled. |
|||||
|
|
' . $row["EmailName"] . ' | ' . $row["ListName"] . ' | ' . DisplayStrfDate($row["SendTime"]) . ' | ' . $status . ' | '; if (!$row['InProgress'] && !$row['Finished']) { $TO .= 'Edit' . ' '; } if (!$row['Finished'] && ($row['InProgress'] || $row['Resumed'])) { $TO .= 'Pause' . ' '; } if ($row['Paused'] && !$row['InProgress']) { $TO .= 'Resume' . ' '; } if (!$row['InProgress']) { $TO .= MakeConfirmBox("scheduler?Action=Delete&ScheduleID=".$row['ServerSendID'],"Delete") . " "; } $TO .= ' | '; $TO .= '