<?php
// Utilidades comunes.

// Escapar para HTML (evita XSS al imprimir datos de usuario).
function e(?string $s): string {
    return htmlspecialchars($s ?? '', ENT_QUOTES, 'UTF-8');
}

// Redirección segura y salida.
function redirect(string $path): void {
    header('Location: ' . $path);
    exit;
}

// Mensajes flash (se muestran una vez).
function flash_set(string $type, string $msg): void {
    $_SESSION['flash'][] = ['type' => $type, 'msg' => $msg];
}
function flash_all(): array {
    $f = $_SESSION['flash'] ?? [];
    unset($_SESSION['flash']);
    return $f;
}

// IP del cliente (respeta proxy de cPanel si existe).
function client_ip(): string {
    return $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? '0.0.0.0';
}

// Iniciales para el avatar.
function initials(string $name): string {
    $name = trim($name);
    return strtoupper(substr($name, 0, 2));
}

// Estrellas en texto (para reseñas): rating de 1..5.
function stars_html(int $rating): string {
    $rating = max(0, min(5, $rating));
    $full = str_repeat('★', $rating);
    $empty = '<span class="off">' . str_repeat('★', 5 - $rating) . '</span>';
    return $full . $empty;
}
