<?php
/**
 * SAC 2026 - MODULARITY PROTECTOR v1.8
 * Kernel V4.1.31 - REPARACIÓN NUCLEAR: 
 * Asegura que la respuesta sea un JSON puro y limpia cualquier salida accidental.
 */
require_once 'config.php';

// Limpieza preventiva del búfer para evitar corromper el JSON de respuesta
if (ob_get_length()) ob_clean();

try {
    checkAccess(['programmer']);
} catch (Exception $e) {
    response(["error" => "Privilegios insuficientes para modificar el Kernel"], 403);
}

// Usamos la variable global pre-decodificada por config.php
$data = $REQUEST_DATA;

if (!$data || !isset($data['moduleId']) || !isset($data['isActive'])) {
    response(["error" => "Datos de entrada inválidos o incompletos"], 400);
}

try {
    $id = $data['moduleId'];
    $active = $data['isActive'] ? 1 : 0;

    $stmt = $pdo->prepare("UPDATE system_modules SET is_active = ? WHERE id = ?");
    $stmt->execute([$active, $id]);
    
    $statusText = $active ? 'HABILITADO' : 'DESACTIVADO';
    logSystemAction("MODULARIDAD V4.1.31: Módulo [$id] marcado como $statusText", "SISTEMA");
    
    // Respuesta inmediata y cierre de flujo
    response([
        "success" => true, 
        "status" => $statusText,
        "moduleId" => $id,
        "isActive" => (bool)$active
    ]);

} catch (PDOException $e) {
    response(["error" => "Fallo de persistencia en DB: " . $e->getMessage()], 500);
}
?>