<?php

declare(strict_types=1);

if (PHP_SAPI !== 'cli') {
    http_response_code(404);
    exit;
}

$root = dirname(__DIR__);
$errors = [];
$warnings = [];

foreach (['pdo_mysql', 'openssl', 'mbstring', 'imap', 'dom'] as $extension) {
    if (!extension_loaded($extension)) {
        $errors[] = "Extensión PHP faltante: {$extension}";
    }
}

foreach (['config.php', 'lib/Security.php', 'lib/CryptoService.php', 'IMAPHandler.php', 'api.php'] as $file) {
    if (!is_file($root . '/' . $file)) {
        $errors[] = "Archivo faltante: {$file}";
    }
}

if (!is_file($root . '/.env')) {
    $warnings[] = 'No existe .env. Copia .env.example y configura sus valores.';
}
if (is_file($root . '/verificar_imap_outlook.php')) {
    $errors[] = 'verificar_imap_outlook.php todavía está en el directorio público.';
}
foreach (['actualizar_claves.php', 'prueba_imap.php', 'test_cifrado.php'] as $dangerous) {
    if (is_file($root . '/' . $dangerous)) {
        $errors[] = "Herramienta peligrosa todavía publicada: {$dangerous}";
    }
}

foreach ($warnings as $warning) {
    fwrite(STDOUT, "[AVISO] {$warning}\n");
}
foreach ($errors as $error) {
    fwrite(STDERR, "[ERROR] {$error}\n");
}

if ($errors) {
    exit(1);
}
fwrite(STDOUT, "[OK] Requisitos básicos de Fases 2 y 3 verificados.\n");
