Skip to content

Commit b1ba9d7

Browse files
committed
Added ability to rename file on duplicate
Instead of overwrite or displaying an error to the user.
1 parent a2c390b commit b1ba9d7

File tree

2 files changed

+25
-5
lines changed

2 files changed

+25
-5
lines changed

src/LfmPath.php

Lines changed: 23 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -273,19 +273,37 @@ private function getNewName($file)
273273
$new_file_name = $this->helper
274274
->translateFromUtf8(trim(pathinfo($file->getClientOriginalName(), PATHINFO_FILENAME)));
275275

276+
$extension = $file->getClientOriginalExtension();
277+
278+
276279
if (config('lfm.rename_file') === true) {
277280
$new_file_name = uniqid();
278281
} elseif (config('lfm.alphanumeric_filename') === true) {
279282
$new_file_name = preg_replace('/[^A-Za-z0-9\-\']/', '_', $new_file_name);
280283
}
281-
282-
$extension = $file->getClientOriginalExtension();
283-
284284
if ($extension) {
285-
$new_file_name .= '.' . $extension;
285+
$new_file_name_with_extention = $new_file_name . '.' . $extension;
286+
}
287+
if (config('lfm.rename_duplicates') === true) {
288+
$counter = 1;
289+
$file_name_without_extentions = $new_file_name;
290+
while ($this->setName(($extension) ? $new_file_name_with_extention : $new_file_name)->exists()) {
291+
292+
if (config('lfm.alphanumeric_filename') === true) {
293+
$suffix = '_'.$counter;
294+
} else {
295+
$suffix = " ({$counter})";
296+
}
297+
$new_file_name = $file_name_without_extentions.$suffix;
298+
299+
if ($extension) {
300+
$new_file_name_with_extention = $new_file_name . '.' . $extension;
301+
}
302+
$counter++;
303+
}
286304
}
287305

288-
return $new_file_name;
306+
return ($extension) ? $new_file_name_with_extention : $new_file_name;
289307
}
290308

291309
private function saveFile($file, $new_file_name)

src/config/lfm.php

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -94,6 +94,8 @@
9494

9595
'rename_file' => false,
9696

97+
'rename_duplicates' => false,
98+
9799
'alphanumeric_filename' => false,
98100

99101
'alphanumeric_directory' => false,

0 commit comments

Comments
 (0)