MCPcopy Create free account
hub / github.com/error311/FileRise / deleteFilesPermanent

Method deleteFilesPermanent

src/FileRise/Domain/FileModel.php:1459–1521  ·  view source on GitHub ↗
(string $folder, array $files)

Source from the content-addressed store, hash-verified

1457 }
1458
1459 public static function deleteFilesPermanent(string $folder, array $files): array
1460 {
1461 $errors = [];
1462 $deleted = [];
1463 $storage = self::storage();
1464
1465 list($uploadDir, $err) = self::resolveFolderPath($folder, false);
1466 if ($err) {
1467 return ['error' => $err];
1468 }
1469
1470 $uploadDir = rtrim($uploadDir, '/\\') . DIRECTORY_SEPARATOR;
1471 $safeFileNamePattern = REGEX_FILE_NAME;
1472
1473 foreach ($files as $fileName) {
1474 $originalName = basename(trim((string)$fileName));
1475 $basename = $originalName;
1476
1477 if ($basename === '') {
1478 $errors[] = 'Empty file name.';
1479 continue;
1480 }
1481
1482 if (!preg_match($safeFileNamePattern, $basename)) {
1483 $errors[] = "$basename has an invalid name.";
1484 continue;
1485 }
1486
1487 $filePath = $uploadDir . $basename;
1488
1489 if ($storage->stat($filePath) !== null) {
1490 if (!$storage->delete($filePath)) {
1491 $errors[] = "Failed to delete {$basename}.";
1492 continue;
1493 }
1494 }
1495
1496 $deleted[] = $basename;
1497
1498 // Remove from folder metadata if present
1499 $metadataFile = self::getMetadataFilePath($folder);
1500 if (file_exists($metadataFile)) {
1501 $meta = json_decode(file_get_contents($metadataFile), true);
1502 if (is_array($meta) && isset($meta[$basename])) {
1503 unset($meta[$basename]);
1504 @file_put_contents($metadataFile, json_encode($meta, JSON_PRETTY_PRINT), LOCK_EX);
1505 }
1506 }
1507 }
1508
1509 if ($errors && !$deleted) {
1510 return ['error' => implode('; ', $errors)];
1511 }
1512
1513 if ($errors) {
1514 return [
1515 'error' => implode('; ', $errors),
1516 'success' => 'Deleted: ' . implode(', ', $deleted),

Callers 1

deleteFileMethod · 0.80

Calls 5

storageMethod · 0.95
resolveFolderPathMethod · 0.95
getMetadataFilePathMethod · 0.95
statMethod · 0.45
deleteMethod · 0.45

Tested by

no test coverage detected