File size: 2,730 Bytes
7761409 | 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 | <?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));
}
function deleteDirectory($dir) {
if (!is_dir($dir)) return;
$files = array_diff(scandir($dir), ['.', '..']);
foreach ($files as $file) {
$path = $dir . '/' . $file;
is_dir($path) ? deleteDirectory($path) : unlink($path);
}
rmdir($dir);
}
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fileIds'])) {
$fileIds = json_decode($_POST['fileIds'], true);
if (!is_array($fileIds)) {
$fileIds = [$_POST['fileId']];
}
$metadata = loadMetadata();
$deletedCount = 0;
foreach ($fileIds as $fileId) {
foreach ($metadata['files'] as $key => $file) {
if ($file['id'] === $fileId) {
// Delete actual file or folder
if ($file['type'] === 'folder') {
if (is_dir($file['path'])) {
deleteDirectory($file['path']);
}
} else {
if (file_exists($file['path'])) {
unlink($file['path']);
}
}
// Remove from metadata
unset($metadata['files'][$key]);
$deletedCount++;
break;
}
}
}
$metadata['files'] = array_values($metadata['files']);
saveMetadata($metadata);
echo json_encode(['success' => true, 'deletedCount' => $deletedCount]);
exit;
}
// Single file delete (backward compatibility)
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['fileId'])) {
$fileId = $_POST['fileId'];
$metadata = loadMetadata();
foreach ($metadata['files'] as $key => $file) {
if ($file['id'] === $fileId) {
if ($file['type'] === 'folder') {
if (is_dir($file['path'])) {
deleteDirectory($file['path']);
}
} else {
if (file_exists($file['path'])) {
unlink($file['path']);
}
}
unset($metadata['files'][$key]);
$metadata['files'] = array_values($metadata['files']);
saveMetadata($metadata);
echo json_encode(['success' => true]);
exit;
}
}
echo json_encode(['success' => false]);
}
?> |