<?php
/**
 * inc/vars.php — enrutado por URL amigable + saneo de entrada.
 *
 * No usamos index.php?module=… : la ruta sale del PATH de la URL. Ejemplos:
 *   /chat                -> module=chat   section=index
 *   /chat/history        -> module=chat   section=history
 *   /chat/12             -> module=chat   section=index   id=12
 *   /code                -> module=code   section=index
 *   /register/<token>    -> module=register  (token en $_segments[1])
 *
 * Todo se sanea con whitelist antes de que cualquier módulo lo use.
 */
if (!defined('IN_APP')) { die('Acceso denegado'); }

/** Segmento seguro: minúsculas, letras/números/guion/guion bajo; nunca empieza por '_'. */
function _clean_segment($value) {
    $value = strtolower(trim((string)$value));
    if ($value === '' || $value[0] === '_') return '';
    return preg_match('/^[a-z0-9_-]+$/', $value) ? $value : '';
}

// Path de la petición, sin query, decodificado y troceado.
$_raw_path = parse_url($_SERVER['REQUEST_URI'] ?? '/', PHP_URL_PATH) ?: '/';
$_raw_path = trim(urldecode($_raw_path), '/');
$_segments = array();
if ($_raw_path !== '') {
    foreach (explode('/', $_raw_path) as $seg) {
        $clean = _clean_segment($seg);
        if ($clean !== '') $_segments[] = $clean;
    }
}
$_path = implode('/', $_segments);   // ruta saneada (para reconstruir enlaces)

// module / section / id a partir de los segmentos.
$_module  = $_segments[0] ?? 'home';
$_section = 'index';
$_id      = '';

if (isset($_segments[1])) {
    if (ctype_digit($_segments[1])) {
        $_id = (int)$_segments[1];
    } else {
        $_section = $_segments[1];
        if (isset($_segments[2]) && ctype_digit($_segments[2])) {
            $_id = (int)$_segments[2];
        }
    }
}

// Parámetros que sí viajan como query (no son ruta).
$_slug = isset($_GET['slug']) && preg_match('/^[a-z0-9_-]+$/i', (string)$_GET['slug']) ? $_GET['slug'] : '';
$_pag  = isset($_GET['pag'])  && ctype_digit((string)$_GET['pag']) ? max(1, (int)$_GET['pag']) : 1;
