Update StoryComposeController.php

Fix non-local storage bug
pull/6197/head
Daniel Supernault 1 month ago
parent 02455129a5
commit 03d01d296f
No known key found for this signature in database
GPG Key ID: 23740873EE6F76A1

@ -75,6 +75,9 @@ class StoryComposeController extends Controller
$photo = $request->file('file');
$path = $this->storePhoto($photo, $user);
$localFs = config('filesystems.default') === 'local';
$disk = $localFs ? Storage::disk('local') : Storage::disk(config('filesystems.default'));
$story = new Story;
$story->duration = 3;
$story->profile_id = $user->profile_id;
@ -93,38 +96,37 @@ class StoryComposeController extends Controller
'code' => 200,
'msg' => 'Successfully added',
'media_id' => (string) $story->id,
'media_url' => url(Storage::url($url)).'?v='.time(),
'media_url' => $localFs ? url(Storage::url($url)).'?v='.time() : $disk->url($url).'?v='.time(),
'media_type' => $story->type,
];
if ($story->type === 'video') {
$localFs = config('filesystems.default') === 'local';
if ($localFs) {
$videoPath = storage_path('app/'.$path);
} else {
$disk = Storage::disk(config('filesystems.default'));
$tempPath = sys_get_temp_dir().'/'.Str::random(40).'.mp4';
file_put_contents($tempPath, $disk->get($path));
$videoPath = $tempPath;
}
$video = FFMpeg::open($videoPath);
$duration = $video->getDurationInSeconds();
$res['media_duration'] = $duration;
if (! $localFs && isset($tempPath) && file_exists($tempPath)) {
unlink($tempPath);
}
try {
$video = FFMpeg::open($videoPath);
$duration = $video->getDurationInSeconds();
$res['media_duration'] = $duration;
if ($duration > 500) {
$disk = $localFs ? Storage::disk('local') : Storage::disk(config('filesystems.default'));
$disk->delete($story->path);
$story->delete();
if ($duration > 500) {
$disk->delete($story->path);
$story->delete();
return response()->json([
'message' => 'Video duration cannot exceed 60 seconds',
], 422);
return response()->json([
'message' => 'Video duration cannot exceed 60 seconds',
], 422);
}
} finally {
if (! $localFs && isset($tempPath) && file_exists($tempPath)) {
unlink($tempPath);
}
}
}
@ -161,7 +163,7 @@ class StoryComposeController extends Controller
new PngEncoder;
$encoded = $img->encode($encoder);
file_put_contents($fpath, $encoded);
file_put_contents($fpath, (string) $encoded);
} else {
$disk = Storage::disk(config('filesystems.default'));
@ -175,7 +177,7 @@ class StoryComposeController extends Controller
$encoded = $img->encode($encoder);
$disk->put($path, $encoded);
$disk->put($path, (string) $encoded);
}
}
@ -220,19 +222,15 @@ class StoryComposeController extends Controller
}
if ($story->type === 'photo') {
$quality = config_cache('pixelfed.image_quality');
if ($localFs) {
$path = storage_path('app/'.$story->path);
$extension = pathinfo($path, PATHINFO_EXTENSION);
$img = $this->imageManager->read($path);
$img = $img->crop($width, $height, $x, $y);
$img = $img->resize(1080, 1920, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
});
$quality = config_cache('pixelfed.image_quality');
$extension = pathinfo($path, PATHINFO_EXTENSION);
$img = $img->coverDown(1080, 1920);
if (in_array(strtolower($extension), ['jpg', 'jpeg'])) {
$encoder = new JpegEncoder($quality);
@ -241,22 +239,16 @@ class StoryComposeController extends Controller
}
$encoded = $img->encode($encoder);
file_put_contents($path, $encoded);
file_put_contents($path, (string) $encoded);
} else {
$disk = Storage::disk(config('filesystems.default'));
$extension = pathinfo($story->path, PATHINFO_EXTENSION);
$fileContent = $disk->get($story->path);
$img = $this->imageManager->read($fileContent);
$img = $img->crop($width, $height, $x, $y);
$img = $img->resize(1080, 1920, function ($constraint) {
$constraint->aspectRatio();
$constraint->upsize();
});
$quality = config_cache('pixelfed.image_quality');
$extension = pathinfo($story->path, PATHINFO_EXTENSION);
$img = $img->coverDown(1080, 1920);
if (in_array(strtolower($extension), ['jpg', 'jpeg'])) {
$encoder = new JpegEncoder($quality);
@ -266,7 +258,7 @@ class StoryComposeController extends Controller
$encoded = $img->encode($encoder);
$disk->put($story->path, $encoded);
$disk->put($story->path, (string) $encoded);
}
}
@ -533,6 +525,11 @@ class StoryComposeController extends Controller
]);
$status->save();
$localFs = config('filesystems.default') === 'local';
$mediaUrl = $localFs
? url(Storage::url($story->path))
: Storage::disk(config('filesystems.default'))->url($story->path);
$dm = new DirectMessage;
$dm->to_id = $story->profile_id;
$dm->from_id = $pid;
@ -542,7 +539,7 @@ class StoryComposeController extends Controller
'story_username' => $story->profile->username,
'story_actor_username' => $request->user()->username,
'story_id' => $story->id,
'story_media_url' => url(Storage::url($story->path)),
'story_media_url' => $mediaUrl,
'reaction' => $text,
]);
$dm->save();
@ -605,6 +602,11 @@ class StoryComposeController extends Controller
]);
$status->save();
$localFs = config('filesystems.default') === 'local';
$mediaUrl = $localFs
? url(Storage::url($story->path))
: Storage::disk(config('filesystems.default'))->url($story->path);
$dm = new DirectMessage;
$dm->to_id = $story->profile_id;
$dm->from_id = $pid;
@ -614,7 +616,7 @@ class StoryComposeController extends Controller
'story_username' => $story->profile->username,
'story_actor_username' => $request->user()->username,
'story_id' => $story->id,
'story_media_url' => url(Storage::url($story->path)),
'story_media_url' => $mediaUrl,
'caption' => $text,
]);
$dm->save();

Loading…
Cancel
Save