46 lines
1.6 KiB
PHP
46 lines
1.6 KiB
PHP
<?php
|
|
|
|
declare(strict_types=1);
|
|
|
|
header('Content-Type: application/json; charset=utf-8');
|
|
header('Cache-Control: no-store, no-cache, must-revalidate');
|
|
|
|
date_default_timezone_set('Europe/Berlin');
|
|
require_once __DIR__ . '/util/dashboard_helpers.php';
|
|
|
|
$resource = (string) ($_GET['resource'] ?? 'content');
|
|
|
|
try {
|
|
switch ($resource) {
|
|
case 'content':
|
|
$pdo = require __DIR__ . '/../../general_files/ini/database.php';
|
|
$payload = dashboard_fetch_content($pdo, dashboard_now());
|
|
break;
|
|
case 'images':
|
|
$payload = [
|
|
'posters' => dashboard_list_posters(dashboard_now()),
|
|
'month_images' => dashboard_month_images(),
|
|
];
|
|
break;
|
|
case 'indoor':
|
|
$payload = ['indoor' => dashboard_fetch_indoor_temperature()];
|
|
break;
|
|
case 'outdoor':
|
|
$payload = ['outdoor' => dashboard_fetch_outdoor_weather()];
|
|
break;
|
|
case 'departures_eich':
|
|
require_once __DIR__ . '/util/bvg.php';
|
|
$payload = dashboard_fetch_departures();
|
|
break;
|
|
default:
|
|
http_response_code(400);
|
|
$payload = ['error' => 'Unbekannte Dashboard-Ressource.'];
|
|
}
|
|
|
|
echo json_encode($payload, JSON_UNESCAPED_UNICODE | JSON_UNESCAPED_SLASHES | JSON_THROW_ON_ERROR);
|
|
} catch (Throwable $exception) {
|
|
http_response_code(502);
|
|
error_log('Dashboard data endpoint (' . $resource . '): ' . $exception->getMessage());
|
|
echo json_encode(['error' => 'Dashboard-Daten konnten nicht geladen werden.'], JSON_UNESCAPED_UNICODE);
|
|
}
|