<?php
declare(strict_types=1);

// Inicia la sesión si no está ya activa
if (session_status() !== PHP_SESSION_ACTIVE) session_start();

// Evitar cache en las respuestas
header('Cache-Control: no-store, no-cache, must-revalidate, max-age=0');
header('Pragma: no-cache');

// Si el parámetro 'cerrar_sesion' es 'true', cerramos la sesión
if (isset($_GET['cerrar_sesion']) && $_GET['cerrar_sesion'] === 'true') {
    // Limpiar la sesión
    session_unset();
    session_destroy();

    // Borra la cookie de la sesión también
    if (ini_get('session.use_cookies')) {
        $params = session_get_cookie_params();
        setcookie(session_name(), '', time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly']);
    }

    // Responde con un 200 OK y mensaje indicando que la sesión fue cerrada
    http_response_code(200);
    echo 'Sesión cerrada por inactividad';
    exit;
}

// Si la sesión está activa, responde con un 204 (sin contenido)
if (!empty($_SESSION['usuario'])) {
    $_SESSION['last_activity'] = time(); // Renueva la actividad
    http_response_code(204); // 204 OK - sesión activa
} else {
    // Si la sesión no está activa, responde con un 401 (No autorizado)
    http_response_code(401); // 401 - No hay sesión activa
    echo 'Sesión no activa';
}
exit;
