legacy = $legacy; } public function show(Request $request, $id, $slug = null) { // Keep this controller for legacy comment posting and fallback only. // Canonical artwork page rendering is handled by ArtworkPageController. try { $art = \App\Models\Artwork::find((int) $id); if ($art && $request->isMethod('get')) { $canonicalSlug = Str::slug((string) ($art->slug ?: $art->title)); if ($canonicalSlug === '') { $canonicalSlug = (string) $art->id; } return redirect()->route('art.show', [ 'id' => (int) $art->id, 'slug' => $canonicalSlug, ], 301); } } catch (\Throwable $e) { // keep legacy fallback below } if ($request->isMethod('post') && $request->input('action') === 'store_comment') { if (auth()->check()) { try { DB::table('artwork_comments')->insert([ 'artwork_id' => (int)$id, 'owner_user_id' => (int)($request->user()->id ?? 0), 'user_id' => (int)$request->user()->id, 'date' => now()->toDateString(), 'time' => now()->toTimeString(), 'description' => (string)$request->input('comment_text'), ]); } catch (\Throwable $e) { // ignore DB errors for now } } return redirect()->back(); } $data = $this->legacy->getArtwork((int) $id); if (! $data || empty($data['artwork'])) { return view('shared.placeholder', ['title' => 'Artwork Not Found']); } try { $comments = DB::table('artwork_comments as t1') ->rightJoin('users as t2', 't1.user_id', '=', 't2.user_id') ->select('t1.description', 't1.date', 't1.time', 't2.uname', 't2.signature', 't2.icon', 't2.user_id') ->where('t1.artwork_id', (int)$id) ->where('t1.user_id', '>', 0) ->orderBy('t1.comment_id') ->get(); } catch (\Throwable $e) { $comments = collect(); } $data['comments'] = $comments; return view('web.art', $data); } }