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

Method renameFile

src/FileRise/Domain/FileModel.php:1153–1202  ·  view source on GitHub ↗

* Renames a file within a given folder and updates folder metadata. * * @param string $folder The folder where the file is located (or "root" for the base directory). * @param string $oldName The current name of the file. * @param string $newName The new name for the file. * @return array An associative array with either "success" (and newName) or "error" message. */

($folder, $oldName, $newName)

Source from the content-addressed store, hash-verified

1151 * @return array An associative array with either "success" (and newName) or "error" message.
1152 */
1153 public static function renameFile($folder, $oldName, $newName)
1154 {
1155 $storage = self::storage();
1156 list($directory, $err) = self::resolveFolderPath($folder, false);
1157 if ($err) {
1158 return ["error" => $err];
1159 }
1160 $directory .= DIRECTORY_SEPARATOR;
1161
1162 // Sanitize file names.
1163 $oldName = basename(trim($oldName));
1164 $newName = basename(trim($newName));
1165
1166 // Validate file names using REGEX_FILE_NAME.
1167 if (!preg_match(REGEX_FILE_NAME, $oldName) || !UploadNamePolicy::isAllowedForWrite($newName)) {
1168 return ["error" => "Invalid file name."];
1169 }
1170
1171 $oldPath = $directory . $oldName;
1172 $newPath = $directory . $newName;
1173
1174 // Helper: Generate a unique file name if the new name already exists.
1175 if ($storage->stat($newPath) !== null) {
1176 $newName = self::getUniqueFileName($directory, $newName);
1177 $newPath = $directory . $newName;
1178 }
1179
1180 // Check that the old file exists.
1181 if ($storage->stat($oldPath) === null) {
1182 return ["error" => "File does not exist"];
1183 }
1184
1185 // Perform the rename.
1186 if ($storage->move($oldPath, $newPath)) {
1187 // Update the metadata file.
1188 $metadataFile = self::getMetadataFilePath($folder);
1189
1190 if (file_exists($metadataFile)) {
1191 $metadata = json_decode(file_get_contents($metadataFile), true);
1192 if (isset($metadata[$oldName])) {
1193 $metadata[$newName] = $metadata[$oldName];
1194 unset($metadata[$oldName]);
1195 file_put_contents($metadataFile, json_encode($metadata, JSON_PRETTY_PRINT), LOCK_EX);
1196 }
1197 }
1198 return ["success" => "File renamed successfully", "newName" => $newName];
1199 } else {
1200 return ["error" => "Error renaming file"];
1201 }
1202 }
1203
1204 /*
1205 * Save a file’s contents *and* record its metadata, including who uploaded it.

Callers 4

renderFileTableFunction · 0.45
renderGalleryViewFunction · 0.45
renameFile.phpFile · 0.45
opRenameFileMethod · 0.45

Calls 7

storageMethod · 0.95
resolveFolderPathMethod · 0.95
getUniqueFileNameMethod · 0.95
getMetadataFilePathMethod · 0.95
isAllowedForWriteMethod · 0.80
statMethod · 0.45
moveMethod · 0.45

Tested by

no test coverage detected