Files
core/app/Http/Controllers/Admin/FileManager/UploadFile.php
T

103 lines
2.6 KiB
PHP

<?php
namespace App\Http\Controllers\Admin\FileManager;
use App\CMS\Helpers\Path;
use App\CMS\Helpers\Template;
use App\Http\Controllers\Admin\Controller;
use App\Http\Requests\Request;
use App\Models\FileManager\File;
use Illuminate\Support\Facades\Input;
use Symfony\Component\HttpFoundation\File\Exception\FileException;
class UploadFile extends Controller
{
/**
* @var File
*/
private $file;
function __construct(File $file)
{
parent::__construct();
$this->file = $file;
}
/**
* Uploads any file
*
* @param Request $request
*
* @return \Illuminate\Http\JsonResponse|\Illuminate\Http\RedirectResponse
*/
public function store(Request $request)
{
if (Input::get('CKEditor')) {
return $this->ckEditorUpload($request);
} else {
return $this->internalUpload($request);
}
}
/**
* Upload file using internal file uploader
*
* @param Request $request
*
* @return \Illuminate\Http\RedirectResponse
*/
private function internalUpload(Request $request)
{
try {
$uploadedFiles = [];
$files = $request->all()['files'];
$successfullUploads = 0;
foreach ($files as $file) {
$uploadedFile = $this->file->upload($file, $request);
$successfullUploads++;
$uploadedFiles[] = $uploadedFile;
}
return redirect()
->back()
->with('success', trans_choice('admin/fileManager.uploadSuccessfull', $successfullUploads));
} catch (FileException $e) {
return $this->invalidUpload('invalidFile');
}
}
/**
* Upload file using CKEditor
*
* @param Request $request
*
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
private function ckEditorUpload(Request $request)
{
$file = $request->file('upload');
$uploadedFile = $this->file->upload($file, $request);
return view('admin.snippets.ckEditorUploaded', [
'ckEditor' => Input::get('CKEditor'),
'funcNumber' => Input::get('CKEditorFuncNum'),
'fileUrl' => Path::upload($uploadedFile['filename'])
]);
}
/**
* Send message and redirect to upload.overview when upload failed
*
* @param $message
*
* @return \Illuminate\Http\RedirectResponse
*/
protected function invalidUpload($message)
{
return redirect()
->route('upload.overview')
->with('error', trans('admin/fileManager.' . $message));
}
}