@@ -107,7 +107,7 @@ public function uploadEndpoint(Request $request, Response $response): Response
107
107
}
108
108
109
109
try {
110
- $ response = $ this ->saveMedia ($ response , $ file , $ user );
110
+ $ response = $ this ->saveMedia ($ response , $ file , $ user, param ( $ request , ' code ' ) );
111
111
} catch (Exception $ e ) {
112
112
$ this ->updateUserQuota ($ request , $ user ->id , $ file ->getSize (), true );
113
113
throw $ e ;
@@ -118,6 +118,7 @@ public function uploadEndpoint(Request $request, Response $response): Response
118
118
/**
119
119
* @param Request $request
120
120
* @param Response $response
121
+ * @param $code
121
122
* @return UploadedFileInterface
122
123
* @throws ValidationException
123
124
*/
@@ -182,11 +183,19 @@ protected function validateUser(Request $request, Response $response, UploadedFi
182
183
* @throws \League\Flysystem\FileExistsException
183
184
* @throws \League\Flysystem\FileNotFoundException
184
185
*/
185
- protected function saveMedia (Response $ response , UploadedFileInterface $ file , $ user )
186
+ protected function saveMedia (Response $ response , UploadedFileInterface $ file , $ user, $ code )
186
187
{
187
- do {
188
- $ code = humanRandomString ();
189
- } while ($ this ->database ->query ('SELECT COUNT(*) AS `count` FROM `uploads` WHERE `code` = ? ' , $ code )->fetch ()->count > 0 );
188
+ if ($ code === null ) {
189
+ do {
190
+ $ code = humanRandomString ();
191
+ } while ($ this ->database ->query ('SELECT COUNT(*) AS `count` FROM `uploads` WHERE `code` = ? ' , $ code )->fetch ()->count > 0 );
192
+ } else {
193
+ $ existingCodeCount = $ this ->database ->query ('SELECT COUNT(*) AS `count` FROM `uploads` WHERE `code` = ? ' , $ code )->fetch ()->count ;
194
+ if ($ existingCodeCount > 0 ) {
195
+ $ this ->json ['message ' ] = 'Custom url code already exists. ' ;
196
+ return json ($ response , $ this ->json , 409 );
197
+ }
198
+ }
190
199
191
200
$ fileInfo = pathinfo ($ file ->getClientFilename ());
192
201
$ storagePath = "$ user ->user_code / $ code. $ fileInfo [extension]" ;
0 commit comments