From 0ff693bd0e99c3f6c367ea2c637105d09d5c46e9 Mon Sep 17 00:00:00 2001 From: Daniel Preussker Date: Sun, 27 Sep 2015 15:35:33 +0000 Subject: [PATCH] Added notifications poller,page,schema,display --- daily.php | 4 + daily.sh | 1 + html/includes/forms/notifications.inc.php | 56 +++++ html/includes/print-menubar.php | 6 + html/pages/notifications.inc.php | 238 +++++++++++++++++++ includes/caches/notifications.inc.php | 47 ++++ notifications.php | 94 ++++++++ sql-schema/com.quxlabs.notifications/001.sql | 2 + 8 files changed, 448 insertions(+) create mode 100644 html/includes/forms/notifications.inc.php create mode 100644 html/pages/notifications.inc.php create mode 100644 includes/caches/notifications.inc.php create mode 100644 notifications.php create mode 100644 sql-schema/com.quxlabs.notifications/001.sql diff --git a/daily.php b/daily.php index 8569f1c9aa..282d8671f9 100644 --- a/daily.php +++ b/daily.php @@ -103,3 +103,7 @@ if ($options['f'] === 'device_perf') { } } } + +if ($options['f'] === 'notifications') { + include_once 'notifications.php'; +} diff --git a/daily.sh b/daily.sh index ddc4f2e9f5..effb4a5023 100755 --- a/daily.sh +++ b/daily.sh @@ -16,3 +16,4 @@ php daily.php -f authlog php daily.php -f perf_times php daily.php -f callback php daily.php -f device_perf +php daily.php -f notifications diff --git a/html/includes/forms/notifications.inc.php b/html/includes/forms/notifications.inc.php new file mode 100644 index 0000000000..d787389e52 --- /dev/null +++ b/html/includes/forms/notifications.inc.php @@ -0,0 +1,56 @@ + + * This program is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program. If not, see . */ + +/** + * Notification Page + * @author Daniel Preussker + * @copyright 2015 Daniel Preussker, QuxLabs UG + * @license GPL + * @package LibreNMS + * @subpackage Notifications + */ + +$status = 'error'; +$message = 'unknown error'; +if (isset($_REQUEST['notification_id']) && isset($_REQUEST['action'])) { + if ($_REQUEST['action'] == 'read' && dbInsert(array('notifications_id'=>$_REQUEST['notification_id'],'user_id'=>$_SESSION['user_id'],'key'=>'read','value'=>1),'notifications_attribs')) { + $status = 'ok'; + $message = 'Set as Read'; + } + elseif ($_SESSION['userlevel'] == 10 && $_REQUEST['action'] == 'stick' && dbInsert(array('notifications_id'=>$_REQUEST['notification_id'],'user_id'=>$_SESSION['user_id'],'key'=>'sticky','value'=>1),'notifications_attribs')) { + $status = 'ok'; + $message = 'Set as Sticky'; + } + elseif ($_SESSION['userlevel'] == 10 && $_REQUEST['action'] == 'unstick' && dbUpdate(array('key'=>'sticky','value'=>0),'notifications_attribs','notifications_id = ? && user_id = ?',array($_REQUEST['notification_id'],$_SESSION['user_id']))) { + $status = 'ok'; + $message = 'Removed Sticky'; + } +} +elseif ($_REQUEST['action'] == 'create' && $_SESSION['userlevel'] == 10 && (isset($_REQUEST['title']) && isset($_REQUEST['body']))) { + if (dbInsert(array('title'=>$_REQUEST['title'],'body'=>$_REQUEST['body'],'checksum'=>hash('sha512',$_SESSION['user_id'].'.LOCAL.'.$_REQUEST['title']),'source'=>$_SESSION['user_id']),'notifications')) { + $status = 'ok'; + $message = 'Created'; + } +} +else { + $status = 'error'; + $message = 'ERROR: Missing Params'; +} + +die(json_encode(array( + 'status' => $status, + 'message' => $message, +))); + diff --git a/html/includes/print-menubar.php b/html/includes/print-menubar.php index 121d8a5db3..05eabc91c3 100644 --- a/html/includes/print-menubar.php +++ b/html/includes/print-menubar.php @@ -488,6 +488,12 @@ if(is_file("includes/print-menubar-custom.inc.php")) {