File: 1.09.1a/server/web/schedule.php (View as HTML)

  1: <?php
  2: /* -------------------------------------------------------------
  3: This file is part of FreeNATS
  4: 
  5: FreeNATS is (C) Copyright 2008 PurplePixie Systems
  6: 
  7: FreeNATS is free software: you can redistribute it and/or modify
  8: it under the terms of the GNU General Public License as published by
  9: the Free Software Foundation, either version 3 of the License, or
 10: (at your option) any later version.
 11: 
 12: FreeNATS is distributed in the hope that it will be useful,
 13: but WITHOUT ANY WARRANTY; without even the implied warranty of
 14: MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 15: GNU General Public License for more details.
 16: 
 17: You should have received a copy of the GNU General Public License
 18: along with FreeNATS.  If not, see www.gnu.org/licenses
 19: 
 20: For more information see www.purplepixie.org/freenats
 21: -------------------------------------------------------------- */
 22: 
 23: ob_start();
 24: require("include.php");
 25: $NATS->Start();
 26: if (!$NATS_Session->Check($NATS->DB))
 27: 	{
 28: 	header("Location: ./?login_msg=Invalid+Or+Expired+Session");
 29: 	exit();
 30: 	}
 31: if ($NATS_Session->userlevel<9) UL_Error("Admin Interface");
 32: 
 33: // Actions Here
 34: if (isset($_REQUEST['action']))
 35: 	{
 36: 	switch($_REQUEST['action'])
 37: 		{ // create delete save_edit
 38: 		  // create_item delete_item save_item
 39: 		case "create":
 40: 		$q="INSERT INTO fnschedule(schedulename) VALUES(\"".ss($_REQUEST['schedulename'])."\")";
 41: 		$NATS->DB->Query($q);
 42: 		$_REQUEST['scheduleid']=$NATS->DB->Insert_Id();
 43: 		break;
 44: 		
 45: 		case "delete":
 46: 		if (!isset($_REQUEST['confirmed']))
 47: 			{
 48: 			$back="schedule.php?delscheduleid=".$_REQUEST['delscheduleid']."&action=delete&confirmed=1";
 49: 			$msg="Delete Schedule and All Associated Items";
 50: 			$u="confirm.php?action=".urlencode($msg)."&back=".urlencode($back);
 51: 			header("Location: ".$u);
 52: 			exit();
 53: 			}
 54: 		$q="DELETE FROM fnscheditem WHERE scheduleid=".ss($_REQUEST['delscheduleid']);
 55: 		$NATS->DB->Query($q);
 56: 		$q="UPDATE fnnode SET scheduleid=0 WHERE scheduleid=".ss($_REQUEST['delscheduleid']);
 57: 		$NATS->DB->Query($q);
 58: 		$q="DELETE FROM fnschedule WHERE scheduleid=".ss($_REQUEST['delscheduleid']);
 59: 		$NATS->DB->Query($q);
 60: 		break;
 61: 		
 62: 		case "save_edit":
 63: 		$q="UPDATE fnschedule SET schedulename=\"".ss($_REQUEST['schedulename'])."\",defaultaction=".ss($_REQUEST['defaultaction'])." ";
 64: 		$q.="WHERE scheduleid=".ss($_REQUEST['scheduleid']);
 65: 		$NATS->DB->Query($q);
 66: 		break;
 67: 		
 68: 		case "create_item":
 69: 		if ($_REQUEST['year']=="") $year=0;
 70: 		else $year=ss($_REQUEST['year']);
 71: 		$q="INSERT INTO fnscheditem(scheduleid,dayofweek,dayofmonth,monthofyear,year,starthour,startmin,finishhour,finishmin) VALUES(";
 72: 		$q.=ss($_REQUEST['scheduleid']).",\"".ss($_REQUEST['dayofweek'])."\",".ss($_REQUEST['dayofmonth']).",".ss($_REQUEST['monthofyear']).",".$year.",";
 73: 		$q.=ss($_REQUEST['starthour']).",".ss($_REQUEST['startmin']).",".ss($_REQUEST['finishhour']).",".ss($_REQUEST['finishmin']).")";
 74: 		$NATS->DB->Query($q);
 75: 		break;
 76: 		//echo $q;
 77: 		
 78: 		case "save_item":
 79: 		if ($_REQUEST['year']=="") $year=0;
 80: 		else $year=ss($_REQUEST['year']);
 81: 		$q="UPDATE fnscheditem SET ";
 82: 		//(scheduleid,dayofweek,dayofmonth,monthofyear,year,starthour,startmin,finishhour,finishmin) VALUES(";
 83: 		$q.="dayofweek=\"".ss($_REQUEST['dayofweek'])."\",";
 84: 		$q.="dayofmonth=".ss($_REQUEST['dayofmonth']).",monthofyear=".ss($_REQUEST['monthofyear']).",year=".$year.",";
 85: 		$q.="starthour=".ss($_REQUEST['starthour']).",startmin=".ss($_REQUEST['startmin']).",";
 86: 		$q.="finishhour=".ss($_REQUEST['finishhour']).",finishmin=".ss($_REQUEST['finishmin'])." WHERE scheditemid=".ss($_REQUEST['scheditemid']);
 87: 		$NATS->DB->Query($q);
 88: 		break;
 89: 		
 90: 		case "delete_item";
 91: 		$q="DELETE FROM fnscheditem WHERE scheditemid=".ss($_REQUEST['scheditemid']);
 92: 		$NATS->DB->Query($q);
 93: 		break;
 94: 		}
 95: 		
 96: 	}
 97: 
 98: 
 99: Screen_Header("Schedule Management",1,1,"","main","admin");
