Fix #11 - add second part of api

This commit is contained in:
Vojtěch Sajdl 2018-04-13 22:38:10 +02:00
parent 3980f5daa6
commit f9c247854f
No known key found for this signature in database
GPG Key ID: 082BC82518E5F32E
3 changed files with 46 additions and 5 deletions

View File

@ -5,7 +5,44 @@ if (!file_exists("../config.php"))
header("Location: ../"); header("Location: ../");
} }
else{ else{
require_once("../config.php"); require_once("../config.php");
require_once("../classes/constellation.php"); require_once("../classes/constellation.php");
if (isset($_GET['future']) && $_GET['future'] == true)
{
$result = get_incidents(true);
}else{
$result = get_incidents();
}
echo json_encode($result);
}
function get_incidents($future = false){
global $mysqli;
$c = ($future)?">=":"<=";
$limit = (isset($_GET['limit'])?$_GET['limit']:5);
$offset = (isset($_GET['offset'])?$_GET['offset']:0);
$timestamp = (isset($_GET['timestamp']))?$_GET['timestamp']:time();
$limit++;
$sql = $mysqli->prepare("SELECT *, status.id as status_id FROM status INNER JOIN users ON user_id=users.id WHERE `time` $c ? AND `end_time` $c ? OR (`time`<=? AND `end_time` $c ? ) 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)
{
$array[] = new Incident($result);
}
}
return [
"more" => $more,
"incidents" => $array
];
} }

View File

@ -52,7 +52,7 @@ class Constellation
$offset += $limit; $offset += $limit;
if ($query->num_rows){ if ($query->num_rows){
while(($result = $query->fetch_assoc()) && $limit-->0) while(($result = $query->fetch_assoc()) && $limit-- > 0)
{ {
$incident = new Incident($result); $incident = new Incident($result);
$incident->render($admin); $incident->render($admin);

View File

@ -7,6 +7,8 @@ class Incident implements JsonSerializable
private $id; private $id;
private $date; private $date;
private $end_date; private $end_date;
private $timestamp;
private $end_timestamp;
private $text; private $text;
private $type; private $type;
private $title; private $title;
@ -20,6 +22,8 @@ class Incident implements JsonSerializable
{ {
//TODO: Maybe get data from id? //TODO: Maybe get data from id?
$this->id = $data['status_id']; $this->id = $data['status_id'];
$this->timestamp = $data['time'];
$this->end_timestamp = $data['end_time'];
$this->date = new DateTime("@".$data['time']); $this->date = new DateTime("@".$data['time']);
$this->date = $this->date->format('Y-m-d H:i:sP'); $this->date = $this->date->format('Y-m-d H:i:sP');
if ($data['end_time']>0){ if ($data['end_time']>0){
@ -187,8 +191,8 @@ class Incident implements JsonSerializable
public function jsonSerialize() { public function jsonSerialize() {
return [ return [
"id" => $this->id, "id" => $this->id,
"date" => $this->date, "date" => $this->timestamp,
"end_date" => $this->end_date, "end_date" => $this->end_timestamp,
"text" => $this->text, "text" => $this->text,
"type" => $this->type, "type" => $this->type,
"title" => $this->title, "title" => $this->title,