<?php
// cleanup_activity_logs.php - Alte Activity Logs löschen
require_once 'db.php';
require_once 'helpers.php';
require_once 'helpers_permissions.php';
requireLogin();
requireAdmin(); // Nur Admins

define('PAGE_TITLE', 'Activity Log Bereinigung');

$message = '';
$error = '';

if ($_SERVER['REQUEST_METHOD'] === 'POST') {
    validateRequest();
    
    $days = filter_var($_POST['days'] ?? 365, FILTER_VALIDATE_INT);
    
    if (!$days || $days < 1) {
        $error = t('log_invalid_days');
    } else {
        try {
            $deleted = cleanupOldActivityLogs($days);
            $message = sprintf(t('log_entries_deleted'), $deleted, $days);
            
            // Diese Aktion selbst loggen
            logActivity('deleted', 'activity_log', null, 'Cleanup', null, [
                'deleted_count' => $deleted,
                'older_than_days' => $days
            ]);
            
        } catch (Exception $e) {
            $error = 'Fehler beim Bereinigen: ' . $e->getMessage();
        }
    }
}

// Statistiken laden
try {
    $stats = $db->selectOne("
        SELECT 
            COUNT(*) as total,
            MIN(zeitstempel) as oldest,
            MAX(zeitstempel) as newest,
            COUNT(CASE WHEN zeitstempel < DATE_SUB(datetime('now'), INTERVAL 1 DAY) THEN 1 END) as older_than_24h,
            COUNT(CASE WHEN zeitstempel < DATE_SUB(datetime('now'), INTERVAL 7 DAY) THEN 1 END) as older_than_7days,
            COUNT(CASE WHEN zeitstempel < DATE_SUB(datetime('now'), INTERVAL 30 DAY) THEN 1 END) as older_than_30days,
            COUNT(CASE WHEN zeitstempel < DATE_SUB(datetime('now'), INTERVAL 90 DAY) THEN 1 END) as older_than_3months
        FROM activity_log
    ");
} catch (PDOException $e) {
    $stats = null;
}

include 'header_next_page.php';
?>

<style>
.cleanup-section {
    background: white;
    padding: 25px;
    border-radius: 12px;
    margin-bottom: 25px;
    box-shadow: 0 2px 8px rgba(0,0,0,0.1);
}

.cleanup-section h3 {
    margin-top: 0;
    color: #333;
}

.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 15px;
    margin: 20px 0;
}

.stat-box {
    background: #f8f9fa;
    padding: 15px;
    border-radius: 8px;
    text-align: center;
}

