<?php
// PHP script to rename folders and files for web accessibility
// Upload this as rename.php and run it in your browser

ini_set('max_execution_time', 300); // 5 minutes
echo "<h2>Folder and File Renaming Script</h2>";
echo "<pre>";

$baseDir = __DIR__;
$renamedFolders = 0;
$renamedFiles = 0;
$errors = [];

// Function to recursively get all directories, deepest first
function getAllDirectories($dir) {
    $directories = [];
    $iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS),
        RecursiveIteratorIterator::CHILD_FIRST
    );
    
    foreach ($iterator as $file) {
        if ($file->isDir()) {
            $directories[] = $file->getPathname();
        }
    }
    return $directories;
}

// Function to get all PHP files
function getAllPhpFiles($dir) {
    $phpFiles = [];
    $iterator = new RecursiveIteratorIterator(
        new RecursiveDirectoryIterator($dir, RecursiveDirectoryIterator::SKIP_DOTS)
    );
    
    foreach ($iterator as $file) {
        if ($file->isFile() && $file->getExtension() === 'php') {
            $phpFiles[] = $file->getPathname();
        }
    }
    return $phpFiles;
}

echo "Starting renaming process...\n\n";

// Step 1: Rename directories (deepest first to avoid path conflicts)
echo "=== RENAMING FOLDERS ===\n";
$directories = getAllDirectories($baseDir);

foreach ($directories as $dir) {
    $dirname = basename($dir);
    
    // Skip if already ends with Z
    if (substr($dirname, -1) !== 'Z') {
        $parentDir = dirname($dir);
        $newDirName = $dirname . 'Z';
        $newPath = $parentDir . DIRECTORY_SEPARATOR . $newDirName;
        
        if (!file_exists($newPath)) {
            if (rename($dir, $newPath)) {
                echo "✓ Renamed folder: $dirname -> $newDirName\n";
                $renamedFolders++;
            } else {
                $errors[] = "Failed to rename folder: $dir";
                echo "✗ Failed to rename folder: $dirname\n";
            }
        } else {
            echo "⚠ Skipped folder: $dirname (target exists)\n";
        }
    } else {
        echo "- Skipped folder: $dirname (already ends with Z)\n";
    }
}

echo "\n=== RENAMING PHP FILES ===\n";

// Step 2: Rename PHP files (get fresh list after folder renames)
$phpFiles = getAllPhpFiles($baseDir);

foreach ($phpFiles as $file) {
    $pathInfo = pathinfo($file);
    $newFile = $pathInfo['dirname'] . DIRECTORY_SEPARATOR . $pathInfo['filename'] . '.phz';
    
    if (rename($file, $newFile)) {
        echo "✓ Renamed file: " . basename($file) . " -> " . basename($newFile) . "\n";
        $renamedFiles++;
    } else {
        $errors[] = "Failed to rename file: $file";
        echo "✗ Failed to rename file: " . basename($file) . "\n";
    }
}

echo "\n=== SUMMARY ===\n";
echo "Folders renamed: $renamedFolders\n";
echo "Files renamed: $renamedFiles\n";

if (!empty($errors)) {
    echo "\nErrors encountered:\n";
    foreach ($errors as $error) {
        echo "• $error\n";
    }
}

echo "\nRenaming process complete!\n";
echo "You can now browse the directory structure at: " . $_SERVER['HTTP_HOST'] . "\n";
echo "</pre>";
?>