<?php
// config.php - Configurazione database e costanti per blog GMDSS Italia

// Configurazione Database
define('DB_HOST', 'localhost');
define('DB_NAME', 'baltobyt_gmdss');
define('DB_USER', 'baltobyt_universo');
define('DB_PASS', 'Unione@04');
define('DB_CHARSET', 'utf8mb4');

// Configurazione Sito
define('SITE_NAME', 'GMDSS Italia Blog');
define('SITE_URL', 'https://gmdssitalia.it');
define('BLOG_URL', SITE_URL . '/blog');
define('ADMIN_URL', SITE_URL . '/admin');

// Configurazione Upload
define('UPLOAD_DIR', 'uploads/');
define('MAX_FILE_SIZE', 5 * 1024 * 1024); // 5MB
define('ALLOWED_EXTENSIONS', ['jpg', 'jpeg', 'png', 'gif', 'webp']);

// Configurazione SEO
define('DEFAULT_META_DESCRIPTION', 'Blog GMDSS Italia - Certificazioni marittime, corsi GOC, ROC, LRC, SRC e aggiornamenti normativi.');
define('DEFAULT_META_KEYWORDS', 'GMDSS, GOC, ROC, LRC, SRC, certificazioni marittime, corsi, esami, nautica');

// Timezone
date_default_timezone_set('Europe/Rome');

// Configurazione Sessione per Admin
ini_set('session.cookie_httponly', 1);
ini_set('session.use_only_cookies', 1);
ini_set('session.cookie_secure', 1);

// Funzione per connessione database
function getDBConnection() {
    static $pdo = null;
    
    if ($pdo === null) {
        try {
            $dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET;
            $options = [
                PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
                PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
                PDO::ATTR_EMULATE_PREPARES => false,
                PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES " . DB_CHARSET
            ];
            $pdo = new PDO($dsn, DB_USER, DB_PASS, $options);
        } catch (PDOException $e) {
            die("Errore connessione database: " . $e->getMessage());
        }
    }
    
    return $pdo;
}

// Funzione per generare slug URL-friendly
function generateSlug($text) {
    $text = strtolower($text);
    $text = preg_replace('/[àáâãäå]/', 'a', $text);
    $text = preg_replace('/[èéêë]/', 'e', $text);
    $text = preg_replace('/[ìíîï]/', 'i', $text);
    $text = preg_replace('/[òóôõö]/', 'o', $text);
    $text = preg_replace('/[ùúûü]/', 'u', $text);
    $text = preg_replace('/[ñ]/', 'n', $text);
    $text = preg_replace('/[ç]/', 'c', $text);
    $text = preg_replace('/[^a-z0-9\s-]/', '', $text);
    $text = preg_replace('/[\s-]+/', '-', $text);
    return trim($text, '-');
}

// Funzione per sanitizzare input
function sanitizeInput($input) {
    return htmlspecialchars(trim($input), ENT_QUOTES, 'UTF-8');
}

// Funzione per troncare testo
function truncateText($text, $length = 150) {
    if (strlen($text) <= $length) return $text;
    return substr($text, 0, strrpos(substr($text, 0, $length), ' ')) . '...';
}

// Funzione per formattare date in italiano
function formatItalianDate($date) {
    $months = [
        '01' => 'gennaio', '02' => 'febbraio', '03' => 'marzo', '04' => 'aprile',
        '05' => 'maggio', '06' => 'giugno', '07' => 'luglio', '08' => 'agosto',
        '09' => 'settembre', '10' => 'ottobre', '11' => 'novembre', '12' => 'dicembre'
    ];
    
    $timestamp = strtotime($date);
    $day = date('j', $timestamp);
    $month = $months[date('m', $timestamp)];
    $year = date('Y', $timestamp);
    
    return "$day $month $year";
}

// Categorie disponibili
$categories = [
    'goc' => 'GOC - General Operator Certificate',
    'roc' => 'ROC - Restricted Operator Certificate', 
    'lrc' => 'LRC - Long Range Certificate',
    'src' => 'SRC - Short Range Certificate',
    'generale' => 'Informazioni Generali',
    'tecnologia' => 'Tecnologia GMDSS',
    'normative' => 'Normative e Aggiornamenti'
];

// Verifica login admin
function isAdminLoggedIn() {
    session_start();
    return isset($_SESSION['admin_logged_in']) && $_SESSION['admin_logged_in'] === true;
}

// Middleware per proteggere pagine admin
function requireAdminLogin() {
    if (!isAdminLoggedIn()) {
        header('Location: login.php');
        exit;
    }
}
?>