Replaced "Posted by" with "Impacted services". Addresses suggestion in Pryx/server-status#69

* Extended Incident class with service_id and services_names.
This commit is contained in:
Thomas Nilsen 2018-11-21 10:50:21 +01:00
parent c75f83c2ef
commit e41b45e067
2 changed files with 22 additions and 26 deletions

View File

@ -123,7 +123,7 @@ class Constellation
$operator = ($future)?">=":"<="; $operator = ($future)?">=":"<=";
$limit++; $limit++;
$sql = $mysqli->prepare("SELECT *, status.id as status_id FROM status INNER JOIN users ON user_id=users.id WHERE `time` $operator ? AND `end_time` $operator ? OR (`time`<=? AND `end_time` $operator ? ) ORDER BY `time` DESC LIMIT ? OFFSET ?"); $sql = $mysqli->prepare("SELECT users.id, status.type, status.title, status.text, status.time, status.end_time, users.username, status.id, status.id as status_id FROM status INNER JOIN users ON user_id=users.id WHERE `time` $operator ? AND `end_time` $operator ? OR (`time`<=? AND `end_time` $operator ? ) ORDER BY `time` DESC LIMIT ? OFFSET ?");
$sql->bind_param("iiiiii",$timestamp, $timestamp, $timestamp, $timestamp, $limit, $offset); $sql->bind_param("iiiiii",$timestamp, $timestamp, $timestamp, $timestamp, $limit, $offset);
$sql->execute(); $sql->execute();
$query = $sql->get_result(); $query = $sql->get_result();
@ -136,6 +136,18 @@ class Constellation
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
$stmt_service = $mysqli->prepare("SELECT services.id,services.name FROM services
INNER JOIN services_status ON services.id = services_status.service_id
WHERE services_status.status_id = ?");
$stmt_service->bind_param("i", $result['status_id']);
$stmt_service->execute();
$query_service = $stmt_service->get_result();
while($result_service = $query_service->fetch_assoc()) {
$result['service_id'][] = $result_service['id'];
$result['service_name'][] = $result_service['name'];
}
$array[] = new Incident($result); $array[] = new Incident($result);
} }
} }

View File

@ -13,6 +13,8 @@ class Incident implements JsonSerializable
private $type; private $type;
private $title; private $title;
private $username; private $username;
private $service_id;
private $service_name;
/** /**
* Constructs service from its data. * Constructs service from its data.
@ -34,6 +36,8 @@ class Incident implements JsonSerializable
$this->title = $data['title']; $this->title = $data['title'];
$this->text = $data['text']; $this->text = $data['text'];
$this->username = $data['username']; $this->username = $data['username'];
$this->service_id = $data['service_id'];
$this->service_name = $data['service_name'];
} }
/** /**
@ -168,24 +172,9 @@ class Incident implements JsonSerializable
*/ */
public function render($admin=0){ public function render($admin=0){
global $icons; global $icons;
global $classes, $user, $mysqli; global $classes, $user;
$admin = $admin && (($user->get_rank()<=1) || ($user->get_username() == $this->username)); $admin = $admin && (($user->get_rank()<=1) || ($user->get_username() == $this->username));
// Create id->service_name array
$stmt = $mysqli->prepare("SELECT services.id,services.name FROM services INNER JOIN services_status ON services.id = services_status.service_id WHERE services_status.status_id = ?");
$stmt->bind_param("i", $this->id);
$stmt->execute();
$query = $stmt->get_result();
$array = array();
if ($query->num_rows){
$timestamp = time();
while($result = $query->fetch_assoc()) {
$array[$result['id']] = $result['name'];
}
}
?> ?>
<article class="panel panel-<?php echo $classes[$this->type];?>"> <article class="panel panel-<?php echo $classes[$this->type];?>">
<div class="panel-heading icon"> <div class="panel-heading icon">
@ -201,18 +190,13 @@ class Incident implements JsonSerializable
<div class="panel-body"> <div class="panel-body">
<?php echo $this->text; ?> <?php echo $this->text; ?>
</div> </div>
<div class="panel-footer panel-info clearfix"> <div class="panel-footer clearfix">
<small> <small>
<?php <?php echo _("Impacted service(s): ");
echo _("Impacted service(s): "); foreach ( $this->service_name as $key => $value ) {
foreach ( $array as $key => $value ) {
echo '<span class="label label-default">'.$value . '</span>&nbsp;'; echo '<span class="label label-default">'.$value . '</span>&nbsp;';
} }
?>
</small>
</div>
<div class="panel-footer clearfix">
<small><?php echo _("Posted by");?>: <?php echo $this->username;
if (isset($this->end_date)){?> if (isset($this->end_date)){?>
<span class="pull-right"><?php echo strtotime($this->end_date)>time()?_("Ending"):_("Ended");?>:&nbsp;<time class="pull-right timeago" datetime="<?php echo $this->end_date; ?>"><?php echo $this->end_date; ?></time></span> <span class="pull-right"><?php echo strtotime($this->end_date)>time()?_("Ending"):_("Ended");?>:&nbsp;<time class="pull-right timeago" datetime="<?php echo $this->end_date; ?>"><?php echo $this->end_date; ?></time></span>
<?php } ?> <?php } ?>