<?php
/**
 * modules/api/telemetry.php — ingesta de telemetría de la extensión KamiQuery.
 * PÚBLICO. POST JSON { event, properties }. Guarda en telemetry_events.
 */
if (!defined('IN_APP')) { die('Acceso denegado'); }

header('Content-Type: application/json; charset=utf-8');

if ($_SERVER['REQUEST_METHOD'] !== 'POST') {
    http_response_code(405);
    echo json_encode(array('error' => 'method_not_allowed'));
    exit;
}

$raw  = file_get_contents('php://input');
$data = json_decode($raw, true);
if (!is_array($data)) { $data = $_POST; }

$event = isset($data['event']) ? mb_substr(trim((string)$data['event']), 0, 120) : '';
if ($event === '') {
    http_response_code(400);
    echo json_encode(array('error' => 'no_event'));
    exit;
}

$props = isset($data['properties']) ? json_encode($data['properties'], JSON_UNESCAPED_UNICODE) : null;
if ($props !== null && strlen($props) > 60000) { $props = substr($props, 0, 60000); }
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ?? $_SERVER['REMOTE_ADDR'] ?? null;
if ($ip !== null) { $ip = mb_substr((string)$ip, 0, 45); }

$stmt = $mysqli->prepare('INSERT INTO telemetry_events (event, props, ip, created_at) VALUES (?,?,?,NOW())');
$stmt->bind_param('sss', $event, $props, $ip);
$stmt->execute();
$stmt->close();

echo json_encode(array('ok' => true));