100: 
101: echo "<br><b class=\"subtitle\"><a href=admin.php>System Settings</a> &gt; Schedule Manager</b><br><br>";
102: $q="SELECT scheduleid,schedulename FROM fnschedule";
103: $r=$NATS->DB->Query($q);
104: if ($NATS->DB->Num_Rows($r)<=0) echo "<i>No Schedules</i><br>";
105: else
106: 	{
107: 	echo "<table class=\"nicetable\">";
108: 	while ($row=$NATS->DB->Fetch_Array($r))
109: 		{
110: 		echo "<tr><td><b><a href=schedule.php?scheduleid=".$row['scheduleid'].">".$row['schedulename']."</a></b>&nbsp;&nbsp;</td>";
111: 		echo "<td><a href=schedule.php?scheduleid=".$row['scheduleid'].">Edit</a> | ";
112: 		echo "<a href=schedule.php?delscheduleid=".$row['scheduleid']."&action=delete>Delete</a></td></tr>";
113: 		}
114: 	echo "</table>";
115: 	}
116: $NATS->DB->Free($r);
117: echo "<form action=schedule.php method=post><input type=hidden name=action value=create>";
118: echo "<br><b>Create: </b><input type=text name=schedulename size=30 maxlength=64 value=\"Test Schedule\"> ";
119: echo "<input type=submit value=\"Create\"></form><br>";
120: 
121: $days_of_week=array( '', 'Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun' );
122: 
123: function tt($a) // "to ten"
124: {
125: if ($a<10) return "0".$a;
126: else return $a;
127: }
128: 
129: // view a specific schedule
130: if (isset($_REQUEST['scheduleid']))
131: 	{
132: 	$q="SELECT * FROM fnschedule WHERE scheduleid=".ss($_REQUEST['scheduleid'])." LIMIT 0,1";
133: 	$r=$NATS->DB->Query($q);
134: 	if ($row=$NATS->DB->Fetch_Array($r))
135: 		{
136: 		echo "<b class=\"subtitle\">Editing Schedule: ".$row['schedulename']."</b><br><br>";
137: 		echo "<table class=\"nicetable\">";
138: 		echo "<form action=schedule.php method=post><input type=hidden name=action value=save_edit>";
139: 		echo "<input type=hidden name=scheduleid value=".$_REQUEST['scheduleid'].">";
140: 		echo "<tr><td><b>Schedule Name :</b></td>";
141: 		echo "<td><input type=text name=schedulename size=30 maxlength=64 value=\"".$row['schedulename']."\">";
142: 		echo "</td></tr>";
143: 		$o_on="<option value=1>Run Test/Alert (Enabled)</option>";
144: 		$o_off="<option value=0> Don't Run Test/Alert (Disabled)</option>";
145: 		echo "<tr><td><b>Default Action :</b></td>";
146: 		echo "<td><select name=defaultaction>";
147: 		if ($row['defaultaction']==0) echo $o_off.$o_on;
148: 		else echo $o_on.$o_off;
149: 		echo "</select> ".hlink("Schedule:DefaultAction")."</td></tr>";
150: 		echo "<tr><td>&nbsp;</td><td><input type=submit value=\"Save Settings\"></td></tr>";
151: 		echo "</form></table><br>";
152: 		
153: 		echo "<b class=\"subtitle\">Exceptions</b><br><br>";
154: 		echo "Exceptions are the times when your schedule <b>will not</b> perform its default action i.e. not test the node or send the alert.<br>";
155: 		echo "See the <a href=http://www.purplepixie.org/freenats/support.php>documentation</a> for more information.<br><br>";
156: 		
157: 		echo "<table class=\"nicetable\">";
158: 		echo "<tr><td><b>Weekday</b></td><td><b>Day</b></td><td><b>Month</b></td><td><b>Year</b>&nbsp;&nbsp;</td><td><b>From (HH:MM) =&gt;</b></td>";
159: 		echo "<td><b>To HH:MM</td></td><td>&nbsp;</td></tr>";
160: 
161: 		$q="SELECT * FROM fnscheditem WHERE scheduleid=".ss($_REQUEST['scheduleid']);
162: 		$r=$NATS->DB->Query($q);
163: 		while ($row=$NATS->DB->Fetch_Array($r))
164: 			{
165: 			echo "<tr><td colspan=8>&nbsp;</td></tr>";
166: 		
167: 			echo "<form action=schedule.php method=post>";
168: 			echo "<input type=hidden name=scheduleid value=".$_REQUEST['scheduleid'].">";
169: 			echo "<input type=hidden name=scheditemid value=".$row['scheditemid'].">";
170: 			echo "<input type=hidden name=action value=save_item>";
171: 			
172: 			echo "<tr><td>";
173: 			echo "<select name=dayofweek>";
174: 			//echo "<option value=\"\">*</option>";
175: 			echo "<option value=\"".$row['dayofweek']."\">".$row['dayofweek']."</option>";
176: 			foreach($days_of_week as $day)
177: 				echo "<option value=\"".$day."\">".$day."</option>";
178: 			echo "</select></td>";
179: 			echo "<td><select name=dayofmonth>";
180: 			echo "<option value=\"".$row['dayofmonth']."\">".$row['dayofmonth']."</option>";
181: 			echo "<option value=0> </option>";
182: 			for ($a=1; $a<32; $a++) echo "<option value=".$a.">".$a."</option>";
183: 			echo "</select></td>";
184: 			echo "<td><select name=monthofyear>";
185: 			echo "<option value=\"".$row['monthofyear']."\">".$row['monthofyear']."</option>";
186: 			echo "<option value=0> </option>";
187: 			for ($a=1; $a<13; $a++) echo "<option value=".$a.">".$a."</option>";
188: 			echo "</select></td>";
189: 			if ($row['year']==0) $year="";
190: 			else $year=$row['year'];
191: 			echo "<td><input type=text name=year size=4 maxlength=4 value=\"".$year."\"></td>";
192: 		
193: 			echo "<td><select name=starthour>";
194: 			echo "<option value=\"".$row['starthour']."\">".tt($row['starthour'])."</option>";
195: 			for ($a=0; $a<24; $a++) echo "<option value=".$a.">".tt($a)."</option>";
196: 			echo "</select>:<select name=startmin>";
197: 			echo "<option value=\"".$row['startmin']."\">".tt($row['startmin'])."</option>";
198: 			for ($a=0; $a<60; $a++) echo "<option value=".$a.">".tt($a)."</option>";
199: 			echo "</select></td>";
200: 			
201: 			echo "<td><select name=finishhour>";
202: 			echo "<option value=\"".$row['finishhour']."\">".tt($row['finishhour'])."</option>";;
203: 			for ($a=0; $a<24; $a++) echo "<option value=".$a.">".tt($a)."</option>";
204: 			echo "</select>:<select name=finishmin>";
205: 			echo "<option value=\"".$row['finishmin']."\">".tt($row['finishmin'])."</option>";
206: 			for ($a=0; $a<60; $a++) echo "<option value=".$a.">".tt($a)."</option>";
207: 			echo "</select></td>";
208: 			echo "<td><input type=submit value=\"Save\"> ";
209: 			echo "<a href=schedule.php?scheduleid=".$_REQUEST['scheduleid']."&action=delete_item&scheditemid=".$row['scheditemid'].">";
210: 			echo "Delete</a>";
211: 			echo "</td>";
212: 			echo "</form>";
213: 			echo "</tr>";
214: 			}
215: 		
216: 		echo "<tr><td colspan=8>&nbsp;</td></tr>";
217: 		
218: 		echo "<form action=schedule.php method=post>";
219: 		echo "<input type=hidden name=scheduleid value=".$_REQUEST['scheduleid'].">";
220: 		echo "<input type=hidden name=action value=create_item>";
221: 		
222: 		echo "<tr><td>";
223: 		echo "<select name=dayofweek>";
224: 		//echo "<option value=\"\">*</option>";
225: 		foreach($days_of_week as $day)
226: 			echo "<option value=\"".$day."\">".$day."</option>";
227: 		echo "</select></td>";
228: 		echo "<td><select name=dayofmonth>";
229: 		echo "<option value=0> </option>";
230: 		for ($a=1; $a<32; $a++) echo "<option value=".$a.">".$a."</option>";
231: 		echo "</select></td>";
232: 		echo "<td><select name=monthofyear>";
233: 		echo "<option value=0> </option>";
234: 		for ($a=1; $a<13; $a++) echo "<option value=".$a.">".$a."</option>";
235: 		echo "</select></td>";
236: 		echo "<td><input type=text name=year size=4 maxlength=4></td>";
237: 	
238: 		echo "<td><select name=starthour>";
239: 		for ($a=0; $a<24; $a++) echo "<option value=".$a.">".tt($a)."</option>";
240: 		echo "</select>:<select name=startmin>";
241: 		for ($a=0; $a<60; $a++) echo "<option value=".$a.">".tt($a)."</option>";
242: 		echo "</select></td>";
243: 		
244: 		echo "<td><select name=finishhour>";
245: 		for ($a=0; $a<24; $a++) echo "<option value=".$a.">".tt($a)."</option>";
246: 		echo "</select>:<select name=finishmin>";
247: 		for ($a=0; $a<60; $a++) echo "<option value=".$a.">".tt($a)."</option>";
248: 		echo "</select></td>";
249: 		echo "<td><input type=submit value=\"Create\"></td>";
250: 		echo "</form>";
251: 		echo "</tr></table>";
252: 		
253: 		echo "<br><br>";
254: 		echo "<a name=testdate></a><b class=\"subtitle\">Test a Date and Time</b><br><br>";
255: 		echo "<form action=schedule.php#testdate method=post>";
256: 		echo "<input type=hidden name=scheduleid value=".$_REQUEST['scheduleid'].">";
257: 		echo "<input type=hidden name=test_schedule value=1>";
258: 		echo "<b>Test: </b>";
259: 		
260: 		// persist tested date/time
261: 		if (isset($_REQUEST['test_schedule']))
262: 			{
263: 			$day=$_REQUEST['testday'];
264: 			$month=$_REQUEST['testmonth'];
265: 			$year=$_REQUEST['testyear'];
266: 			$hour=$_REQUEST['testhour'];
267: 			$min=$_REQUEST['testmin'];
268: 			}
269: 		else
270: 			{
271: 			$day=date("d");
272: 			$month=date("m");
273: 			$year=date("Y");
274: 			$hour=date("H");
275: 			$min=date("i");
276: 			}
277: 		
278: 		echo "<select name=testday>";
279: 		echo "<option value=".$day.">".$day."</option>";
280: 		for ($a=1; $a<32; $a++) echo "<option value=".$a.">".tt($a)."</option>";
281: 		echo "</select><select name=testmonth>";
282: 		echo "<option value=".$month.">".$month."</option>";
283: 		for ($a=1; $a<13; $a++) echo "<option value=".$a.">".tt($a)."</option>";
284: 		echo "</select>";
285: 		echo "<input type=text name=testyear size=4 value=\"".$year."\">";
286: 		echo "&nbsp;&nbsp;";
287: 		echo "<select name=testhour>";
288: 		echo "<option value=".$hour.">".$hour."</option>";
289: 		for ($a=0; $a<24; $a++) echo "<option value=".$a.">".tt($a)."</option>";
290: 		echo "</select>:<select name=testmin>";
291: 		echo "<option value=".$min.">".$min."</option>";
292: 		for ($a=0; $a<60; $a++) echo "<option value=".$a.">".tt($a)."</option>";
293: 		echo "</select>";
294: 		echo " <input type=submit value=\"Test\">";
295: 		echo "</form><br>";
296: 		
297: 		// mktime(hr mi se mo do yr
298: 		if (isset($_REQUEST['test_schedule']))
299: 			{
300: 			$tx=mktime($_REQUEST['testhour'],$_REQUEST['testmin'],0,$_REQUEST['testmonth'],$_REQUEST['testday'],$_REQUEST['testyear']);
301: 			echo "Testing ".date("Y-m-d H:i",$tx)."... ";
302: 			$wouldrun=run_x_in_schedule($tx,$_REQUEST['scheduleid']);
303: 			echo "<b>";
304: 			if ($wouldrun) echo "Yes - TESTS WOULD RUN";
305: 			else echo "No - TESTS WOULD NOT RUN";
306: 			echo "</b><br>";
307: 			}
308: 
309: 		}
310: 	else echo "Error fetching schedule information";
311: 	}
312: 
313: Screen_Footer();
314: ?>
315: