Skip to content

Commit ce4b859

Browse files
committed
Use slug instead of preg_replace
1 parent a2c390b commit ce4b859

File tree

4 files changed

+44
-14
lines changed

4 files changed

+44
-14
lines changed

src/Controllers/FolderController.php

Lines changed: 14 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
namespace UniSharp\LaravelFilemanager\Controllers;
44

5+
use Illuminate\Support\Str;
6+
57
class FolderController extends LfmController
68
{
79
/**
@@ -42,13 +44,20 @@ public function getAddfolder()
4244
try {
4345
if ($folder_name === null || $folder_name == '') {
4446
return $this->helper->error('folder-name');
45-
} elseif ($this->lfm->setName($folder_name)->exists()) {
47+
}
48+
if ($this->lfm->setName($folder_name)->exists()) {
4649
return $this->helper->error('folder-exist');
47-
} elseif (config('lfm.alphanumeric_directory') && preg_match('/[^\w-]/i', $folder_name)) {
48-
return $this->helper->error('folder-alnum');
49-
} else {
50-
$this->lfm->setName($folder_name)->createFolder();
5150
}
51+
52+
if (config('lfm.alphanumeric_directory')) {
53+
if (config('lfm.convert_to_alphanumeric')) {
54+
$folder_name = Str::slug($folder_name);
55+
} elseif (preg_match('/[^\w\-_]/i', $folder_name)) {
56+
return $this->helper->error('folder-alnum');
57+
}
58+
}
59+
60+
$this->lfm->setName($folder_name)->createFolder();
5261
} catch (\Exception $e) {
5362
return $e->getMessage();
5463
}

src/Controllers/RenameController.php

Lines changed: 25 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
namespace UniSharp\LaravelFilemanager\Controllers;
44

5+
use Illuminate\Support\Str;
56
use UniSharp\LaravelFilemanager\Events\ImageIsRenaming;
67
use UniSharp\LaravelFilemanager\Events\ImageWasRenamed;
78
use UniSharp\LaravelFilemanager\Events\FolderIsRenaming;
@@ -26,18 +27,34 @@ public function getRename()
2627
}
2728
}
2829

29-
if (config('lfm.alphanumeric_directory') && preg_match('/[^\w-]/i', $new_name)) {
30-
return parent::error('folder-alnum');
31-
// return parent::error('file-alnum');
32-
} elseif ($this->lfm->setName($new_name)->exists()) {
33-
return parent::error('rename');
34-
}
30+
if ($is_directory && config('lfm.alphanumeric_directory')) {
31+
if (config('lfm.convert_to_alphanumeric')) {
32+
$new_name = Str::slug($new_name);
33+
}
3534

36-
if (! $is_directory) {
35+
if (preg_match('/[^\w\-_]/i', $new_name)) {
36+
return parent::error('folder-alnum');
37+
}
38+
}else if(!$is_directory && config('lfm.alphanumeric_filename')){
39+
// Remove extension for checks to alphanum characters
3740
$extension = $old_file->extension();
3841
if ($extension) {
39-
$new_name = str_replace('.' . $extension, '', $new_name) . '.' . $extension;
42+
$new_name = str_replace('.' . $extension, '', $new_name);
43+
}
44+
45+
if (config('lfm.convert_to_alphanumeric')) {
46+
$new_name = Str::slug($new_name);
4047
}
48+
49+
if (preg_match('/[^\w\-_]/i', $new_name)) {
50+
return parent::error('file-alnum');
51+
}
52+
53+
$new_name .= ($extension) ? '.' . $extension : null;
54+
}
55+
56+
if ($this->lfm->setName($new_name)->exists()) {
57+
return parent::error('rename');
4158
}
4259

4360
$new_file = $this->lfm->setName($new_name)->path('absolute');

src/LfmPath.php

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
namespace UniSharp\LaravelFilemanager;
44

55
use Illuminate\Container\Container;
6+
use Illuminate\Support\Str;
67
use Intervention\Image\Facades\Image;
78
use Symfony\Component\HttpFoundation\File\UploadedFile;
89
use UniSharp\LaravelFilemanager\Events\ImageIsUploading;
@@ -276,7 +277,7 @@ private function getNewName($file)
276277
if (config('lfm.rename_file') === true) {
277278
$new_file_name = uniqid();
278279
} elseif (config('lfm.alphanumeric_filename') === true) {
279-
$new_file_name = preg_replace('/[^A-Za-z0-9\-\']/', '_', $new_file_name);
280+
$new_file_name = Str::slug($new_file_name);
280281
}
281282

282283
$extension = $file->getClientOriginalExtension();

src/config/lfm.php

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,9 @@
9898

9999
'alphanumeric_directory' => false,
100100

101+
// When creating folder or renaming folder/file, automatically convert to alphanumeric instead of error
102+
'convert_to_alphanumeric' => false,
103+
101104
'should_validate_size' => false,
102105

103106
'should_validate_mime' => false,

0 commit comments

Comments
 (0)