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'
]);
?>