diff --git a/html/forms/schedule-maintenance.inc.php b/html/forms/schedule-maintenance.inc.php
index b3be48c0f..dcbcad4fc 100644
--- a/html/forms/schedule-maintenance.inc.php
+++ b/html/forms/schedule-maintenance.inc.php
@@ -12,4 +12,75 @@
* the source code distribution for details.
*/
+if(is_admin() === false) {
+ die('ERROR: You need to be admin');
+}
+$sub_type = $_POST['sub_type'];
+
+if ($sub_type == 'new-maintenance') {
+
+ // Defaults
+ $status = 'error';
+
+ $title = mres($_POST['title']);
+ $notes = mres($_POST['notes']);
+ $start = mres($_POST['start']);
+ $end = mres($_POST['end']);
+ $maps = mres($_POST['maps']);
+
+ if (empty($title)) {
+ $message = "Missing title
";
+ }
+ if (empty($start)) {
+ $message .= "Missing start date
";
+ }
+ if (empty($end)) {
+ $message .= "Missing end date
";
+ }
+ if( !is_array($_POST['maps']) ) {
+ $message .= "Not mapped to any groups or devices
";
+ }
+
+ if (empty($message)) {
+ $schedule_id = dbInsert(array('start'=>$start,'end'=>$end,'title'=>$title,'notes'=>$notes),'alert_schedule');
+ if ($schedule_id > 0) {
+ $items = array();
+ $fail = 0;
+ foreach( $_POST['maps'] as $target ) {
+ $item = dbInsert(array('schedule_id'=>$schedule_id,'target'=>$target),'alert_schedule_items');
+ if ($item > 0) {
+ array_push($items,$item);
+ } else {
+ $fail = 1;
+ }
+ }
+ if ($fail == 1) {
+ foreach ($items as $item) {
+ dbDelete('alert_schedule_items', '`item_id`=?', array($item));
+ }
+ dbDelete('alert_schedule', '`schedule_id`=?', array($schedule_id));
+ $message = 'Creating maintenance schedule failed'.$yeah;
+ } else {
+ $status = 'ok';
+ $message = 'Created maintenance schedule';
+ }
+ } else {
+ $message = "Issue creating maintenance schedule";
+ }
+ }
+
+ $response = array('status'=>$status,'message'=>$message);
+
+} elseif ($sub_type == 'parse-maintenance') {
+
+ $schedule_id = $_POST['schedule_id'];
+ $schedule = dbFetchRow("SELECT * FROM `alert_schedule` WHERE `schedule_id`=?",array($schedule_id));
+ $items = array();
+ foreach (dbFetchRows("SELECT `target` FROM `alert_schedule_items` WHERE `schedule_id`=?",array($schedule_id)) as $targets) {
+ $items[] = $targets;
+ }
+ $response = array('start'=>$schedule['start'],'end'=>$schedule['end'],'title'=>$schedule['title'],'notes'=>$schedule['notes'],'targets'=>$items);
+}
+
+echo _json_encode($response);
diff --git a/html/includes/table/alert-schedule.inc.php b/html/includes/table/alert-schedule.inc.php
index dcea1023a..5ec8ef795 100644
--- a/html/includes/table/alert-schedule.inc.php
+++ b/html/includes/table/alert-schedule.inc.php
@@ -15,14 +15,14 @@
$where = 1;
if ($_SESSION['userlevel'] >= '5') {
- $sql = " FROM `alert_schedule` AS S LEFT JOIN `devices` AS `D` ON `S`.`device_id`=`D`.`device_id` WHERE $where";
+ $sql = " FROM `alert_schedule` AS S WHERE $where";
} else {
- $sql = " FROM `alert_schedule` AS S, devices_perms AS P LEFT JOIN `devices` AS `D` WHERE $where AND `S`.`device_id` = `P`.`device_id` AND `P`.`user_id` = ?";
+ $sql = " FROM `alert_schedule` AS S WHERE $where";
$param[] = $_SESSION['user_id'];
}
if (isset($searchPhrase) && !empty($searchPhrase)) {
- $sql .= " AND (`D`.`hostname` LIKE '%$searchPhrase%' OR `S`.`start` LIKE '%$searchPhrase%' OR `S`.`end` LIKE '%$searchPhrase%')";
+ $sql .= " AND (`S`.`title` LIKE '%$searchPhrase%' OR `S`.`start` LIKE '%$searchPhrase%' OR `S`.`end` LIKE '%$searchPhrase%')";
}
$count_sql = "SELECT COUNT(`id`) $sql";
@@ -32,7 +32,7 @@ if (empty($total)) {
}
if (!isset($sort) || empty($sort)) {
- $sort = '`D`.`hostname` ASC ';
+ $sort = '`S`.`title` ASC ';
}
$sql .= " ORDER BY $sort";
@@ -46,18 +46,13 @@ if ($rowCount != -1) {
$sql .= " LIMIT $limit_low,$limit_high";
}
-$sql = "SELECT DATE_FORMAT(`S`.`start`, '%D %b %Y %T') AS `start`, DATE_FORMAT(`S`.`end`, '%D %b %Y %T') AS `end`, `D`.`hostname`, `S`.`device_id` $sql";
+$sql = "SELECT `S`.`schedule_id`, DATE_FORMAT(`S`.`start`, '%D %b %Y %T') AS `start`, DATE_FORMAT(`S`.`end`, '%D %b %Y %T') AS `end`, `S`.`title` $sql";
foreach (dbFetchRows($sql,$param) as $schedule) {
- if ($schedule['device_id'] == '-1') {
- $host_link = 'All devices';
- } else {
- $dev = device_by_id_cache($schedule['device_id']);
- $host_link = generate_device_link($dev, shorthost($dev['hostname']));
- }
- $response[] = array('hostname'=>$host_link,
+ $response[] = array('title'=>$schedule['title'],
'start'=>$schedule['start'],
- 'end'=>$schedule['end']);
+ 'end'=>$schedule['end'],
+ 'id'=>$schedule['schedule_id']);
}
$output = array('current'=>$current,'rowCount'=>$rowCount,'rows'=>$response,'total'=>$total);
diff --git a/html/pages/alert-schedule.inc.php b/html/pages/alert-schedule.inc.php
index b9c62c809..71a38085f 100644
--- a/html/pages/alert-schedule.inc.php
+++ b/html/pages/alert-schedule.inc.php
@@ -14,6 +14,7 @@
$pagetitle[] = "Alert Schedule";
$no_refresh = TRUE;
+if(is_admin() !== false) {
?>
@@ -26,33 +27,24 @@ $no_refresh = TRUE;
| Hostname | +Title | Start | End | +Actions |
|---|