<?php
// === BUNDLE GENERATOR ===
if (isset($_GET['bundle'])) {

    $base = __DIR__;
    $files = [];

    function collectFiles($dir, &$files) {
        $list = scandir($dir);
        foreach ($list as $f) {
            if ($f === '.' || $f === '..') continue;

            $path = $dir . '/' . $f;

            if (is_dir($path)) {
                collectFiles($path, $files);
            } else {
                if (substr($f, -5) === '.gtpx') {
                    $files[] = $path;
                }
            }
        }
    }

    collectFiles($base, $files);
    sort($files);

    echo "=== GTPX BUNDLE ===\n";
    echo "FILES: " . count($files) . "\n\n";

    foreach ($files as $file) {
        echo "=== FILE: " . str_replace($base . '/', '', $file) . " ===\n";
        echo file_get_contents($file);
        echo "\n\n";
    }

    exit;
}
$base = __DIR__;

function listFiles($dir, $level = 0) {
    $files = scandir($dir);

    foreach ($files as $file) {
        if ($file === '.' || $file === '..') continue;

        $path = $dir . '/' . $file;

        echo str_repeat('&nbsp;', $level * 4);

        if (is_dir($path)) {
            echo "<strong>$file</strong><br>";
            listFiles($path, $level + 1);
        } else {
            echo "<a href=\"?file=" . urlencode($path) . "\">$file</a><br>";
        }
    }
}

if (isset($_GET['file'])) {
    $file = $_GET['file'];

    if (file_exists($file)) {
        echo "<pre>";
        echo htmlspecialchars(file_get_contents($file));
        echo "</pre>";
        exit;
    }
}

echo "<h2>GTPX FILES</h2>";
listFiles($base);