.stat-value {
    font-size: 2em;
    font-weight: bold;
    color: var(--primary-color, #3498db);
}

.stat-label {
    font-size: 0.9em;
    color: #666;
    margin-top: 5px;
}

.warning-box {
    background: #fff3cd;
    border: 1px solid #ffc107;
    padding: 15px;
    border-radius: 8px;
    margin: 20px 0;
}

.danger-box {
    background: #f8d7da;
    border: 1px solid #dc3545;
    padding: 15px;
    border-radius: 8px;
    margin: 20px 0;
}

.cleanup-options {
    display: flex;
    flex-direction: column;
    gap: 15px;
}

.cleanup-option {
    background: #f8f9fa;
    padding: 20px;
    border-radius: 8px;
    border: 2px solid #ddd;
    cursor: pointer;
    transition: all 0.3s;
}

.cleanup-option:hover {
    border-color: var(--primary-color, #3498db);
    background: #e9ecef;
}

.cleanup-option input[type="radio"] {
    margin-right: 10px;
}

.cleanup-option label {
    cursor: pointer;
    font-weight: 600;
    display: flex;
    align-items: center;
}

.cleanup-option-desc {
    margin-left: 28px;
    font-size: 0.9em;
    color: #666;
    margin-top: 8px;
}
</style>

<h2>🗑️ Activity Log Bereinigung</h2>

<?php if ($message): ?>
    <div class="success-message"><?php echo htmlspecialchars($message); ?></div>
<?php endif; ?>

<?php if ($error): ?>
    <div class="error-message"><?php echo htmlspecialchars($error); ?></div>
<?php endif; ?>

<!-- Statistiken -->
<?php if ($stats): ?>
<div class="cleanup-section">
    <h3>📊 Aktuelle Statistiken</h3>
    
    <div class="stats-grid">
        <div class="stat-box">
            <div class="stat-value"><?php echo number_format($stats['total']); ?></div>
            <div class="stat-label">Gesamt-Einträge</div>
        </div>
        <div class="stat-box">
            <div class="stat-value"><?php echo number_format($stats['older_than_24h']); ?></div>
            <div class="stat-label">Älter als 24 Stunden</div>
        </div>
        <div class="stat-box">
            <div class="stat-value"><?php echo number_format($stats['older_than_7days']); ?></div>
            <div class="stat-label">Älter als 7 Tage</div>
        </div>
        <div class="stat-box">
            <div class="stat-value"><?php echo number_format($stats['older_than_30days']); ?></div>
            <div class="stat-label">Älter als 30 Tage</div>
        </div>
        <div class="stat-box">
            <div class="stat-value"><?php echo number_format($stats['older_than_3months']); ?></div>
            <div class="stat-label">Älter als 3 Monate</div>
        </div>
    </div>
    
    <div style="margin-top: 20px; font-size: 0.9em; color: #666;">
        <strong><?php echo t('log_oldest_entry'); ?>:</strong> <?php echo $stats['oldest'] ? formatDateTime($stats['oldest']) : t('log_no_entries'); ?><br>
        <strong><?php echo t('log_newest_entry'); ?>:</strong> <?php echo $stats['newest'] ? formatDateTime($stats['newest']) : t('log_no_entries'); ?>
    </div>
</div>
<?php endif; ?>

<!-- Bereinigung -->
<div class="cleanup-section">
    <h3>🧹 Logs bereinigen</h3>
    
    <div class="warning-box">
        <strong>⚠️ Wichtig:</strong> Gelöschte Logs können nicht wiederhergestellt werden! 
        Es wird empfohlen, vor der Bereinigung ein Backup zu erstellen.
    </div>
    
    <form method="POST" action="" onsubmit="return confirm('<?php echo t('log_confirm_delete'); ?>');">
        <?php echo Security::getCSRFInput(); ?>
        
        <div class="cleanup-options">
            <div class="cleanup-option">
                <label>
                    <input type="radio" name="days" value="1" required>
                    Logs älter als 24 Stunden löschen
                </label>
                <div class="cleanup-option-desc">
                    Löscht <?php echo number_format($stats['older_than_24h'] ?? 0); ?> Einträge – nützlich nach Tests
                </div>
            </div>

            <div class="cleanup-option">
                <label>
                    <input type="radio" name="days" value="7">
                    Logs älter als 7 Tage löschen
                </label>
                <div class="cleanup-option-desc">
                    Löscht <?php echo number_format($stats['older_than_7days'] ?? 0); ?> Einträge
                </div>
            </div>

            <div class="cleanup-option">
                <label>
                    <input type="radio" name="days" value="30">
                    Logs älter als 30 Tage löschen
                </label>
                <div class="cleanup-option-desc">
                    Löscht <?php echo number_format($stats['older_than_30days'] ?? 0); ?> Einträge
                </div>
            </div>

            <div class="cleanup-option">
                <label>
                    <input type="radio" name="days" value="90" checked>
                    Logs älter als 3 Monate löschen (empfohlen)
                </label>
                <div class="cleanup-option-desc">
                    Löscht <?php echo number_format($stats['older_than_3months'] ?? 0); ?> Einträge
                </div>
            </div>

            <div class="cleanup-option" id="customOption">
                <label>
                    <input type="radio" name="days" value="custom" id="customRadio">
                    Benutzerdefiniert
                </label>
                <div class="cleanup-option-desc" style="margin-top:10px;">
                    <label style="display:flex; align-items:center; gap:8px;">
                        Älter als 
                        <input type="number" id="customDays" name="custom_days" min="1" max="3650" value="60"
                               style="width:70px; padding:4px 8px; border:1px solid #ddd; border-radius:4px;"
                               onclick="document.getElementById('customRadio').checked=true">
                        Tage löschen
                    </label>
                </div>
            </div>
        </div>
        
        <script>
        // Bei benutzerdefinierter Auswahl: Wert aus Eingabefeld übernehmen
        document.querySelector('form').addEventListener('submit', function(e) {
            const customRadio = document.getElementById('customRadio');
            if (customRadio.checked) {
                const days = parseInt(document.getElementById('customDays').value);
                if (!days || days < 1) {
                    e.preventDefault();
                    alert('Bitte eine gültige Anzahl Tage eingeben.');
                    return;
                }
                customRadio.value = days;
            }
        });
        </script>
        
        <div style="margin-top: 25px;">
            <button type="submit" class="btn btn-danger">
                🗑️ Ausgewählte Logs jetzt löschen
            </button>
            <a href="settings.php" class="btn">Abbrechen</a>
        </div>
    </form>
</div>

<!-- Info-Box -->
<div class="cleanup-section">
    <h3>ℹ️ Informationen</h3>
    
    <h4>Warum sollte ich alte Logs löschen?</h4>
    <ul>
        <li><strong>Datenbank-Performance:</strong> Weniger Einträge = schnellere Abfragen</li>
        <li><strong>Speicherplatz:</strong> Activity Logs können über Zeit viel Platz beanspruchen</li>
        <li><strong>Datenschutz:</strong> DSGVO empfiehlt, alte Logs zu löschen</li>
        <li><strong>Übersichtlichkeit:</strong> Aktuellere Logs sind relevanter</li>
    </ul>
    
    <h4>Was passiert beim Löschen?</h4>
    <ul>
        <li>Alle Logs, die älter als die gewählte Zeitspanne sind, werden <strong>permanent</strong> gelöscht</li>
        <li>Die Aktion selbst wird geloggt (wer hat wann wie viele Logs gelöscht)</li>
        <li>Aktuellere Logs bleiben vollständig erhalten</li>
        <li>Die Löschung ist <strong>nicht rückgängig zu machen</strong></li>
    </ul>
    
    <h4>Empfehlung:</h4>
    <p>
        Führe die Bereinigung <strong>1x pro Jahr</strong> durch und lösche Logs älter als 1 Jahr. 
        So bleibt die Datenbank schlank, aber du hast noch genug Historie für Audit-Zwecke.
    </p>
</div>

<div class="form-actions">
    <a href="activity_log.php" class="btn btn-secondary">📜 Zu den Activity Logs</a>
    <a href="settings.php" class="btn">← Zurück zu Einstellungen</a>
</div>

<?php include 'footer_next.php'; ?>
