Add functionality to services in backend.
- Add functionallity to categorize a one or more services under one service group. Partial fix for #7 and #90. (Frontend code to be done) - Add description field to service to be displayed as a help text on front page. Partial fix for #51 (Frontend code to be done)
This commit is contained in:
parent
48b9cbbc82
commit
93d1491aac
|
@ -36,7 +36,7 @@ else{
|
||||||
define("PHP_MAILER_USER", $db->getSetting($mysqli, "php_mailer_user"));
|
define("PHP_MAILER_USER", $db->getSetting($mysqli, "php_mailer_user"));
|
||||||
define("PHP_MAILER_PASS", $db->getSetting($mysqli, "php_mailer_pass"));
|
define("PHP_MAILER_PASS", $db->getSetting($mysqli, "php_mailer_pass"));
|
||||||
define("CRON_SERVER_IP", $db->getSetting($mysqli, "cron_server_ip"));
|
define("CRON_SERVER_IP", $db->getSetting($mysqli, "cron_server_ip"));
|
||||||
|
|
||||||
// Process the subscriber notification queue
|
// Process the subscriber notification queue
|
||||||
// If CRON_SERVER_IP is not set, call notification once incident has been saved
|
// If CRON_SERVER_IP is not set, call notification once incident has been saved
|
||||||
if ( empty(CRON_SERVER_IP) )
|
if ( empty(CRON_SERVER_IP) )
|
||||||
|
@ -110,6 +110,16 @@ else{
|
||||||
require_once("new-user.php");
|
require_once("new-user.php");
|
||||||
break;
|
break;
|
||||||
|
|
||||||
|
case 'new-service':
|
||||||
|
case 'edit-service':
|
||||||
|
require_once('service.php');
|
||||||
|
break;
|
||||||
|
|
||||||
|
case 'new-service-group':
|
||||||
|
case 'edit-service-group':
|
||||||
|
require_once('service-group.php');
|
||||||
|
break;
|
||||||
|
|
||||||
case 'options':
|
case 'options':
|
||||||
require_once("options.php");
|
require_once("options.php");
|
||||||
break;
|
break;
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
<?php
|
||||||
|
if (isset($_GET['new']))
|
||||||
|
{
|
||||||
|
ServiceGroup::add();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_GET['edit']))
|
||||||
|
{
|
||||||
|
ServiceGroup::edit();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_GET['delete']))
|
||||||
|
{
|
||||||
|
ServiceGroup::delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
$boolEdit = false;
|
||||||
|
$group_value = isset($_POST['group']) ? $_POST['group'] : '';
|
||||||
|
$description_value = isset($_POST['description']) ? $_POST['description'] : '';
|
||||||
|
$visibility_id_value = isset($_POST['visibility_id']) ? $_POST['visibility_id'] : '';
|
||||||
|
|
||||||
|
if ( isset($_GET['id']) && !isset($_POST['id']) ) {
|
||||||
|
$group_id = (int) $_GET['id'];
|
||||||
|
$boolEdit = true;
|
||||||
|
$stmt = $mysqli->prepare("SELECT * FROM services_groups WHERE id LIKE ?");
|
||||||
|
$stmt->bind_param("i", $group_id);
|
||||||
|
$stmt->execute();
|
||||||
|
$query = $stmt->get_result();
|
||||||
|
$data = $query->fetch_assoc();
|
||||||
|
$group_value = $data['name'];
|
||||||
|
$description_value = $data['description'];
|
||||||
|
$visibility_id_value = $data['visibility'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!$boolEdit) {
|
||||||
|
|
||||||
|
Template::render_header(_("New service group"), true); ?>
|
||||||
|
<div class="text-center">
|
||||||
|
<h2><?php echo _("Add new service group");?></h2>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
$form_url = WEB_URL .'/admin/?do=new-service-group&new=group';
|
||||||
|
|
||||||
|
} else {
|
||||||
|
Template::render_header(_("Edit service group"), true); ?>
|
||||||
|
<div class="text-center">
|
||||||
|
<h2><?php echo _("Edit service group");?></h2>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
$form_url = WEB_URL .'/admin/?do=edit-service-group&edit&id='.$group_id;
|
||||||
|
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
|
||||||
|
<form action="<?php echo $form_url;?>" method="POST" class="form-horizontal">
|
||||||
|
<?php if (isset($message))
|
||||||
|
{?>
|
||||||
|
<p class="alert alert-danger"><?php echo $message?></p>
|
||||||
|
<?php
|
||||||
|
} ?>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-6"><label for="group"><?php echo _("Service Group Name");?>: </label><input type="text" maxlength="50" name="group" value="<?php echo ((isset($_POST['group']))?htmlspecialchars($_POST['group'],ENT_QUOTES):$group_value);?>" id="group" placeholder="<?php echo _("service group name");?>" class="form-control" required></div>
|
||||||
|
<div class="col-sm-6"><label for="description"><?php echo _("Description");?>: </label><input type="text" maxlength="100" name="description" value="<?php echo ((isset($_POST['description']))?htmlspecialchars($description_value,ENT_QUOTES):$description_value);?>" id="description" placeholder="<?php echo _("Description");?>" class="form-control"></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<label for="visibility_id"><?php echo _("Visibility");?>: </label>
|
||||||
|
<select name="visibility_id" id="visibility_id" class="form-control">
|
||||||
|
<?php
|
||||||
|
if (!empty($visibility_id_value))
|
||||||
|
{
|
||||||
|
$visibility_id = $visibility_id_value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$visibility_id = null;
|
||||||
|
}
|
||||||
|
//$visibilitys = Service::get_groups();
|
||||||
|
foreach ($visibility as $key => $value) {
|
||||||
|
if ($visibility_id == $key)
|
||||||
|
{
|
||||||
|
echo '<option value="'.$key.'" selected>'.$value.'</option>';
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
echo '<option value="'.$key.'">'.$value.'</option>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
if ( $boolEdit ) {
|
||||||
|
echo '<input type="hidden" id="id" name="id" value="'.$group_id.'">';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<button type="submit" class="btn btn-primary pull-right"><?php echo _("Submit");?></button>
|
||||||
|
</form>
|
|
@ -0,0 +1,97 @@
|
||||||
|
<?php
|
||||||
|
if (isset($_GET['new']))
|
||||||
|
{
|
||||||
|
Service::add();
|
||||||
|
}
|
||||||
|
|
||||||
|
if (isset($_GET['edit']))
|
||||||
|
{
|
||||||
|
Service::edit();
|
||||||
|
}
|
||||||
|
|
||||||
|
/*if (isset($_GET['delete']))
|
||||||
|
{
|
||||||
|
Service::delete();
|
||||||
|
}*/
|
||||||
|
|
||||||
|
$boolEdit = false;
|
||||||
|
$service_value = isset($_POST['service']) ? $_POST['service'] : '';
|
||||||
|
$description_value = isset($_POST['description']) ? $_POST['description'] : '';
|
||||||
|
$group_id_value = isset($_POST['group_id']) ? $_POST['group_id'] : '';
|
||||||
|
|
||||||
|
if ( isset($_GET['id']) && !isset($_POST['id']) ) {
|
||||||
|
$service_id = (int) $_GET['id'];
|
||||||
|
$boolEdit = true;
|
||||||
|
$stmt = $mysqli->prepare("SELECT * FROM services WHERE id LIKE ?");
|
||||||
|
$stmt->bind_param("i", $service_id);
|
||||||
|
$stmt->execute();
|
||||||
|
$query = $stmt->get_result();
|
||||||
|
$data = $query->fetch_assoc();
|
||||||
|
//print_r($data);
|
||||||
|
$service_value = $data['name'];
|
||||||
|
$description_value = $data['description'];
|
||||||
|
$group_id_value = $data['group_id'];
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
if (!$boolEdit) {
|
||||||
|
|
||||||
|
Template::render_header(_("New service"), true); ?>
|
||||||
|
<div class="text-center">
|
||||||
|
<h2><?php echo _("Add new service");?></h2>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
$form_url = WEB_URL . '/admin/?do=new-service&new=service';
|
||||||
|
} else {
|
||||||
|
Template::render_header(_("New service"), true); ?>
|
||||||
|
<div class="text-center">
|
||||||
|
<h2><?php echo _("Add new service");?></h2>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
$form_url = WEB_URL . '/admin/?do=edit-service&edit&id='.$service_id;
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<form action="<?php echo $form_url;?>" method="POST" class="form-horizontal">
|
||||||
|
<?php if (isset($message))
|
||||||
|
{?>
|
||||||
|
<p class="alert alert-danger"><?php echo $message?></p>
|
||||||
|
<?php
|
||||||
|
} ?>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-6"><label for="service"><?php echo _("Service");?>: </label><input type="text" maxlength="50" name="service" value="<?php echo ((isset($_POST['service']))?htmlspecialchars($_POST['service'],ENT_QUOTES):$service_value);?>" id="service" placeholder="<?php echo _("service");?>" class="form-control" required></div>
|
||||||
|
<div class="col-sm-6"><label for="description"><?php echo _("Description");?>: </label><input type="text" maxlength="200" name="description" value="<?php echo ((isset($_POST['description']))?htmlspecialchars($_POST['description'],ENT_QUOTES):$description_value);?>" id="description" placeholder="<?php echo _("Description");?>" class="form-control"></div>
|
||||||
|
</div>
|
||||||
|
<div class="form-group">
|
||||||
|
<div class="col-sm-6">
|
||||||
|
<label for="group_id"><?php echo _("Service Group");?>: </label>
|
||||||
|
<select name="group_id" id="group_id" class="form-control">
|
||||||
|
<?php
|
||||||
|
if (!empty($group_id_value))
|
||||||
|
{
|
||||||
|
$group_id = $group_id_value;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$group_id = null;
|
||||||
|
}
|
||||||
|
$groups = ServiceGroup::get_groups();
|
||||||
|
foreach ($groups as $key => $value) {
|
||||||
|
if ($group_id == $key)
|
||||||
|
{
|
||||||
|
echo '<option value="'.$key.'" selected>'.$value.'</option>';
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
echo '<option value="'.$key.'">'.$value.'</option>';
|
||||||
|
}
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
</select>
|
||||||
|
</div>
|
||||||
|
</div>
|
||||||
|
<?php
|
||||||
|
if ( $boolEdit ) {
|
||||||
|
echo '<input type="hidden" id="id" name="id" value="'.$service_id.'">';
|
||||||
|
}
|
||||||
|
?>
|
||||||
|
<button type="submit" class="btn btn-primary pull-right"><?php echo _("Submit");?></button>
|
||||||
|
</form>
|
|
@ -1,12 +1,12 @@
|
||||||
<?php
|
<?php
|
||||||
if (isset($_GET['new']))
|
if (isset($_GET['delete']) && isset($_GET['type']))
|
||||||
{
|
{
|
||||||
Service::add();
|
if ( $_GET['type'] == 'service') {
|
||||||
}
|
Service::delete();
|
||||||
|
}
|
||||||
if (isset($_GET['delete']))
|
elseif ( $_GET['type'] == 'groups') {
|
||||||
{
|
ServiceGroup::delete();
|
||||||
Service::delete();
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
Template::render_header(_("Settings"), true);
|
Template::render_header(_("Settings"), true);
|
||||||
|
@ -14,7 +14,7 @@ Template::render_header(_("Settings"), true);
|
||||||
<div class="text-center">
|
<div class="text-center">
|
||||||
<h2>Settings</h2>
|
<h2>Settings</h2>
|
||||||
</div>
|
</div>
|
||||||
<?php
|
<?php
|
||||||
if (isset($message)){
|
if (isset($message)){
|
||||||
?>
|
?>
|
||||||
<p class="alert alert-danger"><?php echo $message; ?></p>
|
<p class="alert alert-danger"><?php echo $message; ?></p>
|
||||||
|
@ -24,19 +24,18 @@ if (isset($message)){
|
||||||
<?php if ($user->get_rank() <= 1){?>
|
<?php if ($user->get_rank() <= 1){?>
|
||||||
<form action="?do=settings&new=service" method="post">
|
<form action="?do=settings&new=service" method="post">
|
||||||
<div class="input-group pull-right new-service">
|
<div class="input-group pull-right new-service">
|
||||||
<input class="form-control" name="service" placeholder="Name" type="text" value="<?php echo ((isset($_POST['service']))?htmlspecialchars($_POST['service']):''); ?>" maxlength="50" required>
|
<a href="<?php echo WEB_URL;?>/admin/?do=new-service" class="btn btn-success pull-right"><?php echo _("Add new service");?></a>
|
||||||
<span class="input-group-btn">
|
|
||||||
<button type="submit" class="btn btn-success pull-right"><?php echo _("Add service");?></button>
|
|
||||||
</span>
|
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
<?php }?>
|
<?php }?>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table">
|
<table class="table">
|
||||||
|
|
||||||
<thead><tr>
|
<thead><tr>
|
||||||
<th scope="col"><?php echo _("ID");?></th>
|
<!--<th scope="col"><?php echo _("ID");?></th>-->
|
||||||
<th scope="col"><?php echo _("Name");?></th>
|
<th scope="col"><?php echo _("Name");?></th>
|
||||||
|
<th scope="col"><?php echo _("Description");?></th>
|
||||||
|
<th scope="col"><?php echo _("Group");?></th>
|
||||||
<?php if ($user->get_rank()<=1)
|
<?php if ($user->get_rank()<=1)
|
||||||
{?>
|
{?>
|
||||||
<th scope="col"><?php echo _("Delete");?></th>
|
<th scope="col"><?php echo _("Delete");?></th>
|
||||||
|
@ -44,16 +43,66 @@ if (isset($message)){
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<?php
|
<?php
|
||||||
$query = $mysqli->query("SELECT * FROM services");
|
$query = $mysqli->query("SELECT services.*, services_groups.name AS group_name FROM `services` LEFT JOIN services_groups ON services.group_id = services_groups.id ORDER BY services.name ASC");
|
||||||
while($result = $query->fetch_assoc())
|
while($result = $query->fetch_assoc())
|
||||||
{
|
{
|
||||||
echo "<tr>";
|
echo "<tr>";
|
||||||
echo "<td>".$result['id']."</td>";
|
//echo "<td>".$result['id']."</td>";
|
||||||
echo "<td>".$result['name']."</td>";
|
echo '<td><a href="'.WEB_URL.'/admin?do=edit-service&id='.$result['id'].'">'.$result['name'].'</a></th>';
|
||||||
|
echo "<td>".$result['description']."</td>";
|
||||||
|
echo "<td>".$result['group_name']."</td>";
|
||||||
|
|
||||||
if ($user->get_rank()<=1)
|
if ($user->get_rank()<=1)
|
||||||
{
|
{
|
||||||
echo '<td><a href="'.WEB_URL.'/admin/?do=settings&delete='.$result['id'].'" class="pull-right delete-service"><i class="fa fa-trash"></i></a></td>';
|
echo '<td><a href="'.WEB_URL.'/admin/?do=settings&type=service&delete='.$result['id'].'" class="pull-right delete-service"><i class="fa fa-trash"></i></a></td>';
|
||||||
|
}
|
||||||
|
echo "</tr>";
|
||||||
|
}?>
|
||||||
|
</tbody>
|
||||||
|
</table>
|
||||||
|
</div>
|
||||||
|
</section>
|
||||||
|
|
||||||
|
<section>
|
||||||
|
<h3 class="pull-left"><?php echo _("Services Groups");?></h3>
|
||||||
|
<?php if ($user->get_rank() <= 1){?>
|
||||||
|
<form action="?do=settings&new=service-group" method="post">
|
||||||
|
<div class="input-group pull-right new-service">
|
||||||
|
<a href="<?php echo WEB_URL;?>/admin/?do=new-service-group" class="btn btn-success pull-right"><?php echo _("Add new service group");?></a>
|
||||||
|
</div>
|
||||||
|
</form>
|
||||||
|
<?php }?>
|
||||||
|
<div class="table-responsive">
|
||||||
|
<table class="table">
|
||||||
|
|
||||||
|
<thead><tr>
|
||||||
|
<!--<th scope="col"><?php echo _("ID");?></th>-->
|
||||||
|
<th scope="col"><?php echo _("Group Name");?></th>
|
||||||
|
<th scope="col"><?php echo _("In use by");?></th>
|
||||||
|
<th scope="col"><?php echo _("Description");?></th>
|
||||||
|
<th scope="col"><?php echo _("Visibility");?></th>
|
||||||
|
<?php if ($user->get_rank()<=1)
|
||||||
|
{?>
|
||||||
|
<th scope="col"><?php echo _("Delete");?></th>
|
||||||
|
<?php } ?>
|
||||||
|
</tr>
|
||||||
|
</thead>
|
||||||
|
<tbody>
|
||||||
|
<?php
|
||||||
|
$query = $mysqli->query("SELECT sg.* , (SELECT COUNT(*) FROM services WHERE services.group_id = sg.id) AS counter FROM services_groups AS sg ORDER BY sg.id ASC");
|
||||||
|
while($result = $query->fetch_assoc())
|
||||||
|
{
|
||||||
|
echo "<tr>";
|
||||||
|
//echo "<td>".$result['id']."</td>";
|
||||||
|
echo '<td><a href="'.WEB_URL.'/admin?do=edit-service-group&id='.$result['id'].'">'.$result['name'].'</a></th>';
|
||||||
|
echo '<td> <span class="badge badge-danger ml-2">'.$result['counter'].'</span>';
|
||||||
|
echo "<td>".$result['description']."</td>";
|
||||||
|
echo "<td>".$visibility[$result['visibility']]."</td>";
|
||||||
|
|
||||||
|
if ($user->get_rank()<=1)
|
||||||
|
{
|
||||||
|
echo '<td><a href="'.WEB_URL.'/admin/?do=settings&type=groups&delete='.$result['id'].'" class="pull-right delete-service"><i class="fa fa-trash"></i></a></td>';
|
||||||
}
|
}
|
||||||
echo "</tr>";
|
echo "</tr>";
|
||||||
}?>
|
}?>
|
||||||
|
@ -68,10 +117,10 @@ if (isset($message)){
|
||||||
<?php if ($user->get_rank() == 0){?> <a href="<?php echo WEB_URL;?>/admin/?do=new-user" class="btn btn-success pull-right"><?php echo _("Add new user");?></a><?php }?>
|
<?php if ($user->get_rank() == 0){?> <a href="<?php echo WEB_URL;?>/admin/?do=new-user" class="btn btn-success pull-right"><?php echo _("Add new user");?></a><?php }?>
|
||||||
<div class="table-responsive">
|
<div class="table-responsive">
|
||||||
<table class="table">
|
<table class="table">
|
||||||
|
|
||||||
<thead><tr><th scope="col"><?php echo _("ID");?></th><th scope="col"><?php echo _("Username");?></th><th scope="col"><?php echo _("Name");?></th><th scope="col"><?php echo _("Surname");?></th><th scope="col"><?php echo _("Email");?></th><th scope="col"><?php echo _("Role");?></th><th scope="col">Active</th></tr></thead>
|
<thead><tr><th scope="col"><?php echo _("ID");?></th><th scope="col"><?php echo _("Username");?></th><th scope="col"><?php echo _("Name");?></th><th scope="col"><?php echo _("Surname");?></th><th scope="col"><?php echo _("Email");?></th><th scope="col"><?php echo _("Role");?></th><th scope="col">Active</th></tr></thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
<?php
|
<?php
|
||||||
$query = $mysqli->query("SELECT * FROM users");
|
$query = $mysqli->query("SELECT * FROM users");
|
||||||
while($result = $query->fetch_assoc())
|
while($result = $query->fetch_assoc())
|
||||||
{
|
{
|
||||||
|
@ -89,4 +138,4 @@ if (isset($message)){
|
||||||
</tbody>
|
</tbody>
|
||||||
</table>
|
</table>
|
||||||
</div>
|
</div>
|
||||||
</section>
|
</section>
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
//DIR Because of include problems
|
//DIR Because of include problems
|
||||||
require_once(__DIR__ . "/incident.php");
|
require_once(__DIR__ . "/incident.php");
|
||||||
require_once(__DIR__ . "/service.php");
|
require_once(__DIR__ . "/service.php");
|
||||||
|
require_once(__DIR__ . "/service-group.php");
|
||||||
require_once(__DIR__ . "/user.php");
|
require_once(__DIR__ . "/user.php");
|
||||||
require_once(__DIR__ . "/token.php");
|
require_once(__DIR__ . "/token.php");
|
||||||
/**
|
/**
|
||||||
|
@ -20,7 +21,7 @@ class Constellation
|
||||||
public function render_incidents($future=false, $offset=0, $limit = 5, $admin = 0){
|
public function render_incidents($future=false, $offset=0, $limit = 5, $admin = 0){
|
||||||
if ($offset<0)
|
if ($offset<0)
|
||||||
{
|
{
|
||||||
$offset = 0;
|
$offset = 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
$limit = (isset($_GET['limit'])?$_GET['limit']:5);
|
$limit = (isset($_GET['limit'])?$_GET['limit']:5);
|
||||||
|
@ -37,7 +38,7 @@ class Constellation
|
||||||
}
|
}
|
||||||
else if (count($incidents["incidents"]) &&!$ajax)
|
else if (count($incidents["incidents"]) &&!$ajax)
|
||||||
{
|
{
|
||||||
if ($offset)
|
if ($offset)
|
||||||
{
|
{
|
||||||
echo '<noscript><div class="centered"><a href="'.WEB_URL.'/?offset='.($offset-$limit).'×tamp='.$timestamp.'" class="btn btn-default">'._("Back").'</a></div></noscript>';
|
echo '<noscript><div class="centered"><a href="'.WEB_URL.'/?offset='.($offset-$limit).'×tamp='.$timestamp.'" class="btn btn-default">'._("Back").'</a></div></noscript>';
|
||||||
}
|
}
|
||||||
|
@ -66,11 +67,11 @@ class Constellation
|
||||||
/**
|
/**
|
||||||
* Renders service status - in admin page it returns array so it can be processed further.
|
* Renders service status - in admin page it returns array so it can be processed further.
|
||||||
* @param boolean $admin
|
* @param boolean $admin
|
||||||
* @return array of services
|
* @return array of services
|
||||||
*/
|
*/
|
||||||
public function render_status($admin = false, $heading = true){
|
public function render_status($admin = false, $heading = true){
|
||||||
global $mysqli;
|
global $mysqli;
|
||||||
|
|
||||||
$query = $mysqli->query("SELECT id, name FROM services");
|
$query = $mysqli->query("SELECT id, name FROM services");
|
||||||
$array = array();
|
$array = array();
|
||||||
if ($query->num_rows){
|
if ($query->num_rows){
|
||||||
|
@ -91,7 +92,7 @@ class Constellation
|
||||||
else{
|
else{
|
||||||
$array[] = new Service($result['id'], $result['name']);
|
$array[] = new Service($result['id'], $result['name']);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if ($heading)
|
if ($heading)
|
||||||
{
|
{
|
||||||
echo Service::current_status($array);
|
echo Service::current_status($array);
|
||||||
|
@ -131,14 +132,14 @@ class Constellation
|
||||||
$limit--;
|
$limit--;
|
||||||
$more = false;
|
$more = false;
|
||||||
if ($query->num_rows>$limit){
|
if ($query->num_rows>$limit){
|
||||||
$more = true;
|
$more = true;
|
||||||
}
|
}
|
||||||
if ($query->num_rows){
|
if ($query->num_rows){
|
||||||
while(($result = $query->fetch_assoc()) && $limit-- > 0)
|
while(($result = $query->fetch_assoc()) && $limit-- > 0)
|
||||||
{
|
{
|
||||||
// Add service id and service names to an array in the Incident class
|
// Add service id and service names to an array in the Incident class
|
||||||
$stmt_service = $mysqli->prepare("SELECT services.id,services.name FROM services
|
$stmt_service = $mysqli->prepare("SELECT services.id,services.name FROM services
|
||||||
INNER JOIN services_status ON services.id = services_status.service_id
|
INNER JOIN services_status ON services.id = services_status.service_id
|
||||||
WHERE services_status.status_id = ?");
|
WHERE services_status.status_id = ?");
|
||||||
$stmt_service->bind_param("i", $result['status_id']);
|
$stmt_service->bind_param("i", $result['status_id']);
|
||||||
$stmt_service->execute();
|
$stmt_service->execute();
|
||||||
|
@ -156,17 +157,17 @@ class Constellation
|
||||||
"incidents" => $array
|
"incidents" => $array
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
function render_warning($header, $message, $show_link = false, $url = null, $link_text = null)
|
function render_warning($header, $message, $show_link = false, $url = null, $link_text = null)
|
||||||
{
|
{
|
||||||
$this->render_alert('alert-warning', $header, $message, $show_link, $url, $link_text);
|
$this->render_alert('alert-warning', $header, $message, $show_link, $url, $link_text);
|
||||||
}
|
}
|
||||||
function render_success($header, $message, $show_link = false, $url = null, $link_text = null)
|
function render_success($header, $message, $show_link = false, $url = null, $link_text = null)
|
||||||
{
|
{
|
||||||
$this->render_alert('alert-success', $header, $message, $show_link, $url, $link_text);
|
$this->render_alert('alert-success', $header, $message, $show_link, $url, $link_text);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Renders an alert on screen with an optional button to return to a given URL
|
* Renders an alert on screen with an optional button to return to a given URL
|
||||||
* @param string alert_type - Type of warning to render alert-danger, alert-warning, alert-success etc
|
* @param string alert_type - Type of warning to render alert-danger, alert-warning, alert-success etc
|
||||||
|
@ -188,8 +189,8 @@ class Constellation
|
||||||
if ( $show_link ) {
|
if ( $show_link ) {
|
||||||
echo '<div class="clearfix"><a href="'.$url.'" class="btn btn-success" role="button">'.$link_text.'</a></div>';
|
echo '<div class="clearfix"><a href="'.$url.'" class="btn btn-success" role="button">'.$link_text.'</a></div>';
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
$constellation = new Constellation();
|
$constellation = new Constellation();
|
||||||
|
|
|
@ -0,0 +1,167 @@
|
||||||
|
<?php
|
||||||
|
/**
|
||||||
|
* Class for managing services
|
||||||
|
*/
|
||||||
|
class ServiceGroup
|
||||||
|
{
|
||||||
|
private $id;
|
||||||
|
private $name;
|
||||||
|
private $description;
|
||||||
|
private $visibility_id;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Constructs servicegroup from its data.
|
||||||
|
* @param int $id service ID
|
||||||
|
* @param String $name service name
|
||||||
|
* @param String $description tooltip text
|
||||||
|
* @param int $visibility_id how to display group items
|
||||||
|
*/
|
||||||
|
function __construct($id, $name, $description, $visibility_id)
|
||||||
|
|
||||||
|
{
|
||||||
|
//TODO: Maybe get data from ID?
|
||||||
|
$this->id = $id;
|
||||||
|
$this->name = $name;
|
||||||
|
$this->description = $description;
|
||||||
|
$this->visibility_id = $visibility_id;
|
||||||
|
$this->status = $status;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns id of this servicegroup
|
||||||
|
* @return int id
|
||||||
|
*/
|
||||||
|
public function get_id()
|
||||||
|
{
|
||||||
|
return $this->id;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns name of this servicegroup
|
||||||
|
* @return String name
|
||||||
|
*/
|
||||||
|
public function get_name()
|
||||||
|
{
|
||||||
|
return $this->name;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns description of this servicegroup
|
||||||
|
* @return String description
|
||||||
|
*/
|
||||||
|
public function get_description()
|
||||||
|
{
|
||||||
|
return $this->description;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Processes submitted form and adds service unless problem is encountered,
|
||||||
|
* calling this is possible only for admin or higher rank. Also checks requirements
|
||||||
|
* for char limits.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function add()
|
||||||
|
{
|
||||||
|
global $user, $message;
|
||||||
|
if (strlen($_POST['group'])>50)
|
||||||
|
{
|
||||||
|
$message = _("Service group name is too long! Character limit is 50");
|
||||||
|
return;
|
||||||
|
}else if (strlen(trim($_POST['group']))==0){
|
||||||
|
$message = _("Please enter name!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user->get_rank()<=1)
|
||||||
|
{
|
||||||
|
global $mysqli;
|
||||||
|
$name = $_POST["group"];
|
||||||
|
$description = $_POST["description"];
|
||||||
|
$visibility_id = $_POST["visibility_id"];
|
||||||
|
$stmt = $mysqli->prepare("INSERT INTO services_groups VALUES(NULL,?,?,?)");
|
||||||
|
$stmt->bind_param("ssi", $name, $description, $visibility_id);
|
||||||
|
$stmt->execute();
|
||||||
|
$stmt->get_result();
|
||||||
|
header("Location: ".WEB_URL."/admin/?do=settings");
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
$message = _("You don't have the permission to do that!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static function edit()
|
||||||
|
{
|
||||||
|
global $user, $message;
|
||||||
|
if (strlen($_POST['group'])>50)
|
||||||
|
{
|
||||||
|
$message = _("Service group name is too long! Character limit is 50");
|
||||||
|
return;
|
||||||
|
}else if (strlen(trim($_POST['group']))==0){
|
||||||
|
$message = _("Please enter name!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user->get_rank()<=1)
|
||||||
|
{
|
||||||
|
global $mysqli;
|
||||||
|
$name = $_POST["group"];
|
||||||
|
$description = $_POST["description"];
|
||||||
|
$visibility_id = $_POST["visibility_id"];
|
||||||
|
$group_id = $_POST["id"];
|
||||||
|
$stmt = $mysqli->prepare("UPDATE services_groups SET name=?, description=?,visibility=? WHERE id LIKE ?");
|
||||||
|
$stmt->bind_param("ssii", $name, $description, $visibility_id, $group_id);
|
||||||
|
$stmt->execute();
|
||||||
|
$stmt->get_result();
|
||||||
|
header("Location: ".WEB_URL."/admin/?do=settings");
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
$message = _("You don't have the permission to do that!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
/**
|
||||||
|
* Deletes this service - first checks if user has permission to do that.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function delete()
|
||||||
|
{
|
||||||
|
global $user, $message;
|
||||||
|
if ($user->get_rank()<=1)
|
||||||
|
{
|
||||||
|
global $mysqli;
|
||||||
|
$id = $_GET['delete'];
|
||||||
|
|
||||||
|
$stmt = $mysqli->prepare("DELETE FROM services_groups WHERE id = ?");
|
||||||
|
$stmt->bind_param("i", $id);
|
||||||
|
$stmt->execute();
|
||||||
|
$query = $stmt->get_result();
|
||||||
|
|
||||||
|
$stmt = $mysqli->prepare("UPDATE services SET group_id = NULL WHERE group_id = ?");
|
||||||
|
$stmt->bind_param("i", $id);
|
||||||
|
$stmt->execute();
|
||||||
|
$query = $stmt->get_result();
|
||||||
|
|
||||||
|
header("Location: ".WEB_URL."/admin/?do=settings");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
$message = _("You don't have the permission to do that!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Get list of services groups.
|
||||||
|
* @return array $groups
|
||||||
|
*/
|
||||||
|
public function get_groups() {
|
||||||
|
global $mysqli;
|
||||||
|
$stmt = $mysqli->query("SELECT id, name FROM services_groups ORDER by name ASC");
|
||||||
|
|
||||||
|
$groups = array();
|
||||||
|
$groups[0] = '';
|
||||||
|
while ($res = $stmt->fetch_assoc()) {
|
||||||
|
$groups[$res['id']] = $res['name'];
|
||||||
|
}
|
||||||
|
return $groups;
|
||||||
|
}
|
||||||
|
}
|
|
@ -70,9 +70,11 @@ class Service implements JsonSerializable
|
||||||
if ($user->get_rank()<=1)
|
if ($user->get_rank()<=1)
|
||||||
{
|
{
|
||||||
global $mysqli;
|
global $mysqli;
|
||||||
$name = $_POST['service'];
|
$name = htmlspecialchars($_POST['service']);
|
||||||
$stmt = $mysqli->prepare("INSERT INTO services ( name ) VALUES ( ? )");
|
$description = htmlspecialchars($_POST['description']);
|
||||||
$stmt->bind_param("s", $name);
|
$group_id = $_POST['group_id'];
|
||||||
|
$stmt = $mysqli->prepare("INSERT INTO services ( name, description, group_id ) VALUES ( ?, ?, ? )");
|
||||||
|
$stmt->bind_param("ssi", $name, $description, $group_id);
|
||||||
$stmt->execute();
|
$stmt->execute();
|
||||||
$stmt->get_result();
|
$stmt->get_result();
|
||||||
header("Location: ".WEB_URL."/admin/?do=settings");
|
header("Location: ".WEB_URL."/admin/?do=settings");
|
||||||
|
@ -81,6 +83,41 @@ class Service implements JsonSerializable
|
||||||
$message = _("You don't have the permission to do that!");
|
$message = _("You don't have the permission to do that!");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/**
|
||||||
|
* Processes submitted form and adds service unless problem is encountered,
|
||||||
|
* calling this is possible only for admin or higher rank. Also checks requirements
|
||||||
|
* for char limits.
|
||||||
|
* @return void
|
||||||
|
*/
|
||||||
|
public static function edit()
|
||||||
|
{
|
||||||
|
global $user, $message;
|
||||||
|
if (strlen($_POST['service'])>50)
|
||||||
|
{
|
||||||
|
$message = _("Service name is too long! Character limit is 50");
|
||||||
|
return;
|
||||||
|
}else if (strlen(trim($_POST['service']))==0){
|
||||||
|
$message = _("Please enter name!");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ($user->get_rank()<=1)
|
||||||
|
{
|
||||||
|
global $mysqli;
|
||||||
|
$service_id = $_POST["id"];
|
||||||
|
$name = htmlspecialchars($_POST['service']);
|
||||||
|
$description = htmlspecialchars($_POST["description"]);
|
||||||
|
$group_id = $_POST["group_id"];
|
||||||
|
$stmt = $mysqli->prepare("UPDATE services SET name=?, description=?, group_id=? WHERE id = ?");
|
||||||
|
$stmt->bind_param("ssii", $name, $description, $group_id, $service_id);
|
||||||
|
$stmt->execute();
|
||||||
|
$stmt->get_result();
|
||||||
|
header("Location: ".WEB_URL."/admin/?do=settings");
|
||||||
|
}else
|
||||||
|
{
|
||||||
|
$message = _("You don't have the permission to do that!");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Deletes this service - first checks if user has permission to do that.
|
* Deletes this service - first checks if user has permission to do that.
|
||||||
|
@ -139,7 +176,7 @@ class Service implements JsonSerializable
|
||||||
{
|
{
|
||||||
$worst = $service->get_status();
|
$worst = $service->get_status();
|
||||||
}
|
}
|
||||||
$statuses[$service->get_status()]++;
|
$statuses[$service->get_status()]++;
|
||||||
}
|
}
|
||||||
|
|
||||||
echo '<div id="status-big" class="status '.$classes[$worst].'">';
|
echo '<div id="status-big" class="status '.$classes[$worst].'">';
|
||||||
|
|
12
install.sql
12
install.sql
|
@ -57,6 +57,14 @@ CREATE TABLE queue_notify (
|
||||||
PRIMARY KEY (id)
|
PRIMARY KEY (id)
|
||||||
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_czech_ci;
|
||||||
|
|
||||||
|
CREATE TABLE services_groups (
|
||||||
|
id int(11) NOT NULL AUTO_INCREMENT,
|
||||||
|
name varchar(50) NOT NULL,
|
||||||
|
description varchar(50) DEFAULT NULL,
|
||||||
|
visibility tinyint(4) NOT NULL,
|
||||||
|
PRIMARY KEY (id)
|
||||||
|
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
|
||||||
|
|
||||||
CREATE TABLE queue_task (
|
CREATE TABLE queue_task (
|
||||||
id int(11) NOT NULL AUTO_INCREMENT,
|
id int(11) NOT NULL AUTO_INCREMENT,
|
||||||
type_id int(11) NOT NULL,
|
type_id int(11) NOT NULL,
|
||||||
|
@ -128,3 +136,7 @@ ALTER TABLE `subscribers` ADD COLUMN update_time int(11) DEFAULT NULL;
|
||||||
ALTER TABLE `subscribers` DROP INDEX telegramID; # was UNIQUE (telegramID)
|
ALTER TABLE `subscribers` DROP INDEX telegramID; # was UNIQUE (telegramID)
|
||||||
ALTER TABLE `subscribers` ADD UNIQUE userID (userID);
|
ALTER TABLE `subscribers` ADD UNIQUE userID (userID);
|
||||||
COMMIT;
|
COMMIT;
|
||||||
|
|
||||||
|
ALTER TABLE services ADD COLUMN description varchar(200) COLLATE utf8_czech_ci NOT NULL;
|
||||||
|
ALTER TABLE services ADD COLUMN group_id int(11) DEFAULT NULL;
|
||||||
|
COMMIT;
|
||||||
|
|
|
@ -7,6 +7,7 @@ $icons = array("fa fa-times", "fa fa-exclamation", "fa fa-info", "fa fa-check" )
|
||||||
$some = array(_("Some systems are experiencing major outages"), _("Some systems are experiencing minor outages"), _("Some systems are under maintenance"));
|
$some = array(_("Some systems are experiencing major outages"), _("Some systems are experiencing minor outages"), _("Some systems are under maintenance"));
|
||||||
$all = array(_("Our systems are experiencing major outages."), _("Our systems are experiencing minor outages"), _("Our systems are under maintenance"), _("All systems operational"));
|
$all = array(_("Our systems are experiencing major outages."), _("Our systems are experiencing minor outages"), _("Our systems are under maintenance"), _("All systems operational"));
|
||||||
$permissions = array(_("Super admin"), _("Admin"), _("Editor"));
|
$permissions = array(_("Super admin"), _("Admin"), _("Editor"));
|
||||||
|
$visibility = array(_("Collapsed"), _("Expanded"), _("Expand on events"));
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class that encapsulates methods to render header and footer
|
* Class that encapsulates methods to render header and footer
|
||||||
|
@ -56,7 +57,7 @@ class Template{
|
||||||
<!doctype html>
|
<!doctype html>
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
<head>
|
<head>
|
||||||
<?php
|
<?php
|
||||||
$headfile = fopen("head.txt", "r") or die("Unable to open head.txt!");
|
$headfile = fopen("head.txt", "r") or die("Unable to open head.txt!");
|
||||||
$head_additionalcode = fread($versionfile,filesize("head.txt"));
|
$head_additionalcode = fread($versionfile,filesize("head.txt"));
|
||||||
fclose($headfile); ?>
|
fclose($headfile); ?>
|
||||||
|
|
Loading…
Reference in New Issue