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

Method removeChunks

src/FileRise/Domain/UploadModel.php:1524–1569  ·  view source on GitHub ↗

* Removes the temporary chunk directory for resumable uploads. * * The folder name is expected to exactly match the "resumable_" pattern. * * @param string $folder The folder name provided (URL-decoded). * @return array Returns a status array indicating success or error. */

(string $folder)

Source from the content-addressed store, hash-verified

1522 * @return array Returns a status array indicating success or error.
1523 */
1524 public static function removeChunks(string $folder): array
1525 {
1526 $folder = urldecode($folder);
1527 if (strpos($folder, 'resumable_') === 0) {
1528 $folder = substr($folder, strlen('resumable_'));
1529 }
1530
1531 $tempFolderName = self::resumableTempFolderName($folder);
1532 if ($tempFolderName === null) {
1533 return ['error' => 'Invalid resumable identifier'];
1534 }
1535
1536 $isLocal = self::isLocalSourceType();
1537 $targetFolder = self::sanitizeFolder((string)($_POST['targetFolder'] ?? 'root'));
1538 $baseDir = self::stagingRoot($isLocal);
1539 if ($targetFolder !== '') {
1540 $baseDir = rtrim($baseDir, '/\\') . DIRECTORY_SEPARATOR
1541 . str_replace('/', DIRECTORY_SEPARATOR, $targetFolder) . DIRECTORY_SEPARATOR;
1542 }
1543 $tempDir = rtrim($baseDir, '/\\') . DIRECTORY_SEPARATOR . $tempFolderName;
1544 $hadDir = is_dir($tempDir);
1545 if ($hadDir) {
1546 if (!self::isPathWithinRoot($tempDir, $baseDir)) {
1547 return ['error' => 'Invalid temporary folder'];
1548 }
1549 self::rrmdir($tempDir);
1550 }
1551 if (is_dir($tempDir)) {
1552 return ['error' => 'Failed to remove temporary folder.'];
1553 }
1554
1555 $hasRemaining = self::cleanupResumableTempDirs($targetFolder, $isLocal, false);
1556 if (!$hasRemaining) {
1557 $data = self::loadResumableIndex();
1558 $folderKey = self::resumableFolderKey($targetFolder);
1559 if (isset($data['folders'][$folderKey])) {
1560 unset($data['folders'][$folderKey]);
1561 self::saveResumableIndex($data);
1562 }
1563 }
1564
1565 return [
1566 'success' => true,
1567 'message' => $hadDir ? 'Temporary folder removed.' : 'Temporary folder already removed.',
1568 ];
1569 }
1570
1571 /**
1572 * Force-clean any resumable_* temp folders for a target folder.

Callers 1

removeChunks.phpFile · 0.45

Calls 10

isLocalSourceTypeMethod · 0.95
sanitizeFolderMethod · 0.95
stagingRootMethod · 0.95
isPathWithinRootMethod · 0.95
rrmdirMethod · 0.95
loadResumableIndexMethod · 0.95
resumableFolderKeyMethod · 0.95
saveResumableIndexMethod · 0.95

Tested by

no test coverage detected