<?php
// Incluir el archivo de configuración
require_once __DIR__ . '/../../config/config.php';

/**
 * Establece las cabeceras de seguridad, incluida la Content-Security-Policy.
 * Debe llamarse antes de cualquier salida HTML.
 */
function set_security_headers() {
    // CSP para permitir recursos solo del propio dominio y CDNs de confianza
    $csp = "default-src 'self'; "
         . "script-src 'self' https://cdn.jsdelivr.net https://code.jquery.com 'unsafe-inline'; " // unsafe-inline para scripts de bootstrap si es necesario
         . "style-src 'self' https://cdn.jsdelivr.net 'unsafe-inline'; " // unsafe-inline para estilos de bootstrap
         . "img-src 'self' data: " . BOT_BASE_URL . "; " // permitir imágenes del propio dominio, data URIs y el dominio externo
         . "font-src 'self' https://cdn.jsdelivr.net; "
         . "connect-src 'self' https://cdn.jsdelivr.net;"; // Para archivos .map de Bootstrap
    header("Content-Security-Policy: " . $csp);
    header("X-Content-Type-Options: nosniff");
    header("X-Frame-Options: DENY");
    header("X-XSS-Protection: 1; mode=block");
}


/**
 * Genera una URL absoluta para el sitio
 * 
 * @param string $path Ruta relativa
 * @return string URL completa
 */
function site_url($path = '') {
    return rtrim(BOT_BASE_URL, '/') . '/' . ltrim($path, '/');
}

/**
 * Genera una URL para los assets (CSS, JS, imágenes, etc.)
 * 
 * @param string $path Ruta relativa al archivo de asset
 * @return string URL completa al asset
 */
function asset($path) {
    return site_url('assets/' . ltrim($path, '/'));
}

/**
 * Redirige al usuario a una URL específica
 * 
 * @param string $url URL a la que redirigir
 * @param int $statusCode Código de estado HTTP (por defecto 302)
 */
function redirect($url, $statusCode = 302) {
    header('Location: ' . $url, true, $statusCode);
    exit();
}

/**
 * Obtiene la URL actual completa
 * 
 * @param string $path Ruta relativa
 * @return string URL completa
 */
function current_url() {
    $protocol = "http://";
    return $protocol . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI'];
}

/**
 * Verifica si la URL actual coincide con el patrón dado
 * 
 * @param string $pattern Patrón a verificar
 * @return bool Verdadero si coincide, falso en caso contrario
 */
function is_current_url($pattern) {
    $current = current_url();
    return (strpos($current, $pattern) !== false);
}