diff --git a/app/Http/Controllers/MediaController.php b/app/Http/Controllers/MediaController.php index 477d8a730..691a24d13 100644 --- a/app/Http/Controllers/MediaController.php +++ b/app/Http/Controllers/MediaController.php @@ -2,7 +2,57 @@ namespace App\Http\Controllers; +use Illuminate\Http\Request; +use Auth, Storage, URL; +use App\Media; +use Image as Intervention; +use App\Jobs\ImageOptimizePipeline\ImageOptimize; + class MediaController extends Controller { - // + public function __construct() + { + $this->middleware('auth'); + } + + public function index(Request $request) + { + //return view('settings.drive.index'); + } + + public function composeUpdate(Request $request, $id) + { + ini_set('memory_limit', '1024M'); + $this->validate($request, [ + 'file' => function() { + return [ + 'required', + 'mimes:' . config('pixelfed.media_types'), + 'max:' . config('pixelfed.max_photo_size'), + ]; + }, + ]); + + $user = Auth::user(); + + $photo = $request->file('file'); + + $media = Media::whereUserId($user->id) + ->whereProfileId($user->profile_id) + ->whereNull('status_id') + ->findOrFail($id); + + $fragments = explode('/', $media->media_path); + $name = last($fragments); + array_pop($fragments); + $dir = implode('/', $fragments); + $path = $photo->storeAs($dir, $name); + $res = []; + $res['url'] = URL::temporarySignedRoute( + 'temp-media', now()->addHours(1), ['profileId' => $media->profile_id, 'mediaId' => $media->id] + ); + ImageOptimize::dispatch($media); + return $res; + + } }