895 lines
37 KiB
PHP
895 lines
37 KiB
PHP
<?php
|
|
/*
|
|
blankpage.php
|
|
OpenLog Online Logbook
|
|
Copyright (C) 2025 Rod Wright
|
|
|
|
SPDX-License-Identifier: GPL-2.0
|
|
*/
|
|
|
|
include("functions.php");
|
|
|
|
if (isset($_SESSION['login'])) {
|
|
$loggedin=true;
|
|
} else {
|
|
$loggedin=false;
|
|
}
|
|
$techid=$_SESSION['login'] ?? NULL;
|
|
$isadmin=dblookup($db,"techs","techid","admin",$techid);
|
|
|
|
$upcoming=$_REQUEST['upcoming'] ?? NULL;
|
|
$schedule=$_REQUEST['schedule'] ?? NULL;
|
|
$tasks=$_REQUEST['tasks'] ?? NULL;
|
|
$devices=$_REQUEST['devices'] ?? NULL;
|
|
$action=$_REQUEST['action'] ?? NULL;
|
|
$complete=$_REQUEST['complete'] ?? NULL;
|
|
$defer=$_REQUEST['defer'] ?? NULL;
|
|
$add=$_REQUEST['add'] ?? NULL;
|
|
$edit=$_REQUEST['edit'] ?? NULL;
|
|
$update=$_REQUEST['update'] ?? NULL;
|
|
$delete=$_REQUEST['delete'] ?? NULL;
|
|
$id=$_REQUEST['id'] ?? NULL;
|
|
$active_flag=$_REQUEST['active_flag'] ?? 0;
|
|
|
|
$devicename=$_REQUEST['devicename'] ?? NULL;
|
|
$devicedesc=$_REQUEST['devicedesc'] ?? NULL;
|
|
$group_flag=$_REQUEST['group_flag'] ?? 0;
|
|
$members=$_REQUEST['members'] ?? [];
|
|
|
|
$weekdays_only=$_REQUEST['weekdays_only'] ?? NULL;
|
|
$nextdue_relative=$_REQUEST['nextdue_relative'] ?? NULL;
|
|
$taskname=$_REQUEST['taskname'] ?? NULL;
|
|
$taskdesc=$_REQUEST['taskdesc'] ?? NULL;
|
|
$frequency=$_REQUEST['frequency'] ?? NULL;
|
|
$period=$_REQUEST['period'] ?? NULL;
|
|
$refdoc_name=$_REQUEST['refdoc_name'] ?? NULL;
|
|
$refdoc_url=$_REQUEST['refdoc_url'] ?? NULL;
|
|
|
|
$deferred_flag=$_REQUEST['deferred_flag'] ?? 0;
|
|
$deferred_date=$_REQUEST['deferred_date'] ?? NULL;
|
|
$start_date=$_REQUEST['start_date'] ?? NULL;
|
|
$last_date=$_REQUEST['last_date'] ?? NULL;
|
|
$task=$_REQUEST['task'] ?? NULL;
|
|
$device=$_REQUEST['device'] ?? NULL;
|
|
$deferuntil=$_REQUEST['deferuntil'] ?? NULL;
|
|
$completedate=$_REQUEST['completedate'] ?? NULL;
|
|
$addlognote=$_REQUEST['addlognote'] ?? NULL;
|
|
|
|
$logname=LOG_NAME;
|
|
|
|
$print=$_REQUEST['print'] ?? NULL;
|
|
|
|
if ($print) {
|
|
$sbcolor=P_SIDEBAR_COLOR;
|
|
$mbgcolor=P_MENUBG_COLOR;
|
|
} else {
|
|
$sbcolor=SIDEBAR_COLOR;
|
|
$mbgcolor=MENUBG_COLOR;
|
|
}
|
|
// **** BEGIN DATABASE OPERATIONS ****
|
|
$tomorrow=mysqli_fetch_row(mysqli_query($db,"select adddate((select current_date),1)"))[0];
|
|
$errorstack=array();
|
|
|
|
if ($action) {
|
|
if ($complete) {
|
|
// sanitize user input
|
|
$completedate=mysqli_real_escape_string($db,$completedate);
|
|
// update events
|
|
mysqli_query($db,"update events set last_date=\"$completedate\", deferred_flag=0, deferred_date=\"0000-00-00\" where eventid=\"$id\"");
|
|
if ($addlognote) {
|
|
$compltaskname=mysqli_fetch_row(mysqli_query($db,"select tasks.taskname from tasks,events where events.eventid=\"$id\" and tasks.taskid=events.task"))[0];
|
|
$compldevicename=mysqli_fetch_row(mysqli_query($db,"select devices.devicename from devices,events where events.eventid=\"$id\" and devices.deviceid=events.device"))[0];
|
|
$lognotestrg="Scheduled Maintenance task \"$compltaskname\" completed on device \"$compldevicename\".";
|
|
// redirect to logentry
|
|
header("Cache-Control:no-cache, must-revalidate");
|
|
header("Pragma:no-cache");
|
|
header("Location:logentry.php?schedmaintcomplete=1¬e=$lognotestrg");
|
|
exit(0);
|
|
}
|
|
}
|
|
if ($defer) {
|
|
// update events
|
|
mysqli_query($db,"update events set deferred_flag=1, deferred_date=\"$deferuntil\" where eventid=\"$id\"");
|
|
}
|
|
}
|
|
if ($add) {
|
|
if ($schedule) {
|
|
// do error checking
|
|
// check for task selected
|
|
if ($task) {
|
|
$taskselected=true;
|
|
} else {
|
|
$taskselected=false;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> You didn't select a task.<br>";
|
|
}
|
|
// check for device selected
|
|
if ($device) {
|
|
$deviceselected=true;
|
|
} else {
|
|
$deviceselected=false;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> You didn't select a device.<br>";
|
|
}
|
|
// sanitize text data
|
|
$start_date=mysqli_real_escape_string($db,$start_date);
|
|
$last_date=mysqli_real_escape_string($db,$last_date);
|
|
$deferred_date=mysqli_real_escape_string($db,$deferred_date);
|
|
if ($taskselected && $deviceselected) {
|
|
// determine if device represents a group and break out individual devices
|
|
if (dblookup($db,"devices","deviceid","group_flag",$device)) {
|
|
$memberqry=mysqli_query($db,"select memberdevice from devicegroups where groupdevice=\"$device\"");
|
|
$memberlist=array();
|
|
while ($memberrow=mysqli_fetch_row($memberqry)) {
|
|
$memberlist[]=$memberrow[0];
|
|
}
|
|
} else {
|
|
$memberlist=array($device);
|
|
}
|
|
// run through the memberlist and modify the table
|
|
foreach ($memberlist as $memberdev) {
|
|
if ($start_date==NULL) $start_date=$today;
|
|
if ($last_date==NULL) $last_date="0000-00-00";
|
|
if ($deferred_date==NULL) $deferred_date="0000-00-00";
|
|
$addqry=("insert into events(task,device,start_date,last_date,deferred_flag,deferred_date,active_flag)
|
|
values(\"$task\",\"$memberdev\",\"$start_date\",\"$last_date\",\"$deferred_flag\",\"$deferred_date\",\"$active_flag\")");
|
|
mysqli_query($db,$addqry);
|
|
}
|
|
}
|
|
}
|
|
if ($tasks) {
|
|
// do error checking
|
|
// test for name supplied
|
|
if (strlen(trim($taskname))) {
|
|
$namesuppld=true;
|
|
} else {
|
|
$namesuppld=false;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> Task name cannot be blank.<br>";
|
|
}
|
|
// test for name unique
|
|
if (mysqli_num_rows(mysqli_query($db,"select taskid from tasks where taskname=\"$taskname\""))) {
|
|
$nameunique=false;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> Task name already exists.<br>";
|
|
} else {
|
|
$nameunique=true;
|
|
}
|
|
// sanitize text data
|
|
$taskname=mysqli_real_escape_string($db,$taskname);
|
|
$taskdesc=mysqli_real_escape_string($db,$taskdesc);
|
|
$refdoc_name=mysqli_real_escape_string($db,$refdoc_name);
|
|
$refdoc_url=mysqli_real_escape_string($db,$refdoc_url);
|
|
|
|
if ($namesuppld && $nameunique) {
|
|
// modify the table
|
|
$addqry=("insert into tasks(taskname,taskdesc,frequency,period,weekdays_only,nextdue_relative,refdoc_name,refdoc_url,active_flag)
|
|
values(\"$taskname\",\"$taskdesc\",\"$frequency\",\"$period\",\"$weekdays_only\",\"$nextdue_relative\",\"$refdoc_name\",\"$refdoc_url\",\"$active_flag\")");
|
|
mysqli_query($db,$addqry);
|
|
}
|
|
}
|
|
if ($devices) {
|
|
// do error checking
|
|
// test for name supplied
|
|
if (strlen(trim($devicename))) {
|
|
$namesuppld=true;
|
|
} else {
|
|
$namesuppld=false;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> Device name cannot be blank.<br>";
|
|
}
|
|
// test for name unique
|
|
if (mysqli_num_rows(mysqli_query($db,"select deviceid from devices where devicename=\"$devicename\""))) {
|
|
$nameunique=false;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> Device name already exists.<br>";
|
|
} else {
|
|
$nameunique=true;
|
|
}
|
|
// sanitize name and description
|
|
$devicename=mysqli_real_escape_string($db,$devicename);
|
|
$devicedesc=mysqli_real_escape_string($db,$devicedesc);
|
|
if ($namesuppld && $nameunique) {
|
|
// modify the table
|
|
$addqry=("insert into devices(devicename,devicedesc,group_flag,active_flag) values(\"$devicename\",\"$devicedesc\",\"$group_flag\",\"$active_flag\")");
|
|
mysqli_query($db,$addqry);
|
|
}
|
|
}
|
|
}
|
|
if ($edit) {
|
|
if ($schedule) {
|
|
if ($delete) {
|
|
// delete entity
|
|
mysqli_query($db,"delete from events where eventid=\"$id\"");
|
|
}
|
|
if ($update) {
|
|
// do error checking
|
|
// sanitize text data
|
|
$start_date=mysqli_real_escape_string($db,$start_date);
|
|
$last_date=mysqli_real_escape_string($db,$last_date);
|
|
$deferred_date=mysqli_real_escape_string($db,$deferred_date);
|
|
// update the tasks table
|
|
if ($start_date==NULL) $start_date=$today;
|
|
if ($last_date==NULL) $last_date="0000-00-00";
|
|
if ($deferred_date==NULL) $deferred_date="0000-00-00";
|
|
mysqli_query($db,"update events
|
|
set task=\"$task\",device=\"$device\",start_date=\"$start_date\",last_date=\"$last_date\",deferred_flag=\"$deferred_flag\",
|
|
deferred_date=\"$deferred_date\",active_flag=\"$active_flag\"
|
|
where eventid=\"$id\"");
|
|
}
|
|
}
|
|
if ($tasks) {
|
|
if ($delete) {
|
|
// check for scheduled maintenance for this entity
|
|
if (mysqli_num_rows(mysqli_query($db,"select eventid from events where task=\"$id\""))) {
|
|
$hasevents=true;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> Task has been scheduled maintenance and cannot be deleted.<br>";
|
|
} else {
|
|
$hasevents=false;
|
|
}
|
|
if (!$hasevents) {
|
|
// delete entity
|
|
mysqli_query($db,"delete from tasks where taskid=\"$id\"");
|
|
}
|
|
}
|
|
if ($update) {
|
|
// do error checking
|
|
// test for name supplied
|
|
if (strlen(trim($taskname))) {
|
|
$namesuppld=true;
|
|
} else {
|
|
$namesuppld=false;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> Task name cannot be blank.<br>";
|
|
}
|
|
// test for name unique
|
|
if (mysqli_num_rows(mysqli_query($db,"select taskid from tasks where taskname=\"$taskname\" and taskid!=\"$id\""))) {
|
|
if (mysqli_num_rows(mysqli_query($db,"select taskid from tasks where taskname=\"$taskname\""))) {
|
|
$nameunique=false;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> Task name already exists.<br>";
|
|
} else {
|
|
$nameunique=true;
|
|
}
|
|
} else {
|
|
$nameunique=true;
|
|
}
|
|
// sanitize text data
|
|
$taskname=mysqli_real_escape_string($db,$taskname);
|
|
$taskdesc=mysqli_real_escape_string($db,$taskdesc);
|
|
$refdoc_name=mysqli_real_escape_string($db,$refdoc_name);
|
|
$refdoc_url=mysqli_real_escape_string($db,$refdoc_url);
|
|
if ($namesuppld && $nameunique) {
|
|
// update the tasks table
|
|
mysqli_query($db,"update tasks
|
|
set taskname=\"$taskname\",taskdesc=\"$taskdesc\",frequency=\"$frequency\",period=\"$period\",weekdays_only=\"$weekdays_only\",
|
|
nextdue_relative=\"$nextdue_relative\",refdoc_name=\"$refdoc_name\",refdoc_url=\"$refdoc_url\",active_flag=\"$active_flag\"
|
|
where taskid=\"$id\"");
|
|
}
|
|
}
|
|
}
|
|
if ($devices) {
|
|
if ($delete) {
|
|
// check for scheduled maintenance for this device
|
|
if (mysqli_num_rows(mysqli_query($db,"select eventid from events where device=\"$id\""))) {
|
|
$hasevents=true;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> Device has scheduled maintenance and cannot be deleted.<br>";
|
|
} else {
|
|
$hasevents=false;
|
|
}
|
|
if (!$hasevents) {
|
|
// delete entity
|
|
mysqli_query($db,"delete from devices where deviceid=\"$id\"");
|
|
}
|
|
}
|
|
if ($update) {
|
|
// do error checking
|
|
// test for name supplied
|
|
if (strlen(trim($devicename))) {
|
|
$namesuppld=true;
|
|
} else {
|
|
$namesuppld=false;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> Device name cannot be blank.<br>";
|
|
}
|
|
// test for name unique
|
|
if (mysqli_num_rows(mysqli_query($db,"select deviceid from devices where devicename=\"$devicename\" and deviceid!=\"$id\""))) {
|
|
if (mysqli_num_rows(mysqli_query($db,"select deviceid from devices where devicename=\"$devicename\""))) {
|
|
$nameunique=false;
|
|
$errorstack[]="<img src=\"icons/exclamation-red.png\" border=\"0\"> Device name already exists.<br>";
|
|
} else {
|
|
$nameunique=true;
|
|
}
|
|
} else {
|
|
$nameunique=true;
|
|
}
|
|
// sanitize name and description
|
|
$devicename=mysqli_real_escape_string($db,$devicename);
|
|
$devicedesc=mysqli_real_escape_string($db,$devicedesc);
|
|
if ($namesuppld && $nameunique) {
|
|
// update the devices table
|
|
mysqli_query($db,"update devices set devicename=\"$devicename\",devicedesc=\"$devicedesc\",group_flag=\"$group_flag\",active_flag=\"$active_flag\" where deviceid=\"$id\"");
|
|
// update the devicegroups table
|
|
mysqli_query($db,"delete from devicegroups where groupdevice=\"$id\"");
|
|
if ($group_flag) {
|
|
foreach ($members as $member) {
|
|
mysqli_query($db,"insert into devicegroups(groupdevice,memberdevice) values(\"$id\",\"$member\")");
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
// **** END DATABASE OPERATIONS ****
|
|
|
|
framework("begin","$logname","Scheduled Maintenance",$print);
|
|
|
|
//var_dump($_REQUEST);
|
|
|
|
pagetable("begin");
|
|
|
|
pageblock("left","begin");
|
|
sidemenu();
|
|
pageblock("left","end");
|
|
|
|
pageblock("right","begin");
|
|
banner($print);
|
|
if ($loggedin) {
|
|
echo "
|
|
<form method=\"post\" action=\"schedmaint.php\">
|
|
<br><center>
|
|
<input type=\"submit\" name=\"upcoming\" value=\"View Upcoming\">
|
|
<input type=\"submit\" name=\"devices\" value=\"Manage Devices\">
|
|
<input type=\"submit\" name=\"tasks\" value=\"Manage Tasks\">
|
|
<input type=\"submit\" name=\"schedule\" value=\"Maintenance Schedule\">
|
|
</center><br><hr>
|
|
</form>
|
|
";
|
|
}
|
|
// display any errors from database operations
|
|
if (count($errorstack)) {
|
|
foreach($errorstack as $errorline) {
|
|
echo "$errorline<br>";
|
|
}
|
|
}
|
|
|
|
if ($action) {
|
|
// pull current values from database
|
|
$currentvalues=mysqli_fetch_assoc(mysqli_query($db,"select * from events where eventid=$id"));
|
|
extract($currentvalues);
|
|
$taskname=dblookup($db,"tasks","taskid","taskname",$task);
|
|
$devicename=dblookup($db,"devices","deviceid","devicename",$device);
|
|
// display form to complete or defer
|
|
echo "
|
|
<table border=\"0\" cellpadding=\"20\"><tr><td><b> Task : </b> $taskname </td><td><b> Device : </b> $devicename </td></tr></table>
|
|
<hr><br>
|
|
<table border=\"0\" cellpadding=\"10\">
|
|
<tr><td>
|
|
<b>Complete Scheduled Maintenance</b><br><br>
|
|
<form method=\"post\" action=\"schedmaint.php?action=1\">
|
|
<table border=\"0\">
|
|
<tr><td>Date Completed: <input type=\"text\" name=\"completedate\" id=\"completedatepicker\" size=\"10\" maxlength=\"10\" value=\"$today\" title=\"Format: YYYY-MM-DD\"></td></tr>
|
|
<tr><td><input type=\"checkbox\" name=\"addlognote\" value=\"1\" checked>Add logbook note</td></tr>
|
|
</table><br>
|
|
<input type=\"hidden\" name=\"id\" value=\"$id\">
|
|
<input type=\"submit\" name=\"complete\" value=\"Complete\">
|
|
</td></tr></table>
|
|
<br><hr><br>
|
|
<table border=\"0\" cellpadding=\"10\">
|
|
<tr><td>
|
|
<b>Defer Scheduled Maintenance</b><br><br>
|
|
<form method=\"post\" action=\"schedmaint.php?action=1\">
|
|
<table border=\"0\">
|
|
<tr><td>Defer Until: <input type=\"text\" name=\"deferuntil\" id=\"deferdatepicker\" size=\"10\" maxlength=\"10\" value=\"$tomorrow\" title=\"Format: YYYY-MM-DD\"></tr>
|
|
</table><br>
|
|
<input type=\"hidden\" name=\"id\" value=\"$id\">
|
|
<input type=\"submit\" name=\"defer\" value=\"Defer\">
|
|
</td></tr></table>
|
|
</form>
|
|
";
|
|
} else if ($schedule) {
|
|
// manage maintenance schedule
|
|
if ($edit) {
|
|
// set form options for editing
|
|
$sectiontitle="<b>Modify Event</b><br><br>";
|
|
$formtag="<form method=\"post\" action=\"schedmaint.php?schedule=1&edit=1\">";
|
|
$buttontags="
|
|
<input type=\"hidden\" name=\"id\" value=\"$id\">
|
|
<input type=\"submit\" name=\"update\" value=\"Update Event\">
|
|
<input type=\"submit\" name=\"delete\" value=\"Delete Event\">
|
|
<input type=\"submit\" name=\"reset\" value=\"Reset\"><br>
|
|
";
|
|
// pull current values from database
|
|
$currentvalues=mysqli_fetch_assoc(mysqli_query($db,"select * from events where eventid=$id"));
|
|
extract($currentvalues);
|
|
if ($active_flag) {
|
|
$activetag="<input type=\"checkbox\" name=\"active_flag\" value=\"1\" checked>";
|
|
} else {
|
|
$activetag="<input type=\"checkbox\" name=\"active_flag\" value=\"1\">";
|
|
}
|
|
if ($deferred_flag) {
|
|
$deferredtag="<input type=\"checkbox\" name=\"deferred_flag\" value=\"1\" checked>";
|
|
} else {
|
|
$deferredtag="<input type=\"checkbox\" name=\"deferred_flag\" value=\"1\">";
|
|
}
|
|
if ($start_date=="0000-00-00") $start_date=$today;
|
|
if ($last_date=="0000-00-00") $last_date="";
|
|
if ($deferred_date=="0000-00-00") $deferred_date=$tomorrow;
|
|
$deferuntiltag="<input type=\"text\" name=\"deferred_date\" id=\"deferdatepicker\" size=\"10\" maxlength=\"10\" value=\"$deferred_date\" title=\"Format: YYYY-MM-DD\">";
|
|
$startdatetag="<input type=\"text\" name=\"start_date\" id=\"startdatepicker\" size=\"10\" maxlength=\"10\" value=\"$start_date\" title=\"Format: YYYY-MM-DD\">";
|
|
$lastdatetag="<input type=\"text\" name=\"last_date\" id=\"completedatepicker\" size=\"10\" maxlength=\"10\" value=\"$last_date\" title=\"Format: YYYY-MM-DD\">";
|
|
} else {
|
|
// set form options for add
|
|
$sectiontitle="<b>Add Scheduled Maintenance</b><br><br>";
|
|
$formtag="<form method=\"post\" action=\"schedmaint.php?schedule=1\">";
|
|
$buttontags="
|
|
<input type=\"submit\" name=\"add\" value=\"Schedule this task\">
|
|
";
|
|
// set default values
|
|
$deferredtag="<input type=\"checkbox\" name=\"deferred_flag\" value=\"1\">";
|
|
$deferuntiltag="<input type=\"text\" name=\"deferred_date\" id=\"deferdatepicker\" size=\"10\" maxlength=\"10\" title=\"Format: YYYY-MM-DD\">";
|
|
$activetag="<input type=\"checkbox\" name=\"active_flag\" value=\"1\" checked>";
|
|
$startdatetag="<input type=\"text\" name=\"start_date\" id=\"startdatepicker\" size=\"10\" maxlength=\"10\" value=\"$today\" title=\"Format: YYYY-MM-DD\">";
|
|
$lastdatetag="<input type=\"text\" name=\"last_date\" id=\"completedatepicker\" size=\"10\" maxlength=\"10\" title=\"Format: YYYY-MM-DD\">";
|
|
}
|
|
// display form
|
|
echo "
|
|
<table border=\"0\"><tr>
|
|
<td><center>$sectiontitle</center>
|
|
$formtag
|
|
<table border=\"0\" cellpadding=\"10\">
|
|
<tr>
|
|
<td>Task: <select name=\"task\">
|
|
<option value=\"0\">Select a Task</option>
|
|
";
|
|
$taskrow=mysqli_query($db,"select * from tasks");
|
|
while ($taskitem=mysqli_fetch_assoc($taskrow)) {
|
|
if ($taskitem["active_flag"] == 1) {
|
|
if ($task==$taskitem["taskid"]) {
|
|
printf("<option value=\"%s\" title=\"%s\" selected>%s</option>",$taskitem["taskid"],$taskitem["taskdesc"],$taskitem["taskname"]);
|
|
} else {
|
|
printf("<option value=\"%s\" title=\"%s\">%s</option>",$taskitem["taskid"],$taskitem["taskdesc"],$taskitem["taskname"]);
|
|
}
|
|
}
|
|
}
|
|
echo "
|
|
</select></td>
|
|
<td>Device: <select name=\"device\">
|
|
<option value=\"0\">Select a Device</option>
|
|
";
|
|
$devicerow=mysqli_query($db,"select * from devices");
|
|
while ($deviceitem=mysqli_fetch_assoc($devicerow)) {
|
|
if ($deviceitem["active_flag"] == 1) {
|
|
if ($device==$deviceitem["deviceid"]) {
|
|
printf("<option value=\"%s\" title=\"%s\" selected>%s</option>",$deviceitem["deviceid"],$deviceitem["devicedesc"],$deviceitem["devicename"]);
|
|
} else {
|
|
printf("<option value=\"%s\" title=\"%s\">%s</option>",$deviceitem["deviceid"],$deviceitem["devicedesc"],$deviceitem["devicename"]);
|
|
}
|
|
}
|
|
}
|
|
echo "
|
|
</select></td>
|
|
</tr>
|
|
<tr>
|
|
<td>Start Date: $startdatetag </td><td>Last Completed Date: $lastdatetag </td>
|
|
</tr>
|
|
<tr>
|
|
<td>Defer this event: $deferredtag </td><td>Defer Until: $deferuntiltag </td>
|
|
</tr>
|
|
<tr>
|
|
<td>Active: $activetag </td>
|
|
</tr>
|
|
</table>
|
|
$buttontags
|
|
</form></td>
|
|
</tr>
|
|
</table>
|
|
<br><hr>
|
|
";
|
|
// show table of current schedule
|
|
$existingdata=mysqli_query($db,"select * from events");
|
|
echo "
|
|
<b>Existing Events</b> <font size=\"-1\">Click on the Event ID to edit.</font><br><br>
|
|
<table border=\"1\">
|
|
<tr><th>Event ID</th><th>Task</th><th>Device</th><th>Start Date</th><th>Last<br>Completed</th><th>Deferred</th><th>Deferred<br>Until<th>Active</th></tr>
|
|
";
|
|
while ($tablerow=mysqli_fetch_assoc($existingdata)) {
|
|
extract($tablerow);
|
|
if ($start_date=="0000-00-00") $start_date=$today;
|
|
if ($last_date=="0000-00-00") $last_date="";
|
|
if ($deferred_date=="0000-00-00") $deferred_date="";
|
|
if ($active_flag) {
|
|
$statdef="<img src=\"icons/tick.png\" title=\"active\" alt=\"active\">";
|
|
} else {
|
|
$statdef="<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
|
}
|
|
if ($deferred_flag) {
|
|
$deferredflag="<img src=\"icons/tick.png\" title=\"deferred\" alt=\"deferred\">";
|
|
} else {
|
|
$deferredflag="<img src=\"icons/cross.png\" title=\"not deferred\" alt=\"not deferred\">";
|
|
}
|
|
$taskdata=mysqli_fetch_assoc(mysqli_query($db,"select * from tasks where taskid=\"$task\""));
|
|
extract($taskdata,EXTR_PREFIX_ALL,"taskdata");
|
|
$devicedata=mysqli_fetch_assoc(mysqli_query($db,"select * from devices where deviceid=\"$device\""));
|
|
extract($devicedata,EXTR_PREFIX_ALL,"devicedata");
|
|
if ($taskdata_period=="once") {
|
|
$tasktitle="One-time event";
|
|
} else {
|
|
$tasktitle="Repeat every $taskdata_frequency $taskdata_period";
|
|
}
|
|
printf("
|
|
<tr>
|
|
<td><a href=\"schedmaint.php?schedule=1&edit=1&id=%s\">%s</a></td>
|
|
<td title=\"%s\">%s</td>
|
|
<td>%s</td>
|
|
<td>%s</td>
|
|
<td>%s</td>
|
|
<td align=\"center\">%s</td>
|
|
<td>%s</td>
|
|
<td align=\"center\">%s</td>
|
|
</tr>",
|
|
$eventid,$eventid,
|
|
$tasktitle,$taskdata_taskname,
|
|
$devicedata_devicename,
|
|
$start_date,
|
|
$last_date,
|
|
$deferredflag,
|
|
$deferred_date,
|
|
$statdef);
|
|
}
|
|
echo "</table>";
|
|
} else if ($tasks) {
|
|
// manage tasks
|
|
if ($edit) {
|
|
// set form options for editing
|
|
$sectiontitle="<b>Modify Task</b><br><br>";
|
|
$formtag="<form method=\"post\" action=\"schedmaint.php?tasks=1&edit=1\">";
|
|
$buttontags="
|
|
<input type=\"hidden\" name=\"id\" value=\"$id\">
|
|
<input type=\"submit\" name=\"update\" value=\"Update Task\">
|
|
<input type=\"submit\" name=\"delete\" value=\"Delete Task\">
|
|
<input type=\"submit\" name=\"reset\" value=\"Reset\"><br>
|
|
";
|
|
// pull current values from database
|
|
$currentvalues=mysqli_fetch_assoc(mysqli_query($db,"select * from tasks where taskid=$id"));
|
|
extract($currentvalues);
|
|
$perioddef=$period;
|
|
if ($active_flag) {
|
|
$activetag="<input type=\"checkbox\" name=\"active_flag\" value=\"1\" checked>";
|
|
} else {
|
|
$activetag="<input type=\"checkbox\" name=\"active_flag\" value=\"1\">";
|
|
}
|
|
if ($weekdays_only) {
|
|
$wdotag="<input type=\"checkbox\" name=\"weekdays_only\" value=\"1\" checked>";
|
|
} else {
|
|
$wdotag="<input type=\"checkbox\" name=\"weekdays_only\" value=\"1\">";
|
|
}
|
|
if ($nextdue_relative) {
|
|
$nextduetag="<input type=\"radio\" name=\"nextdue_relative\" value=\"0\">Absolute <input type=\"radio\" name=\"nextdue_relative\" value=\"1\" checked>Relative";
|
|
} else {
|
|
$nextduetag="<input type=\"radio\" name=\"nextdue_relative\" value=\"0\" checked>Absolute <input type=\"radio\" name=\"nextdue_relative\" value=\"1\">Relative";
|
|
}
|
|
} else {
|
|
// set form options for add
|
|
$sectiontitle="<b>Add New Task</b><br><br>";
|
|
$formtag="<form method=\"post\" action=\"schedmaint.php?tasks=1\">";
|
|
$perioddef="once";
|
|
$frequency=1;
|
|
$buttontags="
|
|
<input type=\"submit\" name=\"add\" value=\"Add Task\">
|
|
";
|
|
// set default values
|
|
$wdotag="<input type=\"checkbox\" name=\"weekdays_only\" value=\"1\" checked>";
|
|
$nextduetag="<input type=\"radio\" name=\"nextdue_relative\" value=\"0\" checked>Absolute <input type=\"radio\" name=\"nextdue_relative\" value=\"1\">Relative";
|
|
$activetag="<input type=\"checkbox\" name=\"active_flag\" value=\"1\" checked>";
|
|
}
|
|
// display form
|
|
echo "
|
|
<table border=\"0\">
|
|
<tr><td>
|
|
<center>$sectiontitle</center>
|
|
$formtag
|
|
<table border=\"0\">
|
|
<tr><td>
|
|
Task Name: <input type=\"text\" name=\"taskname\" size=\"40\" value=\"$taskname\"><br><br>
|
|
Task Description:<br><textarea rows=\"4\" cols=\"60\" name=\"taskdesc\" wrap=\"soft\">$taskdesc</textarea><br><br>
|
|
<hr>
|
|
<center>Schedule</center><br>
|
|
Repeat every: <input type=\"text\" name=\"frequency\" size=\"3\" value=\"$frequency\">
|
|
<select name=\"period\">
|
|
";
|
|
$periodopts=array("once","days","weeks","months","years");
|
|
foreach ($periodopts as $periodchoice) {
|
|
if ($periodchoice==$perioddef) {
|
|
echo "<option selected>$periodchoice</option>";
|
|
} else {
|
|
echo "<option>$periodchoice</option>";
|
|
}
|
|
}
|
|
echo "
|
|
</select>
|
|
Weekdays Only: {$wdotag}<br><br>
|
|
Due Date Calculation: <img src=\"icons/question.png\" title=\"Absolute: Next due date is calculated based on the last due date. Relative: Next due date is based on the last completed date.\"> $nextduetag<br><br><hr>
|
|
Reference Documentation: <input type=\"text\" name=\"refdoc_name\" size=\"40\" value=\"$refdoc_name\"><br><br>
|
|
Reference Documentation URL:<br><textarea rows=\"2\" cols=\"60\" name=\"refdoc_url\" wrap=\"soft\">$refdoc_url</textarea><br><br>
|
|
Active: $activetag<br><br>
|
|
</td></tr>
|
|
</table>
|
|
$buttontags
|
|
</form>
|
|
</td></tr></table>
|
|
<br><hr>
|
|
";
|
|
// show table of current tasks
|
|
$existingdata=mysqli_query($db,"select * from tasks");
|
|
echo "
|
|
<b>Existing Tasks</b> <font size=\"-1\">Click on the Task Name to edit.</font><br><br>
|
|
<table border=\"1\">
|
|
<tr><th>Task Name</th><th>Task Description</th><th>Repeat Every</th><th>Due Date<br>Calculation</th><th>Weekdays<br>Only</th><th>Reference</th><th>Active</th></tr>
|
|
";
|
|
while ($tablerow=mysqli_fetch_assoc($existingdata)) {
|
|
extract($tablerow);
|
|
if ($active_flag) {
|
|
$statdef="<img src=\"icons/tick.png\" title=\"active\" alt=\"active\">";
|
|
} else {
|
|
$statdef="<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
|
}
|
|
if ($period=="once") {
|
|
$rptstrg="one time only";
|
|
} else {
|
|
$rptstrg="$frequency $period";
|
|
}
|
|
|
|
if ($nextdue_relative) {
|
|
$duecalc="Relative";
|
|
} else {
|
|
$duecalc="Absolute";
|
|
}
|
|
if ($refdoc_name) {
|
|
$refstrg="$refdoc_name";
|
|
if ($refdoc_url) {
|
|
$refstrg="<a href=\"$refdoc_url\" target=\"_blank\">$refdoc_name</a>";
|
|
}
|
|
} else {
|
|
$refstrg="";
|
|
}
|
|
if ($weekdays_only) {
|
|
$wdoflag="<img src=\"icons/tick.png\" title=\"active\" alt=\"active\">";
|
|
} else {
|
|
$wdoflag="<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
|
}
|
|
printf("
|
|
<tr>
|
|
<td><a href=\"schedmaint.php?tasks=1&edit=1&id=%s\">%s</a></td>
|
|
<td>%s</td>
|
|
<td>%s</td>
|
|
<td align=\"center\">%s</td>
|
|
<td align=\"center\">%s</td>
|
|
<td>%s</td>
|
|
<td align=\"center\">%s</td>
|
|
</tr>",
|
|
$taskid,$taskname,
|
|
$taskdesc,
|
|
$rptstrg,
|
|
$duecalc,
|
|
$wdoflag,
|
|
$refstrg,
|
|
$statdef);
|
|
}
|
|
echo "</table>";
|
|
|
|
} else if ($devices) {
|
|
// manage devices
|
|
if ($edit) {
|
|
// set form options for editing
|
|
$sectiontitle="<b>Modify Device</b><br><br>";
|
|
$formtag="<form method=\"post\" action=\"schedmaint.php?devices=1&edit=1\">";
|
|
$buttontags="
|
|
<input type=\"hidden\" name=\"id\" value=\"$id\">
|
|
<input type=\"submit\" name=\"update\" value=\"Update Device\">
|
|
<input type=\"submit\" name=\"delete\" value=\"Delete Device\">
|
|
<input type=\"submit\" name=\"reset\" value=\"Reset\"><br>
|
|
";
|
|
// pull current values from database
|
|
$currentvalues=mysqli_fetch_assoc(mysqli_query($db,"select * from devices where deviceid=$id"));
|
|
extract($currentvalues);
|
|
if ($group_flag) {
|
|
$showgrouptable=true;
|
|
$grouptag="<input type=\"checkbox\" name=\"group_flag\" value=\"1\" checked>";
|
|
} else {
|
|
$showgrouptable=false;
|
|
$grouptag="<input type=\"checkbox\" name=\"group_flag\" value=\"1\">";
|
|
}
|
|
if ($active_flag) {
|
|
$activetag="<input type=\"checkbox\" name=\"active_flag\" value=\"1\" checked>";
|
|
} else {
|
|
$activetag="<input type=\"checkbox\" name=\"active_flag\" value=\"1\">";
|
|
}
|
|
} else {
|
|
// set form options for add
|
|
$sectiontitle="<b>Add New Device</b><br><br>";
|
|
$formtag="<form method=\"post\" action=\"schedmaint.php?devices=1\">";
|
|
$showgrouptable=false;
|
|
$buttontags="
|
|
<input type=\"submit\" name=\"add\" value=\"Add Device\">
|
|
";
|
|
// set default values
|
|
$activetag="<input type=\"checkbox\" name=\"active_flag\" value=\"1\" checked>";
|
|
$grouptag="<input type=\"checkbox\" name=\"group_flag\" value=\"1\">";
|
|
}
|
|
// display form
|
|
echo "
|
|
$sectiontitle
|
|
$formtag
|
|
<table border=\"0\">
|
|
<tr><td>
|
|
Device Name: <input type=\"text\" name=\"devicename\" size=\"40\" value=\"$devicename\"><br><br>
|
|
Device Description: <textarea rows=\"2\" cols=\"60\" name=\"devicedesc\" wrap=\"soft\">$devicedesc</textarea><br><br>
|
|
<font title=\"Device is a container that represents a group of other devices.
|
|
First, check this box before adding or updating this device, then go back and edit it to select the devices it contains.\">
|
|
Device represents a group of devices:</font> $grouptag<br><br>
|
|
";
|
|
if ($showgrouptable) {
|
|
$existingdevs=mysqli_query($db,"select * from devices where deviceid!=$id and active_flag=\"1\"");
|
|
echo "
|
|
<b>Existing members of this group</b><br><br>
|
|
<table border=\"1\">
|
|
<tr><th>Device Name</th><th>Device Description</th><th>Member</th></tr>
|
|
";
|
|
while ($grouprow=mysqli_fetch_assoc($existingdevs)) {
|
|
extract($grouprow,EXTR_PREFIX_ALL,"gtbl");
|
|
if (mysqli_num_rows(mysqli_query($db,"select groupid from devicegroups where memberdevice=$gtbl_deviceid and groupdevice=$id"))) {
|
|
$memberdef="<input type=\"checkbox\" name=\"members[]\" value=\"$gtbl_deviceid\" checked>";
|
|
} else {
|
|
$memberdef="<input type=\"checkbox\" name=\"members[]\" value=\"$gtbl_deviceid\">";
|
|
}
|
|
printf("
|
|
<tr>
|
|
<td>%s</td>
|
|
<td>%s</td>
|
|
<td align=\"center\">%s</td>
|
|
</tr>",
|
|
$gtbl_devicename,
|
|
$gtbl_devicedesc,
|
|
$memberdef);
|
|
}
|
|
echo "</table><br>";
|
|
}
|
|
echo "
|
|
Active: $activetag<br><br>
|
|
</td></tr>
|
|
</table>
|
|
$buttontags
|
|
</form>
|
|
<br><hr>
|
|
";
|
|
// show table of current devices
|
|
$existingdata=mysqli_query($db,"select * from devices");
|
|
echo "
|
|
<b>Existing Devices</b> <font size=\"-1\">Click on the Device ID to edit.</font><br><br>
|
|
<table border=\"1\">
|
|
<tr><th>Device ID</th><th>Device Name</th><th>Device Description</th><th>Group</th><th>Active</th></tr>
|
|
";
|
|
while ($tablerow=mysqli_fetch_assoc($existingdata)) {
|
|
extract($tablerow);
|
|
if ($group_flag) {
|
|
$groupdef="<img src=\"icons/tick.png\" title=\"This is a group\" alt=\"This is a group\">";
|
|
} else {
|
|
$groupdef="<img src=\"icons/cross.png\" title=\"This is a single device\" alt=\"This is a single device\">";
|
|
}
|
|
if ($active_flag) {
|
|
$statdef="<img src=\"icons/tick.png\" title=\"active\" alt=\"active\">";
|
|
} else {
|
|
$statdef="<img src=\"icons/cross.png\" title=\"inactive\" alt=\"inactive\">";
|
|
}
|
|
printf("
|
|
<tr>
|
|
<td><a href=\"schedmaint.php?devices=1&edit=1&id=%s\">%s</a></td>
|
|
<td>%s</td>
|
|
<td>%s</td>
|
|
<td align=\"center\">%s</td>
|
|
<td align=\"center\">%s</td>
|
|
</tr>",
|
|
$deviceid,$deviceid,
|
|
$devicename,
|
|
$devicedesc,
|
|
$groupdef,
|
|
$statdef);
|
|
}
|
|
echo "</table>";
|
|
} else {
|
|
$ucevents=get_upcoming_events();
|
|
|
|
// sort the upcoming events
|
|
function uc_cmp($a,$b) { return strcmp($a["duedate"], $b["duedate"]); }
|
|
uasort($ucevents,'uc_cmp');
|
|
|
|
// show upcoming events table
|
|
echo "
|
|
<font size=\"+1\"><b>Upcoming Scheduled Maintenance</b></font><br><br>
|
|
<table width=\"100%\" border=\"1\" cellpadding=\"5\">
|
|
<tr>
|
|
<th>Next Due</th><th>Device</th><th>Maintenance</th><th>Last Done</th>
|
|
</tr>
|
|
";
|
|
foreach ($ucevents as $ucline) {
|
|
extract($ucline);
|
|
printf("
|
|
<tr>
|
|
<td><a href=\"schedmaint.php?action=1&id=%s\" title=\"Click to complete or defer this scheduled maintenance event\">%s</a></td>
|
|
<td><font title=\"%s\">%s</font></td>
|
|
<td><font title=\"%s\">%s</font></td>
|
|
<td>%s</td>
|
|
</tr>",
|
|
$eventdata_eventid,$duedatestrg,
|
|
$devicedata_devicedesc,$devicedata_devicename,
|
|
$taskdata_taskdesc,$taskdata_taskname,
|
|
$lastdatestrg
|
|
);
|
|
}
|
|
echo "
|
|
</table>
|
|
<br><hr><br>
|
|
";
|
|
|
|
// build array of deferred events
|
|
$defeventsqry=mysqli_query($db,"select * from events where active_flag=\"1\" and deferred_flag=\"1\" and deferred_date > \"$today\" order by deferred_date asc");
|
|
$defevents=array();
|
|
while ($defeventrow=mysqli_fetch_assoc($defeventsqry)) {
|
|
// provide eventid,task,device,start_date,last_date,deferred_flag,deferred_date,active_flag
|
|
extract($defeventrow,EXTR_PREFIX_ALL,"def");
|
|
// provide deviceid,devicename,devicedesc,group_flag,active_flag
|
|
$devicedata=mysqli_fetch_assoc(mysqli_query($db,"select * from devices where deviceid=\"$def_device\""));
|
|
extract($devicedata,EXTR_PREFIX_ALL,"devicedata");
|
|
// provide taskid,taskname,taskdesc,frequency,period,weekdays_only,nextdue_relative,refdoc_name,refdoc_url,active_flag
|
|
$taskdata=mysqli_fetch_assoc(mysqli_query($db,"select * from tasks where taskid=\"$def_task\""));
|
|
extract($taskdata,EXTR_PREFIX_ALL,"taskdata");
|
|
if ( ! ($taskdata_period == "once" && $def_last_date > $def_start_date)) {
|
|
if ($def_last_date=="0000-00-00") {
|
|
$lastdatestrg="never";
|
|
} else {
|
|
$lastdatestrg="$def_last_date";
|
|
}
|
|
$defeventline=array(
|
|
'def_eventid'=>$def_eventid,
|
|
'def_deferred_date'=>$def_deferred_date,
|
|
'devicedata_devicedesc'=>$devicedata_devicedesc,
|
|
'devicedata_devicename'=>$devicedata_devicename,
|
|
'taskdata_taskdesc'=>$taskdata_taskdesc,
|
|
'taskdata_taskname'=>$taskdata_taskname,
|
|
'lastdatestrg'=>$lastdatestrg
|
|
);
|
|
$defevents[]=$defeventline;
|
|
}
|
|
}
|
|
|
|
// show deferred events table
|
|
echo "
|
|
<font size=\"+1\"><b>Deferred Scheduled Maintenance</b></font><br><br>
|
|
<table width=\"100%\" border=\"1\" cellpadding=\"5\">
|
|
<tr>
|
|
<th>Deferred Until</th><th>Device</th><th>Maintenance</th><th>Last Done</th>
|
|
</tr>
|
|
";
|
|
foreach ($defevents as $defline) {
|
|
extract($defline);
|
|
printf("
|
|
<tr>
|
|
<td><a href=\"schedmaint.php?action=1&id=%s\" title=\"Click to complete or defer this scheduled maintenance event\"><font color=\"#FFA500\">%s</font></a></td>
|
|
<td><font title=\"%s\">%s</font></td>
|
|
<td><font title=\"%s\">%s</font></td>
|
|
<td>%s</td>
|
|
</tr>",
|
|
$def_eventid,$def_deferred_date,
|
|
$devicedata_devicedesc,$devicedata_devicename,
|
|
$taskdata_taskdesc,$taskdata_taskname,
|
|
$lastdatestrg
|
|
);
|
|
}
|
|
echo "
|
|
</table>
|
|
<br><hr>
|
|
";
|
|
}
|
|
|
|
|
|
banner($print);
|
|
pageblock("right","end");
|
|
pagetable("end");
|
|
|
|
framework("end","","",$print);
|
|
|
|
?>
|