<?php
// Descarga protegida. Premium: exige licencia del plugin. Free: pública.
require_once __DIR__ . '/../includes/init.php';
require_once __DIR__ . '/../includes/plugins.php';

$slug    = $_GET['plugin']  ?? '';
$edition = $_GET['edition'] ?? '';
$version = $_GET['version'] ?? '';

if (!in_array($edition, ['free', 'premium'], true)) { http_response_code(400); exit('Petición inválida.'); }

// La build se busca en el manifiesto → el nombre de archivo NUNCA viene del usuario.
$build = plugin_build_find($slug, $edition, $version);
if (!$build) { http_response_code(404); exit('Build no encontrada.'); }

if ($edition === 'premium') {
    require_login();
    if (!user_has_license((int)$_SESSION['uid'], $slug)) {
        http_response_code(403);
        exit('No tienes una licencia Premium activa de este plugin.');
    }
    $path = APP_ROOT . '/builds_protegidos/' . $slug . '/' . $build['file'];
} else {
    $path = APP_ROOT . '/' . $slug . '/descargas/' . $build['file'];
}

if (!is_file($path)) { http_response_code(404); exit('Archivo no disponible.'); }

// Si hay sesión, registra la descarga para que salga en "Mis plugins".
if (is_logged_in()) {
    record_download((int)$_SESSION['uid'], $slug, $edition, $build['version']);
}

header('Content-Type: application/java-archive');
header('Content-Disposition: attachment; filename="' . basename($build['file']) . '"');
header('Content-Length: ' . filesize($path));
header('X-Content-Type-Options: nosniff');
header('Cache-Control: private, no-store');
readfile($path);
exit;
