We could not synchronize checks via GitHub's checks API since Scrutinizer's GitHub App is not installed for this repository.
Conditions | 34 |
Paths | 2144 |
Total Lines | 154 |
Code Lines | 92 |
Lines | 50 |
Ratio | 32.47 % |
Changes | 0 |
Small methods make your code easier to understand, in particular if combined with a good name. Besides, if your method is small, finding a good name is usually much easier.
For example, if you find yourself adding comments to a method's body, this is usually a good sign to extract the commented part to a new method, and use the comment as a starting point when coming up with a good name for this new method.
Commonly applied refactorings include:
If many parameters/temporary variables are present:
1 | <?php |
||
208 | public function uploadImageToDisk($value, $attribute_name, $disk, $destination_path, $variations = null) |
||
209 | { |
||
210 | if (! $variations || ! is_array($variations)) { |
||
211 | $variations = ['original' => null, 'thumb' => [150, 150]]; |
||
212 | } |
||
213 | |||
214 | //Needed for the original image |
||
215 | if (! array_key_exists('original', $variations)) { |
||
216 | $variations['original'] = null; |
||
217 | } |
||
218 | |||
219 | //Needed for admin thumbnails |
||
220 | if (! array_key_exists('thumb', $variations)) { |
||
221 | $variations['thumb'] = [150, 150]; |
||
222 | } |
||
223 | |||
224 | $request = \Request::instance(); |
||
225 | |||
226 | //We need to setup the disk paths as they're handled differently |
||
227 | //depending if you need a public path or internal storage |
||
228 | $disk_config = config('filesystems.disks.'.$disk); |
||
229 | $disk_root = $disk_config['root']; |
||
230 | |||
231 | //if the disk is public, we need to know the public path |
||
232 | View Code Duplication | if ($disk_config['visibility'] == 'public') { |
|
233 | $public_path = str_replace(public_path(), '', $disk_root); |
||
234 | } else { |
||
235 | $public_path = $disk_root; |
||
236 | } |
||
237 | |||
238 | // if a new file is uploaded, delete the file from the disk |
||
239 | if ( ($request->hasFile($attribute_name) || starts_with($value, 'data:image')) && $this->{$attribute_name} ) { |
||
240 | View Code Duplication | foreach ($variations as $variant => $dimensions) { |
|
241 | $variant_name = str_replace('-original', '-'.$variant, $this->{$attribute_name}); |
||
242 | \Storage::disk($disk)->delete($variant_name); |
||
243 | } |
||
244 | $this->attributes[$attribute_name] = null; |
||
245 | } |
||
246 | |||
247 | // if the file input is empty, delete the file from the disk |
||
248 | if (empty($value)) { |
||
249 | View Code Duplication | foreach ($variations as $variant => $dimensions) { |
|
250 | $variant_name = str_replace('-original', '-'.$variant, $this->{$attribute_name}); |
||
251 | \Storage::disk($disk)->delete($variant_name); |
||
252 | } |
||
253 | return $this->attributes[$attribute_name] = null; |
||
254 | } |
||
255 | |||
256 | // if a new file is uploaded, store it on disk and its filename in the database |
||
257 | if ($request->hasFile($attribute_name) && $request->file($attribute_name)->isValid()) { |
||
258 | |||
259 | // 1. Generate a new file name |
||
260 | $file = $request->file($attribute_name); |
||
261 | $new_file_name = md5($file->getClientOriginalName().time()); |
||
262 | $new_file = $new_file_name.'.'.$file->getClientOriginalExtension(); |
||
263 | |||
264 | // 2. Move the new file to the correct path |
||
265 | $file_path = $file->storeAs($destination_path, $new_file, $disk); |
||
266 | $image_variations = []; |
||
267 | |||
268 | // 3. but only if they have the ability to crop/handle images |
||
269 | if (class_exists('\Intervention\Image\ImageManagerStatic')) { |
||
270 | $img = \Intervention\Image\ImageManagerStatic::make($file); |
||
271 | foreach ($variations as $variant => $dimensions) { |
||
272 | |||
273 | $variant_name = $new_file_name.'-'.$variant.'.'.$file->getClientOriginalExtension(); |
||
274 | $variant_file = $destination_path.'/'.$variant_name; |
||
275 | |||
276 | View Code Duplication | if ($dimensions) { |
|
277 | $width = $dimensions[0]; |
||
278 | $height = $dimensions[1]; |
||
279 | |||
280 | if ($img->width() > $width || $img->height() > $height) { |
||
281 | $img->resize($width, $height, function ($constraint) { |
||
282 | $constraint->aspectRatio(); |
||
283 | }) |
||
284 | ->save($disk_root.'/'.$variant_file); |
||
285 | } else { |
||
286 | $img->save($disk_root.'/'.$variant_file); |
||
287 | } |
||
288 | |||
289 | $image_variations[$variant] = $public_path.'/'.$variant_file; |
||
290 | |||
291 | } else { |
||
292 | $image_variations['original'] = $public_path.'/'.$file_path; |
||
293 | } |
||
294 | } |
||
295 | } else { |
||
296 | $image_variations['original'] = $public_path.'/'.$file_path; |
||
297 | $image_variations['thumb'] = $public_path.'/'.$file_path; |
||
298 | } |
||
299 | |||
300 | // 3. Save the complete path to the database |
||
301 | $this->attributes[$attribute_name] = $image_variations['original']; |
||
302 | |||
303 | } elseif( starts_with($value, 'data:image') ) { |
||
304 | |||
305 | $img = \Image::make($value); |
||
306 | $new_file_name = md5($value.time()); |
||
307 | |||
308 | if( !\Illuminate\Support\Facades\File::exists($destination_path) ){ |
||
309 | \Illuminate\Support\Facades\File::makeDirectory($destination_path, 0775, true); |
||
310 | } |
||
311 | |||
312 | foreach ($variations as $variant => $dimensions) { |
||
313 | |||
314 | switch( $img->mime() ) { |
||
315 | case 'image/bmp': |
||
316 | case 'image/ief': |
||
317 | case 'image/jpeg': |
||
318 | case 'image/pipeg': |
||
319 | case 'image/tiff': |
||
320 | case 'image/x-jps': |
||
321 | $extension = '.jpg'; |
||
322 | break; |
||
323 | case 'image/gif': |
||
324 | $extension = '.gif'; |
||
325 | break; |
||
326 | case 'image/x-icon': |
||
327 | case 'image/png': |
||
328 | $extension = '.png'; |
||
329 | break; |
||
330 | default: |
||
331 | $extension = '.jpg'; |
||
332 | break; |
||
333 | } |
||
334 | |||
335 | $variant_name = $new_file_name.'-'.$variant.$extension; |
||
336 | $variant_file = $destination_path.'/'.$variant_name; |
||
337 | |||
338 | View Code Duplication | if ($dimensions) { |
|
339 | $width = $dimensions[0]; |
||
340 | $height = $dimensions[1]; |
||
341 | |||
342 | if ($img->width() > $width || $img->height() > $height) { |
||
343 | $img->resize($width, $height, function ($constraint) { |
||
344 | $constraint->aspectRatio(); |
||
345 | }) |
||
346 | ->save($disk_root.'/'.$variant_file); |
||
347 | } else { |
||
348 | $img->save($disk_root.'/'.$variant_file); |
||
349 | } |
||
350 | |||
351 | $image_variations[$variant] = $public_path.'/'.$variant_file; |
||
352 | |||
353 | } else { |
||
354 | $img->save($disk_root.'/'.$variant_file); |
||
355 | $image_variations['original'] = $variant_file; |
||
356 | } |
||
357 | } |
||
358 | |||
359 | $this->attributes[$attribute_name] = $image_variations['original']; |
||
360 | } |
||
361 | } |
||
362 | |||
406 |
This check marks parameter names that have not been written in camelCase.
In camelCase names are written without any punctuation, the start of each new word being marked by a capital letter. Thus the name database connection string becomes
databaseConnectionString
.