snipe-it/app/Http/Requests/ImageUploadRequest.php

79 lines
2.4 KiB
PHP
Raw Normal View History

2016-12-27 17:31:53 -08:00
<?php
namespace App\Http\Requests;
use App\Models\SnipeModel;
use Intervention\Image\Facades\Image;
2016-12-27 17:31:53 -08:00
class ImageUploadRequest extends Request
{
/**
* Determine if the user is authorized to make this request.
*
* @return bool
*/
public function authorize()
{
return true;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
2018-04-24 03:12:17 -07:00
'image' => 'mimes:png,gif,jpg,jpeg,svg',
'avatar' => 'mimes:png,gif,jpg,jpeg,svg',
2016-12-27 17:31:53 -08:00
];
}
public function response(array $errors)
{
return $this->redirector->back()->withInput()->withErrors($errors, $this->errorBag);
}
/**
* Handle and store any images attached to request
* @param SnipeModel $item Item the image is associated with
* @param String $path location for uploaded images, defaults to uploads/plural of item type.
* @return SnipeModel Target asset is being checked out to.
*/
public function handleImages($item, $path = null)
{
if ($this->hasFile('image')) {
if (!config('app.lock_passwords')) {
if(is_null($path)) {
$type = strtolower(class_basename(get_class($item)));
$plural = str_plural($type);
$path = public_path('/uploads/'.$plural);
}
$image = $this->file('image');
$ext = $image->getClientOriginalExtension();
$file_name = $type.'-'.str_random(18).'.'.$ext;
if ($image->getClientOriginalExtension()!='svg') {
Image::make($image->getRealPath())->resize(null, 250, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
})->save($path.'/'.$file_name);
} else {
$image->move($path, $file_name);
}
// Remove Current image if exists.
if (($item->image) && (file_exists($path.'/'.$item->image))) {
unlink($path.'/'.$item->image);
}
$item->image = $file_name;
}
} elseif ($this->input('image_delete')=='1') {
$item->image = null;
}
return $item;
}
2016-12-27 17:31:53 -08:00
}