0) {
$query = "UPDATE " . $TABLEPREFIX . "sends_permonth SET EmailsSent=EmailsSent - " . (int)$reset_amount . " WHERE AdminID='" . addslashes($CURRENTADMIN['AdminID']) . "' AND SendID='" . addslashes($SendID) . "'";
} else {
$query = "DELETE FROM " . $TABLEPREFIX . "sends_permonth WHERE AdminID='" . addslashes($CURRENTADMIN['AdminID'])."' AND SendID='" . addslashes($SendID) . "'";
}
mysql_query($query);
}
if ($Action == 'Schedule') {
if ($ScheduleID) {
$schedule_query = "SELECT ServerSendID, Paused, Resumed, Finished, InProgress, l.ListID, ListName, ce.ComposedID, EmailName, SendTime, s.SendID, s.NotifyOwner FROM " . $TABLEPREFIX . "server_sends ss, " . $TABLEPREFIX . "sends s, " . $TABLEPREFIX . "lists l, " . $TABLEPREFIX . "composed_emails ce WHERE ss.ServerSendID='".addslashes($ScheduleID)."' AND 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 = mysql_fetch_assoc(mysql_query($schedule_query));
$schedule['SendTime'];
$continue_button = 'Finish';
$cancel_button = 'scheduler';
$SendID = $schedule['SendID'];
} else {
$schedule = array();
$schedule['SendTime'] = time();
$continue_button = "Finish";
$cancel_button = "send";
$steps = "5 of 5";
}
$FORM_ITEMS[$FORM_REQUIRED_ITEM . "Scheduled to send"]="datetimeboxes|SendTimeDate:" . $schedule['SendTime'];
$HELP_ITEMS["SendTimeDate"]["Title"] = "When?";
$HELP_ITEMS["SendTimeDate"]["Content"] = "When should the newsletter be sent?";
$OUTPUT .= '
';
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'] . '->' . 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();
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);
} 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) {
$OUTPUT .= MakeSuccessBox("Newsletter Scheduled", "The newsletter has been scheduled for sending.", MakeAdminLink("scheduler"));
} 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)."'");
$sendid = mysql_result($sendid_result, 0, 0);
// see how many we have to take off the per-month sending....
$query = "SELECT COUNT(*) FROM " . $TABLEPREFIX . "send_recipients WHERE SendID='" . addslashes($sendid) . "'";
$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 .= '