mirror of
https://github.com/pixelfed/pixelfed.git
synced 2024-11-26 16:23:16 +00:00
Update StoryController, orientate story media and strip exif
This commit is contained in:
parent
1662b37cda
commit
07a13fcfed
1 changed files with 27 additions and 17 deletions
|
@ -10,6 +10,7 @@ use App\Story;
|
||||||
use App\StoryView;
|
use App\StoryView;
|
||||||
use App\Services\StoryService;
|
use App\Services\StoryService;
|
||||||
use Cache, Storage;
|
use Cache, Storage;
|
||||||
|
use Image as Intervention;
|
||||||
use App\Services\FollowerService;
|
use App\Services\FollowerService;
|
||||||
|
|
||||||
|
|
||||||
|
@ -41,23 +42,8 @@ class StoryController extends Controller
|
||||||
abort(400, 'You have reached your limit for new Stories today.');
|
abort(400, 'You have reached your limit for new Stories today.');
|
||||||
}
|
}
|
||||||
|
|
||||||
$monthHash = substr(hash('sha1', date('Y').date('m')), 0, 12);
|
|
||||||
$sid = Str::uuid();
|
|
||||||
$rid = Str::random(6).'.'.Str::random(9);
|
|
||||||
|
|
||||||
$photo = $request->file('file');
|
$photo = $request->file('file');
|
||||||
|
$path = $this->storePhoto($photo);
|
||||||
$mimes = explode(',', config('pixelfed.media_types'));
|
|
||||||
if(in_array($photo->getMimeType(), [
|
|
||||||
'image/jpeg',
|
|
||||||
'image/png'
|
|
||||||
]) == false) {
|
|
||||||
abort(400, 'Invalid media type');
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
$storagePath = "public/_esm.t1/{$monthHash}/{$sid}/{$rid}";
|
|
||||||
$path = $photo->store($storagePath);
|
|
||||||
|
|
||||||
$story = new Story();
|
$story = new Story();
|
||||||
$story->duration = 3;
|
$story->duration = 3;
|
||||||
|
@ -77,6 +63,30 @@ class StoryController extends Controller
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
protected function storePhoto($photo)
|
||||||
|
{
|
||||||
|
$monthHash = substr(hash('sha1', date('Y').date('m')), 0, 12);
|
||||||
|
$sid = Str::uuid();
|
||||||
|
$rid = Str::random(6).'.'.Str::random(9);
|
||||||
|
$mimes = explode(',', config('pixelfed.media_types'));
|
||||||
|
if(in_array($photo->getMimeType(), [
|
||||||
|
'image/jpeg',
|
||||||
|
'image/png'
|
||||||
|
]) == false) {
|
||||||
|
abort(400, 'Invalid media type');
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$storagePath = "public/_esm.t1/{$monthHash}/{$sid}/{$rid}";
|
||||||
|
$path = $photo->store($storagePath);
|
||||||
|
$fpath = storage_path('app/' . $path);
|
||||||
|
$img = Intervention::make($fpath);
|
||||||
|
$img->orientate();
|
||||||
|
$img->save($fpath, config('pixelfed.image_quality'));
|
||||||
|
$img->destroy();
|
||||||
|
return $path;
|
||||||
|
}
|
||||||
|
|
||||||
public function apiV1Delete(Request $request, $id)
|
public function apiV1Delete(Request $request, $id)
|
||||||
{
|
{
|
||||||
abort_if(!config('instance.stories.enabled') || !$request->user(), 404);
|
abort_if(!config('instance.stories.enabled') || !$request->user(), 404);
|
||||||
|
@ -107,9 +117,9 @@ class StoryController extends Controller
|
||||||
$groupBy = config('database.default') == 'pgsql' ? 'id' : 'profile_id';
|
$groupBy = config('database.default') == 'pgsql' ? 'id' : 'profile_id';
|
||||||
|
|
||||||
$stories = Story::with('profile')
|
$stories = Story::with('profile')
|
||||||
|
->groupBy($groupBy)
|
||||||
->whereIn('profile_id', $following)
|
->whereIn('profile_id', $following)
|
||||||
->where('expires_at', '>', now())
|
->where('expires_at', '>', now())
|
||||||
->groupBy($groupBy)
|
|
||||||
->orderByDesc('expires_at')
|
->orderByDesc('expires_at')
|
||||||
->take(9)
|
->take(9)
|
||||||
->get()
|
->get()
|
||||||
|
|
Loading…
Reference in a new issue