user(); $tab = $request->query('tab', 'articles'); $canArticles = $user->canPerm('articles.moderate'); $canForum = $user->canPerm('forum.moderate'); if (! $canArticles && ! $canForum) { abort(403, '无审核权限'); } if ($tab === 'threads' && ! $canForum) { $tab = $canArticles ? 'articles' : 'replies'; } if ($tab === 'replies' && ! $canForum) { $tab = $canArticles ? 'articles' : 'threads'; } $articles = $canArticles ? Article::where('status', 'pending')->with('user', 'category')->orderByDesc('created_at')->paginate(10, ['*'], 'ap') : null; $threads = $canForum ? ForumThread::where('status', 'pending')->with('user', 'board')->orderByDesc('created_at')->paginate(10, ['*'], 'tp') : null; $replies = $canForum ? ForumReply::where('status', 'pending')->with('user', 'thread')->orderByDesc('created_at')->paginate(10, ['*'], 'rp') : null; return view('admin.moderation.index', compact('tab', 'articles', 'threads', 'replies', 'canArticles', 'canForum')); } public function approveArticle(Article $article) { $article->update([ 'status' => 'approved', 'published_at' => $article->published_at ?? now(), ]); return back()->with('success', "已通过文章《{$article->title}》"); } public function rejectArticle(Article $article) { $article->update(['status' => 'rejected']); return back()->with('success', "已驳回文章《{$article->title}》"); } public function approveThread(ForumThread $thread) { $thread->update(['status' => ForumThread::STATUS_APPROVED]); return back()->with('success', "已通过帖子《{$thread->title}》"); } public function rejectThread(ForumThread $thread) { $thread->update(['status' => ForumThread::STATUS_REJECTED]); return back()->with('success', "已驳回帖子《{$thread->title}》"); } public function approveReply(ForumReply $reply) { $reply->update(['status' => ForumReply::STATUS_APPROVED]); return back()->with('success', '已通过该回复'); } public function rejectReply(ForumReply $reply) { $reply->update(['status' => ForumReply::STATUS_REJECTED]); return back()->with('success', '已驳回该回复'); } }