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)?">=":"<=";
$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->execute();
$query = $sql->get_result();
@ -136,6 +136,18 @@ class Constellation
if ($query->num_rows){
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);
}
}

View File

@ -13,6 +13,8 @@ class Incident implements JsonSerializable
private $type;
private $title;
private $username;
private $service_id;
private $service_name;
/**
* Constructs service from its data.
@ -34,6 +36,8 @@ class Incident implements JsonSerializable
$this->title = $data['title'];
$this->text = $data['text'];
$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){
global $icons;
global $classes, $user, $mysqli;
global $classes, $user;
$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];?>">
<div class="panel-heading icon">
@ -201,18 +190,13 @@ class Incident implements JsonSerializable
<div class="panel-body">
<?php echo $this->text; ?>
</div>
<div class="panel-footer panel-info clearfix">
<div class="panel-footer clearfix">
<small>
<?php
echo _("Impacted service(s): ");
foreach ( $array as $key => $value ) {
<?php echo _("Impacted service(s): ");
foreach ( $this->service_name as $key => $value ) {
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)){?>
<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 } ?>