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

Method deleteFolder

src/FileRise/Domain/FolderModel.php:1776–1850  ·  view source on GitHub ↗

* Deletes a folder if it is empty and removes its corresponding metadata. * Also removes ownership mappings for this folder and all its descendants. */

(string $folder)

Source from the content-addressed store, hash-verified

1774 * Also removes ownership mappings for this folder and all its descendants.
1775 */
1776 public static function deleteFolder(string $folder): array
1777 {
1778 if (strtolower($folder) === 'root') {
1779 return ["error" => "Cannot delete root folder."];
1780 }
1781
1782 [$real, $relative, $err] = self::resolveFolderPath($folder, false);
1783 if ($err) {
1784 return ["error" => $err];
1785 }
1786 $storage = self::storage();
1787
1788 try {
1789 UploadModel::cleanupResumableForFolder($relative);
1790 } catch (\Throwable $e) {
1791/* ignore */
1792 }
1793
1794 // Prevent deletion if not empty.
1795 if ($storage->isLocal()) {
1796 $items = array_diff(@scandir($real) ?: [], array('.', '..'));
1797 } else {
1798 $markerName = defined('FR_REMOTE_DIR_MARKER') ? (string)FR_REMOTE_DIR_MARKER : '.filerise_keep';
1799 $items = array_values(array_filter(
1800 $storage->list($real),
1801 static function ($n) use ($markerName) {
1802 if ($n === '.' || $n === '..' || $n === '') {
1803 return false;
1804 }
1805 if ($markerName !== '' && $n === $markerName) {
1806 return false;
1807 }
1808 return true;
1809 }
1810 ));
1811 }
1812 if (count($items) > 0) {
1813 return ["error" => "Folder is not empty."];
1814 }
1815
1816 if (!$storage->isLocal()) {
1817 $markerName = defined('FR_REMOTE_DIR_MARKER') ? (string)FR_REMOTE_DIR_MARKER : '.filerise_keep';
1818 if ($markerName !== '') {
1819 $markerPath = rtrim($real, '/\\') . DIRECTORY_SEPARATOR . $markerName;
1820 $storage->delete($markerPath);
1821 }
1822 }
1823
1824 if (!$storage->delete($real)) {
1825 return ["error" => "Failed to delete folder."];
1826 }
1827
1828 // Remove metadata file (best-effort).
1829 $metadataFile = self::getMetadataFilePath($relative);
1830 if (file_exists($metadataFile)) {
1831 @unlink($metadataFile);
1832 }
1833

Callers 3

deleteFolder.phpFile · 0.45
opDeleteFolderMethod · 0.45

Calls 10

resolveFolderPathMethod · 0.95
storageMethod · 0.95
getMetadataFilePathMethod · 0.95
removeOwnerForTreeMethod · 0.95
deleteTreeMethod · 0.80
removeSubtreeMethod · 0.80
isLocalMethod · 0.45
listMethod · 0.45
deleteMethod · 0.45

Tested by

no test coverage detected