107 lines
3.1 KiB
PHP
107 lines
3.1 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
ini_set('display_errors', '1');
|
|
error_reporting(E_ALL);
|
|
session_start();
|
|
|
|
$loggedIn = isset($_SESSION['user_id']);
|
|
|
|
$defaultLocation = null;
|
|
|
|
if ($loggedIn) {
|
|
$config = require __DIR__ . '/../config/database.php';
|
|
|
|
$dsn = sprintf(
|
|
'mysql:host=%s;dbname=%s;charset=%s',
|
|
$config['host'],
|
|
$config['dbname'],
|
|
$config['charset'] ?? 'utf8mb4'
|
|
);
|
|
|
|
$pdo = new PDO(
|
|
$dsn,
|
|
$config['user'],
|
|
$config['pass'],
|
|
[
|
|
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
|
|
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
|
|
]
|
|
);
|
|
|
|
$userId = (int)$_SESSION['user_id'];
|
|
$displayName = $_SESSION['display_name'] ?? '';
|
|
$username = $_SESSION['username'] ?? '';
|
|
$role = $_SESSION['role'] ?? 'user';
|
|
|
|
$stmtLocation = $pdo->prepare("
|
|
SELECT
|
|
`name`,
|
|
`latitude`,
|
|
`longitude`,
|
|
`elevation`,
|
|
`timezone`
|
|
FROM `app_user_locations`
|
|
WHERE `user_id` = :user_id
|
|
AND `is_default` = 1
|
|
LIMIT 1
|
|
");
|
|
$stmtLocation->execute([':user_id' => $userId]);
|
|
$defaultLocation = $stmtLocation->fetch();
|
|
}
|
|
|
|
function h(?string $value): string
|
|
{
|
|
return htmlspecialchars((string)$value, ENT_QUOTES, 'UTF-8');
|
|
}
|
|
?>
|
|
<?php require __DIR__ . '/header.php'; ?>
|
|
|
|
<?php if (!$loggedIn): ?>
|
|
|
|
<div class="public-hero">
|
|
<h2>Das Universum erwartet dich</h2>
|
|
<p>Satellitentracking, Himmelsvorschau und Astronomiewerkzeuge für Sonneberg und darüber hinaus.</p>
|
|
<div class="btn-row">
|
|
<a href="login.php" class="btn btn-primary">Anmelden</a>
|
|
<a href="register.php" class="btn btn-secondary">Registrieren</a>
|
|
</div>
|
|
</div>
|
|
|
|
<?php else: ?>
|
|
|
|
<p class="welcome-text">
|
|
Willkommen zurück, <strong><?= h($displayName !== '' ? $displayName : $username) ?></strong>.
|
|
</p>
|
|
|
|
<div class="grid-2">
|
|
|
|
<div class="card">
|
|
<h2>Konto</h2>
|
|
<table class="data-table">
|
|
<tr><td>Benutzername</td><td><?= h($username) ?></td></tr>
|
|
<tr><td>Rolle</td><td><?= h($role) ?></td></tr>
|
|
</table>
|
|
</div>
|
|
|
|
<div class="card">
|
|
<h2>Standard-Standort</h2>
|
|
<?php if ($defaultLocation): ?>
|
|
<table class="data-table">
|
|
<tr><td>Name</td><td><?= h($defaultLocation['name']) ?></td></tr>
|
|
<tr><td>Breitengrad</td><td><?= h((string)$defaultLocation['latitude']) ?></td></tr>
|
|
<tr><td>Längengrad</td><td><?= h((string)$defaultLocation['longitude']) ?></td></tr>
|
|
<tr><td>Höhe</td><td><?= h($defaultLocation['elevation'] !== null ? (string)$defaultLocation['elevation'] . ' m' : '—') ?></td></tr>
|
|
<tr><td>Zeitzone</td><td><?= h($defaultLocation['timezone']) ?></td></tr>
|
|
</table>
|
|
<?php else: ?>
|
|
<p class="hint">Noch kein Standort hinterlegt. <a href="settings.php">Jetzt anlegen</a></p>
|
|
<?php endif; ?>
|
|
</div>
|
|
|
|
</div>
|
|
|
|
<?php endif; ?>
|
|
|
|
<?php require __DIR__ . '/footer.php'; ?>
|