Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- namespace App\Http\Controllers;
- use App\Models\Article;
- use Illuminate\Http\Request;
- use Illuminate\Support\Facades\Auth;
- use Illuminate\Support\Facades\Storage;
- use Illuminate\Support\Facades\Log;
- use Intervention\Image\Facades\Image;
- class ArticleController extends Controller
- {
- public function update(Request $request, $slug)
- {
- $request->validate([
- 'title_en' => 'required_without:title_cs',
- 'content_en' => 'required_without:content_cs',
- 'title_cs' => 'required_without:title_en',
- 'content_cs' => 'required_without:content_en',
- 'background_image' => 'image|mimes:jpeg,png,jpg,gif|max:2048',
- ]);
- $article = Article::where('slug', $slug)->firstOrFail();
- $imagePath = $article->background_image;
- $thumbnailPath = $article->thumbnail_image;
- if ($request->hasFile('background_image')) {
- try {
- // Delete the old image and thumbnail if exists
- if ($article->background_image) {
- Storage::disk('public')->delete($article->background_image);
- Storage::disk('public')->delete($article->thumbnail_image);
- }
- $image = $request->file('background_image');
- $imagePath = $image->store('uploads/images', 'public');
- // Resize image to 1920px width
- $resizedImage = Image::make($image)->resize(1920, null, function ($constraint) {
- $constraint->aspectRatio();
- $constraint->upsize();
- });
- $resizedImage->save(storage_path('app/public/' . $imagePath));
- // Create thumbnail
- $thumbnailPath = str_replace('.', '_thumbnail.', $imagePath);
- $thumbnail = Image::make($image)->resize(256, null, function ($constraint) {
- $constraint->aspectRatio();
- $constraint->upsize();
- });
- $thumbnail->save(storage_path('app/public/' . $thumbnailPath));
- Log::info('Image uploaded and resized successfully: ' . $imagePath);
- } catch (\Exception $e) {
- Log::error('Image upload error: ' . $e->getMessage());
- }
- }
- $article->update([
- 'title_en' => $request->title_en,
- 'content_en' => $request->content_en,
- 'title_cs' => $request->title_cs,
- 'content_cs' => $request->content_cs,
- 'slug' => \Str::slug($request->title_en ?? $request->title_cs),
- 'author_id' => Auth::id(),
- 'background_image' => $imagePath,
- 'thumbnail_image' => $thumbnailPath,
- 'edited_on' => now(),
- ]);
- return redirect()->route('articles.index');
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement