<?php
// PARCHE MANTENIMIENTO NICC
error_reporting(E_ALL);
ini_set('display_errors', 1);

$RUTA = '/home4/systeng3/public_html';
$DEPTH = 3;

echo '<!DOCTYPE html><html><head><meta charset="UTF-8"><title>Parche NICC</title>';
echo '<style>body{font-family:monospace;background:#1a1a2e;color:#eee;padding:20px}';
echo '.ok{color:#6bcb77}.err{color:#ff6b6b}.info{color:#4d96ff}pre{background:#16213e;padding:20px;border-radius:8px}</style>';
echo '</head><body><h1>Parche Mantenimiento NICC</h1><pre>';

echo "Fecha: " . date('Y-m-d H:i:s') . "\n";
echo "Buscando en: $RUTA\n\n";

$sitios = array();
nicc_buscar($RUTA, 0, $DEPTH, $sitios);

echo "Sitios encontrados: " . count($sitios) . "\n\n";

if (count($sitios) == 0) {
    echo "<span class='err'>No se encontraron sitios DokuWiki</span>\n";
    echo "</pre></body></html>";
    exit;
}

$ok = 0;
$fail = 0;

foreach ($sitios as $sitio) {
    echo "--- $sitio ---\n";

    $doku = $sitio . '/doku.php';
    $backup = $sitio . '/doku.php.backup-pre-mantenimiento';
    $flag = $sitio . '/mantenimiento.flag';
    $html = $sitio . '/mantenimiento.html';
    $htmlOrigen = dirname(__FILE__) . '/mantenimiento.html';

    if (!file_exists($backup)) {
        if (copy($doku, $backup)) {
            echo "  <span class='info'>Backup creado</span>\n";
        } else {
            echo "  <span class='err'>Error backup</span>\n";
            $fail++;
            continue;
        }
    } else {
        echo "  <span class='info'>Backup existe</span>\n";
    }

    $codigo = nicc_codigo();
    if (file_put_contents($doku, $codigo)) {
        echo "  <span class='info'>doku.php OK</span>\n";
    } else {
        echo "  <span class='err'>Error doku.php</span>\n";
        $fail++;
        continue;
    }

    if (file_exists($htmlOrigen)) {
        copy($htmlOrigen, $html);
        echo "  <span class='info'>HTML OK</span>\n";
    }

    file_put_contents($flag, date('Y-m-d H:i:s'));
    echo "  <span class='ok'>LISTO</span>\n";
    $ok++;
}

echo "\n=== RESUMEN ===\n";
echo "OK: $ok | Errores: $fail\n";
if ($ok > 0) echo "\n<span class='ok'>MANTENIMIENTO ACTIVADO</span>\n";
echo "</pre></body></html>";

function nicc_buscar($ruta, $nivel, $max, &$lista) {
    if ($nivel > $max) return;
    if (!is_dir($ruta)) return;

    if (file_exists($ruta . '/doku.php') && file_exists($ruta . '/inc/init.php')) {
        $lista[] = $ruta;
        return;
    }

    $items = @scandir($ruta);
    if (!$items) return;

    foreach ($items as $item) {
        if ($item == '.' || $item == '..') continue;
        $full = $ruta . '/' . $item;
        if (is_dir($full) && !is_link($full)) {
            nicc_buscar($full, $nivel + 1, $max, $lista);
        }
    }
}

function nicc_codigo() {
    return '<?php
if (file_exists(__DIR__ . "/mantenimiento.flag")) {
    http_response_code(503);
    header("Content-Type: text/html; charset=UTF-8");
    $h = __DIR__ . "/mantenimiento.html";
    if (file_exists($h)) { readfile($h); } else { echo "<h1>Mantenimiento</h1>"; }
    exit;
}
$b = __DIR__ . "/doku.php.backup-pre-mantenimiento";
if (file_exists($b)) { include $b; } else { die("Error"); }
';
}
