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.



'; $TO .= ' '; $schedule_result = mysql_query($schedule_query); if (mysql_num_rows($schedule_result) <= 0) { $TO .= ' '; } else { while($row = mysql_fetch_assoc($schedule_result)) { $row = stripslashes_array($row); $status = ''; if ($row['InProgress']) $status = 'In Progress'; if (!$row['InProgress']) $status = 'Waiting to send'; if ($row['Paused'] && !$row['Resumed']) $status = 'Paused'; if (!$row['SendTime'] > time()) $status = 'Not started'; if ($row['Finished']) $status = 'Finished sending'; $TO .= ' '; $TO .= ''; } } $TO .= '
  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 .= '
'; $OUTPUT.=MakeBox("Manage Scheduling",$TO); } } ?>