forked from mirror/pixelfed
57 lines
1.2 KiB
PHP
57 lines
1.2 KiB
PHP
<?php
|
|
|
|
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)
|
|
{
|
|
$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;
|
|
|
|
}
|
|
}
|