|
|
<?php
namespace App\Http\Controllers;
use App\Http\Requests\FileStoreRequest; use App\Http\Requests\FileUpdateRequest; use App\Http\Resources\FileResource; use App\Image\ImageProcessor; use App\Jobs\FileConversionQueue; use App\Models\File; use Illuminate\Http\Request; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Validator; use Symfony\Component\Console\Input\Input;
use function PHPUnit\Framework\isNull;
class FileController extends Controller { public function show($collection, $uuid, $ext, Request $request, ImageProcessor $imageProcessor) { if ($request->castParams == 'resource') { return new FileResource(app()->file); } if (!is_null(array_intersect(array_keys($request->all()), $this->availableParams))) { $imageProcessor->process(app()->file->getPath(), app()->file->getModifiedPath(), $request->all()); return response()->file(app()->file->getModifiedPath()); } return response()->file(app()->file->getPath()); }
// for local private we didn't talk about it
// public function private($collection, $path)
// {
// Storage::disk('local')->download($path);
// }
public function store(FileStoreRequest $request, ImageProcessor $imageProcessor) { $request->file = $imageProcessor->convertImage($request->file->path(), '/tmp/' . app()->uuid . '.' . app()->collection->ext); if (!is_null(app()->collection->process)) { $request->file = $imageProcessor->process($request->file->path(), '/tmp/' . app()->uuid . '.' . app()->collection->ext, app()->collection->process); }
$fileResource = null; DB::transaction(function () use ($request, &$fileResource) { $uuid = app()->uuid; $fileResource = File::create([ 'uuid' => $uuid, 'original_name' => $request->name, 'public' => $request->public, 'ext' => $request->file->extension(), 'mimetype' => $request->file->getMimeType(), 'width' => getimagesize($request->file)[0], 'height' => getimagesize($request->file)[1], 'file_size' => $request->file->getSize(), 'sort' => $request->file->getSize(), 'alts' => $request->alts, 'description' => $request->description, 'user_id' => auth()->id(), 'ip' => $request->ip(), 'collection_id' => app()->collection->id, 'published_at' => $request->published_at, 'server_path' => '/' . date('y') . '/' . date('m') . '/', ]); if (!app()->collection->tmp_support && app()->collection->count == 1) { File::where('user_id', auth()->id())->delete(); }
$storedFile = Storage::disk(app()->collection->disk)->putFileAs($fileResource->server_path, $request->file, $fileResource->uuid . '.' . app()->collection->ext); if (app()->collection->public) { Storage::disk(app()->collection->disk)->setVisibility($storedFile, 'public'); } }); return new FileResource($fileResource); }
public function update(FileUpdateRequest $request) { app()->file->update($request->all()); return new FileResource(app()->file); }
public function destroy() { if (app()->file->trashed()) { return app()->file->restore(); } return app()->file->delete(); } }
|