<?php
// public/logout.php
declare(strict_types=1);

require_once dirname(__DIR__) . '/_session.php';

$projectRoot = dirname(__DIR__);

$configPath = $projectRoot . '/config.php';
$config = [];
if (is_file($configPath)) {
    $cfg = require $configPath;
    if (is_array($cfg)) {
        $config = $cfg;
    }
}

function mhk_normalize_base_url(?string $base): string {
    $base = trim((string)$base);
    if ($base === '' || $base === '/') {
        return '';
    }
    return '/' . trim($base, '/');
}

function mhk_url(string $path = ''): string {
    global $base;
    $path = ltrim($path, '/');
    return ($base === '' ? '' : $base) . '/' . $path;
}

function mhk_public_url(string $path = ''): string {
    return mhk_url($path);
}

$base = mhk_normalize_base_url($config['base_url'] ?? '');

// чистим все сессионные данные
$_SESSION = [];

// удаляем session cookie с теми же параметрами
if (ini_get('session.use_cookies')) {
    $params = session_get_cookie_params();

    if (PHP_VERSION_ID >= 70300) {
        setcookie(session_name(), '', [
            'expires'  => time() - 3600,
            'path'     => $params['path'] ?? '/',
            'domain'   => $params['domain'] ?? '',
            'secure'   => (bool)($params['secure'] ?? false),
            'httponly' => (bool)($params['httponly'] ?? true),
            'samesite' => $params['samesite'] ?? 'Lax',
        ]);
    } else {
        setcookie(
            session_name(),
            '',
            time() - 3600,
            ($params['path'] ?? '/') . '; samesite=' . ($params['samesite'] ?? 'Lax'),
            $params['domain'] ?? '',
            (bool)($params['secure'] ?? false),
            (bool)($params['httponly'] ?? true)
        );
    }
}

session_destroy();

header('Location: ' . mhk_url(''));
exit;