<?php

// Configurar la zona horaria a Madrid
date_default_timezone_set("Europe/Madrid");

//header("Access-Control-Allow-Headers: Content-Type");

// Permitir acceso desde cualquier origen
header("Access-Control-Allow-Origin: *");
header("Access-Control-Allow-Methods: GET");
header("Access-Control-Allow-Headers: Content-Type, Authorization");
header("Content-Type: application/json"); // Importante para respuestas JSON

// Rutas del servidor
$documentRoot = realpath(__DIR__ . '/../..');
$directoryPath = $documentRoot . "/assets/cstvideo/";
$logFile = $documentRoot . "/php/api/log_generico.json";

// Obtener el nombre del video desde la URL
$video = isset($_GET['video']) ? basename($_GET['video']) : 'desconocido'; // basename() evita ataques de path traversal

$dist = isset($_GET['dist']) ? $_GET['dist'] : "generico";

// Verificar si el archivo de video existe
$videoPath = $directoryPath . $video;
if (!file_exists($videoPath)) {
    http_response_code(404);
    echo json_encode(["error" => "El archivo de video no existe"]);
    exit();
}

$uniqueNumber = round(microtime(true) * 1000);

// Obtener la IP del usuario
$ip = $_SERVER['REMOTE_ADDR']; 

/*$latitud = "";
$longitud = "";
$pais = "";
$region = "";
$ciudad = "";

// Consultar la API de geoplugin
$url = "http://www.geoplugin.net/json.gp?ip=$ip";
$response = @file_get_contents($url);

if ($response !== false) {
    $data = json_decode($response, true);
    if (isset($data['geoplugin_status']) && $data['geoplugin_status'] == 200) {
        $latitud = $data['geoplugin_latitude'] ?? "";
        $longitud = $data['geoplugin_longitude'] ?? "";
        $pais = $data['geoplugin_countryName'] ?? "";
        $region = $data['geoplugin_region'] ?? "";
        $ciudad = $data['geoplugin_city'] ?? "";
    }
}*/

// Inicializar lat/long con lo que venga desde JS
$latitud  = $data['latitud']  ?? null;
$longitud = $data['longitud'] ?? null;

// Consultar la API de geoplugin
$url = "http://www.geoplugin.net/json.gp?ip=$ip";
$response = @file_get_contents($url);

if ($response !== false) {
    $geoData = json_decode($response, true);
    if (isset($geoData['geoplugin_status']) && $geoData['geoplugin_status'] == 200) {
        $latitud  = $geoData['geoplugin_latitude']  ?? $latitud;
        $longitud = $geoData['geoplugin_longitude'] ?? $longitud;
    }
}

if ($latitud  == null) $latitud = 41.5568023;
if ($longitud  == null) $longitud = 2.05310186385176;

// Mostrar los datos obtenidos
//echo "País: $pais <br> Región: $region <br> Ciudad: $ciudad <br> Latitud: $latitud <br> Longitud: $longitud";

// Datos a registrar en el log
//    "plataforma" => PHP_OS,

$logEntry = [
    "uniqueNumber" => $uniqueNumber,
    "video" => $video,
    "ip" => $ip,
    "sessionId" => $ip,
    "dist" => $dist,
    "userAgent" => $_SERVER['HTTP_USER_AGENT'],
    "idioma" => $_SERVER['HTTP_ACCEPT_LANGUAGE'],
    "timestamp" => round(microtime(true) * 1000),
    "fechaLocal" => date("Y-m-d H:i:s"),
    "latitud" => $latitud,
    "longitud" => $longitud,
];

// Leer el archivo de logs actual (manejo seguro)
$logs = [];
if (file_exists($logFile)) {
    $jsonData = file_get_contents($logFile);
    if ($jsonData !== false) {
        $logs = json_decode($jsonData, true);
        if (!is_array($logs)) {
            $logs = [];
        }
    }
}

// Agregar el nuevo registro
$logs[] = $logEntry;

// Guardar el archivo actualizado
if (file_put_contents($logFile, json_encode($logs, JSON_PRETTY_PRINT)) === false) {
    http_response_code(500);
    echo json_encode(["error" => "No se pudo escribir en el archivo de log"]);
    exit();
}

// Redirigir al video real
//header("Location: /assets/cstvideo/$video");
header("Location: https://pefir.cst.cat/assets/cstvideo/$video");
//header("Location: ./ver_video.html?video=$video");
exit();
?>
