From e41b45e0679c2c77ec71f8db67911a1e8d602df4 Mon Sep 17 00:00:00 2001 From: Thomas Nilsen Date: Wed, 21 Nov 2018 10:50:21 +0100 Subject: [PATCH] Replaced "Posted by" with "Impacted services". Addresses suggestion in Pryx/server-status#69 * Extended Incident class with service_id and services_names. --- classes/constellation.php | 14 +++++++++++++- classes/incident.php | 34 +++++++++------------------------- 2 files changed, 22 insertions(+), 26 deletions(-) diff --git a/classes/constellation.php b/classes/constellation.php index d244e16..407fdd9 100644 --- a/classes/constellation.php +++ b/classes/constellation.php @@ -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); } } diff --git a/classes/incident.php b/classes/incident.php index fde4cc1..4ced1db 100644 --- a/classes/incident.php +++ b/classes/incident.php @@ -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']; - } - } - ?>
@@ -201,18 +190,13 @@ class Incident implements JsonSerializable
text; ?>
-