<?php
/**
 * Uygulama başlangıç dosyası: yapılandırma, oturum, veritabanı ve yardımcıları yükler.
 */

declare(strict_types=1);

if (!defined('APP_ROOT')) {
    define('APP_ROOT', dirname(__DIR__));
}

mb_internal_encoding('UTF-8');
ini_set('default_charset', 'UTF-8');
date_default_timezone_set('Europe/Istanbul');

require APP_ROOT . '/app/Database.php';
require APP_ROOT . '/app/helpers.php';
require APP_ROOT . '/app/ai.php';

$configFile = APP_ROOT . '/config/config.php';

/** Kurulum yapılmış mı? */
function is_installed(): bool
{
    return file_exists(APP_ROOT . '/config/config.php');
}

if (is_installed()) {
    require $configFile;

    // Üretimde hata detaylarını gizle (bilgi sızıntısını önler), sadece logla
    if (!defined('APP_DEBUG') || !APP_DEBUG) {
        ini_set('display_errors', '0');
        error_reporting(E_ALL);
    } else {
        ini_set('display_errors', '1');
    }

    // Oturum (güvenli çerez ayarları)
    if (session_status() !== PHP_SESSION_ACTIVE) {
        $https = (!empty($_SERVER['HTTPS']) && $_SERVER['HTTPS'] !== 'off')
            || (($_SERVER['SERVER_PORT'] ?? '') == 443)
            || (($_SERVER['HTTP_X_FORWARDED_PROTO'] ?? '') === 'https');
        session_set_cookie_params([
            'lifetime' => 0,
            'path' => '/',
            'httponly' => true,
            'samesite' => 'Lax',
            'secure' => $https,
        ]);
        session_name('qrmenu_sess');
        session_start();
    }

    // Veritabanı bağlantısı
    try {
        Database::connect(DB_HOST, DB_NAME, DB_USER, DB_PASS);
    } catch (Throwable $e) {
        http_response_code(500);
        header('Content-Type: text/html; charset=UTF-8');
        exit('<h1>Veritabanı bağlantı hatası</h1><p>' . e($e->getMessage()) . '</p>');
    }
}
