<?php
/**
 * Nutzer‑Aktionsprotokoll (admin/nutzer_log.php)
 * --------------------------------------------------
 * Zeigt die letzten Einträge aus der Tabelle `user_log` in einer Tabelle
 * an. Die Tabelle `user_log` wird von logUserAction() befüllt und besitzt
 * mindestens die Spalten:
 *   • id (PK)
 *   • user_id  (ID des betroffenen/ausführenden Nutzers)
 *   • action   (kurze Aktionsbeschreibung)
 *   • details  (optionale Zusatzinfos)
 *   • created_at (Timestamp)
 *
 * Richtlinien (Mailresponder v9):
 *   • Ausführliche Kommentare in allen kritischen Blöcken
 *   • Jede SQL‑Operation wird mit try/catch abgesichert
 *   • Erfolgs‑ / Fehler‑Logging via ErrorLogger::logSqlSuccess / logSqlError
 *   • Protokolliert, wenn ein Admin das Log einsehen möchte (logUserAction)
 */

// --------------------------------------------------
// 1) Sitzungs‑ & Abhängigkeitsinitialisierung
// --------------------------------------------------
session_start();
require_once __DIR__ . '/../includes/init.php';      // DB, ErrorLogger, functions.php etc.
require_once __DIR__ . '/../auth/AuthController.php';

$auth = new AuthController();
if (!$auth->isLoggedIn()) {
    header('Location: ' . $adminLoginPath);
    exit;
}

// --------------------------------------------------
// 2) Seitentitel & Variablen
// --------------------------------------------------
$title = 'Nutzeraktionen';
$log   = [];

// --------------------------------------------------
// 3) Letzte 100 Log‑Einträge laden
// --------------------------------------------------
try {
    $sql  = "SELECT id, user_id, action, details, created_at FROM user_log ORDER BY created_at DESC LIMIT 100";
    $stmt = Database::getInstance()->query($sql);
    $log  = $stmt->fetchAll();

    // Erfolgs‑Logging
    ErrorLogger::logSqlSuccess('nutzer_log | SQL: ' . $sql . ' | params: []');

    // Admin‑Aktion protokollieren (wer liest das Log?)
    logUserAction($_SESSION['admin_id'] ?? 0, 'View user_log', 'Letzte 100 Einträge eingesehen');

} catch (PDOException $e) {
    // Fehler‑Logging
    ErrorLogger::logSqlError('nutzer_log | SQL: SELECT user_log | params: [] | error: ' . $e->getMessage());
    $log = [];
}

// --------------------------------------------------
// 4) HTML‑Ausgabe puffern
// --------------------------------------------------
ob_start();
?>
<div class="page-header">
  <i class="bi bi-clipboard-data me-1"></i> Nutzerprotokolle &raquo; Nutzeraktionen
</div>

<div class="page-contend">
  <table class="table table-sm table-hover table-bordered">
    <thead class="table-light">
      <tr>
        <th>ID</th>
        <th>User‑ID</th>
        <th>Aktion</th>
        <th>Details</th>
        <th>Zeitpunkt</th>
      </tr>
    </thead>
    <tbody>
      <?php if (empty($log)): ?>
        <tr>
          <td colspan="5" class="text-center">Keine Nutzeraktionen protokolliert.</td>
        </tr>
      <?php else: ?>
        <?php foreach ($log as $entry): ?>
          <tr>
            <td><?= $entry['id'] ?></td>
            <td><?= $entry['user_id'] ?></td>
            <td><?= htmlspecialchars($entry['action']) ?></td>
            <td><?= htmlspecialchars($entry['details'] ?? '') ?></td>
            <td><?= $entry['created_at'] ?></td>
          </tr>
        <?php endforeach; ?>
      <?php endif; ?>
    </tbody>
  </table>
</div>

<?php
// --------------------------------------------------
// 5) Seite fertigstellen & Template einbinden
// --------------------------------------------------
$pageContent = ob_get_clean();
include __DIR__ . '/template.php';
?>
