[]]; return json_decode(file_get_contents($metadataFile), true); } function saveMetadata($metadata) { global $metadataFile; file_put_contents($metadataFile, json_encode($metadata, JSON_PRETTY_PRINT)); } if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['folderName'])) { $folderName = basename($_POST['folderName']); // GET PARENT FOLDER - THIS IS THE FIX! $parentFolder = isset($_POST['parentFolder']) ? $_POST['parentFolder'] : 'root'; // Debug log (remove after testing) error_log("Creating folder: $folderName in parent: $parentFolder"); $metadata = loadMetadata(); // Determine parent path $parentPath = 'uploads/'; if ($parentFolder !== 'root') { // Find the parent folder's path foreach ($metadata['files'] as $file) { if ($file['id'] === $parentFolder && $file['type'] === 'folder') { $parentPath = $file['path'] . '/'; error_log("Found parent folder path: $parentPath"); break; } } } $folderPath = $parentPath . $folderName; // Handle duplicate folder names $counter = 1; $originalName = $folderName; while (file_exists($folderPath)) { $folderName = $originalName . '_' . $counter; $folderPath = $parentPath . $folderName; $counter++; } // Create the actual folder on disk if (mkdir($folderPath, 0755, true)) { // Add to metadata with correct parent folder $newFolder = [ 'id' => uniqid(), 'name' => $folderName, 'path' => $folderPath, 'type' => 'folder', 'size' => 0, 'created' => time(), 'modified' => time(), 'accessed' => time(), 'starred' => false, 'trashed' => false, 'trashedDate' => null, 'parentFolder' => $parentFolder // THIS IS CRITICAL! ]; $metadata['files'][] = $newFolder; saveMetadata($metadata); error_log("Folder created successfully with ID: " . $newFolder['id']); echo json_encode([ 'success' => true, 'folder' => $newFolder ]); exit; } else { error_log("Failed to create folder: $folderPath"); echo json_encode([ 'success' => false, 'error' => 'Failed to create folder on disk' ]); exit; } } echo json_encode([ 'success' => false, 'error' => 'Invalid request' ]); ?>