get_incidents($future, $offset, $limit, $timestamp); $ajax = isset($_GET['ajax']); if ($future && count($incidents["incidents"]) && !$ajax) { echo "

"._("Planned maintenance")."

"; } else if (count($incidents["incidents"]) &&!$ajax) { if ($offset) { echo ''; } echo "

"._("Past incidents")."

"; } else if (!$future &&!$ajax) { echo "

"._("No incidents")."

"; } $show = !$future && $incidents["more"]; $offset += $limit; if (count($incidents["incidents"])){ foreach ($incidents['incidents'] as $incident) { $incident->render($admin); } if ($show) { echo '
'._("Load more").'
'; } } } /** * Renders service status - in admin page it returns array so it can be processed further. * @param boolean $admin * @return array of services */ public function render_status($admin = false, $heading = true){ global $mysqli; //$query = $mysqli->query("SELECT id, name, description FROM services"); $query = $mysqli->query("SELECT services.id, services.name, services.description, services_groups.name as group_name FROM services LEFT JOIN services_groups ON services.group_id=services_groups.id ORDER BY services_groups.name ASC, services.name;"); $array = array(); if ($query->num_rows){ $timestamp = time(); while($result = $query->fetch_assoc()) { $id = $result['id']; $sql = $mysqli->prepare("SELECT type FROM services_status INNER JOIN status ON services_status.status_id = status.id WHERE service_id = ? AND `time` <= ? AND (`end_time` >= ? OR `end_time`=0) ORDER BY `time` DESC LIMIT 1"); $sql->bind_param("iii", $id, $timestamp, $timestamp); $sql->execute(); $tmp = $sql->get_result(); if ($tmp->num_rows) { $array[] = new Service($result['id'], $result['name'], $result['description'], $result['group_name'], $tmp->fetch_assoc()['type']); } else{ $array[] = new Service($result['id'], $result['name'], $result['description'], $result['group_name']); } } if ($heading) { echo Service::current_status($array); } } else{ $array[] = new Service(0, _("No services"), -1); } if (!$admin) { ?> '; //$arrCompletedGroups = array(); foreach($array as $service){ //print_r($service); //if ( !empty($service->group_name) && !in_array($service->group_name, $arrCompletedGroups)) { //print $service->name; // $arrCompletedGroups[] = $service['group_name']; // $service->render(true); //} else { $service->render(); //} } echo ''; //echo ''; } else{ return $array; } } function get_incidents($future = false, $offset = 0, $limit = 5, $timestamp = 0){ global $mysqli; if ($timestamp == 0) { $timestamp = time(); } $operator = ($future)?">=":"<="; $limit++; $sql = $mysqli->prepare("SELECT users.id, status.type, status.title, status.text, status.time, status.end_time, users.username, 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(); $array = []; $limit--; $more = false; if ($query->num_rows>$limit){ $more = true; } 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); } } return [ "more" => $more, "incidents" => $array ]; } 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); } 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); } /** * 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 header - Title of warning * @param string message - Message to display * @param boolean show_link - True if button is to be displayed * @param string url - URL for button * @param string link_txt - Text for button * @return void */ function render_alert($alert_type, $header, $message, $show_link = false, $url = null, $link_text = null) { echo '

'; if ( $show_link ) { echo '
'.$link_text.'
'; } } } $constellation = new Constellation();