File size: 2,753 Bytes
80a05f9 | 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 | <?php
session_start();
$metadataFile = 'data/files.json';
function loadMetadata() {
global $metadataFile;
if (!file_exists($metadataFile)) return ['files' => []];
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'
]);
?> |