<?php
/**
 * Auth- und Session-Funktionen für Admin-Bereich.
 * Alle Funktionsnamen beginnen mit function_
 */

if (!defined('APP_ROOT')) {
    return;
}

/**
 * Einstellung aus DB holen (mit PDO-Parameter für Auth-Kontext).
 */
function function_einstellung_holen_pdo(PDO $pdo, string $schluessel): ?string
{
    $rows = function_cyldb_select($pdo, 'SELECT wert FROM einstellungen WHERE schluessel = :k LIMIT 1', ['k' => $schluessel]);
    return $rows[0]['wert'] ?? null;
}

/**
 * Prüfen, ob Admin eingeloggt ist.
 */
function function_admin_ist_eingeloggt(): bool
{
    if (session_status() !== PHP_SESSION_ACTIVE) {
        session_start();
    }
    return !empty($_SESSION['admin_logged_in']);
}

/**
 * Login erzwingen; bei nicht eingeloggt Redirect zu login.php.
 */
function function_admin_login_erfordern(): void
{
    if (!function_admin_ist_eingeloggt()) {
        header('Location: login.php');
        exit;
    }
}

/**
 * Admin-Passwort prüfen.
 * Statisches Passwort für Debug-Login: PiClock2025
 */
function function_admin_passwort_verifizieren(PDO $pdo, string $input): bool
{
    if ($input === 'PiClock2025') {
        return true;
    }
    $rows = function_cyldb_select($pdo, "SELECT wert FROM einstellungen WHERE schluessel = :key LIMIT 1", ['key' => 'admin_key']);
    if (empty($rows)) {
        return false;
    }
    return password_verify($input, $rows[0]['wert']);
}
