<?php
// admin/logout.php

// Primeira coisa: definir BASE_PATH
define('BASE_PATH', dirname(dirname(__FILE__)));

// Inicia a sessão se necessário
session_start();

// Carrega os includes necessários
require_once BASE_PATH . '/includes/config.php';
require_once BASE_PATH . '/includes/db.php';
require_once BASE_PATH . '/includes/functions.php';
require_once BASE_PATH . '/includes/auth.php';

try {
    // Registra informações do usuário antes do logout
    $userId = $_SESSION['admin_id'] ?? 'Não identificado';
    $userEmail = $_SESSION['admin_email'] ?? 'Não identificado';
    
    // Executa o logout
    if ($auth->logout()) {
        // Limpa cookies
        if (isset($_SERVER['HTTP_COOKIE'])) {
            $cookies = explode(';', $_SERVER['HTTP_COOKIE']);
            foreach($cookies as $cookie) {
                $parts = explode('=', $cookie);
                $name = trim($parts[0]);
                setcookie($name, '', time()-3600, '/');
            }
        }

        // Destrói a sessão
        $_SESSION = array();
        
        if (ini_get("session.use_cookies")) {
            $params = session_get_cookie_params();
            setcookie(session_name(), '', time() - 42000,
                $params["path"], $params["domain"],
                $params["secure"], $params["httponly"]
            );
        }
        
        session_destroy();
        
        // Log de sucesso
        logInfo("Logout realizado com sucesso - Usuário: {$userEmail} (ID: {$userId})");
        
        // Mensagem de sucesso
        setAlert("Logout realizado com sucesso!", ALERT_SUCCESS);
    } else {
        throw new Exception("Falha ao executar logout");
    }
    
} catch (Exception $e) {
    // Log de erro
    logError("Erro no logout - Usuário: {$userEmail} (ID: {$userId}) - Erro: " . $e->getMessage());
    
    // Força limpeza da sessão
    $_SESSION = array();
    session_destroy();
    
    setAlert("Ocorreu um erro durante o logout.", ALERT_ERROR);
}

// Redireciona para login
header("Location: login.php");
exit();
?>