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

Method deleteFiles

src/FileRise/Domain/FileModel.php:820–991  ·  view source on GitHub ↗

* Deletes (i.e. moves to Trash) the specified files from a given folder * and updates metadata accordingly. * * @param string $folder The folder (or "root") from which files are deleted. * @param array $files The array of file names to delete. * @return array An associative array with a "success" or "error" message. */

($folder, $files)

Source from the content-addressed store, hash-verified

818 * @return array An associative array with a "success" or "error" message.
819 */
820 public static function deleteFiles($folder, $files)
821 {
822 $errors = [];
823 $storage = self::storage();
824 $isLocal = $storage->isLocal();
825 $skipTrash = class_exists('SourceContext') ? SourceContext::isTrashDisabled() : false;
826
827 list($uploadDir, $err) = self::resolveFolderPath($folder, false);
828 if ($err) {
829 return ["error" => $err];
830 }
831 $uploadDir .= DIRECTORY_SEPARATOR;
832
833 // Setup the Trash folder and metadata.
834 $trashDir = '';
835 $trashMetadataFile = '';
836 $trashData = [];
837 if (!$skipTrash) {
838 $trashDir = rtrim(self::trashRoot(), '/\\') . DIRECTORY_SEPARATOR;
839 if ($storage->stat($trashDir) === null) {
840 if (!$storage->mkdir($trashDir, 0755, true)) {
841 $detail = self::adapterErrorDetail($storage);
842 $msg = $detail !== ''
843 ? ("Failed to create Trash folder: " . $detail)
844 : "Failed to create Trash folder. Check source permissions or enable delete permanently (skip trash) for this source.";
845 return ["error" => $msg];
846 }
847 }
848 $trashMetadataFile = $trashDir . "trash.json";
849 $trashJson = $storage->read($trashMetadataFile);
850 if ($trashJson !== false) {
851 $trashData = json_decode($trashJson, true);
852 }
853 if (!is_array($trashData)) {
854 $trashData = [];
855 }
856 }
857
858 // Load folder metadata if available.
859 $metadataFile = self::getMetadataFilePath($folder);
860 $folderMetadata = file_exists($metadataFile)
861 ? json_decode(file_get_contents($metadataFile), true)
862 : [];
863 if (!is_array($folderMetadata)) {
864 $folderMetadata = [];
865 }
866
867 $movedToTrash = [];
868 $deletedPermanent = [];
869 $safeFileNamePattern = REGEX_FILE_NAME;
870
871 foreach ($files as $fileName) {
872 $basename = basename(trim($fileName));
873
874 // Validate the file name.
875 if (!preg_match($safeFileNamePattern, $basename)) {
876 $errors[] = "$basename has an invalid name.";
877 continue;

Callers 3

deleteFiles.phpFile · 0.45
deleteMethod · 0.45
opDeleteFilesMethod · 0.45

Calls 15

storageMethod · 0.95
resolveFolderPathMethod · 0.95
trashRootMethod · 0.95
adapterErrorDetailMethod · 0.95
getMetadataFilePathMethod · 0.95
isTrashDisabledMethod · 0.80
isLocalMethod · 0.45
statMethod · 0.45
mkdirMethod · 0.45
readMethod · 0.45
deleteMethod · 0.45

Tested by

no test coverage detected