diff --git a/app/Http/Controllers/ForumController.php b/app/Http/Controllers/ForumController.php new file mode 100644 index 00000000..bbcb84ad --- /dev/null +++ b/app/Http/Controllers/ForumController.php @@ -0,0 +1,93 @@ +forid; + $query = Forum::query()->orderBy("sort", "asc")->with("moderators"); + if ($forId) { + $query->where("forid", $forId); + } + $list = $query->get(); + $resource = ForumResource::collection($list); + return $this->success($resource); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + // + } + + /** + * Display the specified resource. + * + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function show(OverForum $overForum) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function edit(OverForum $overForum) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function update(Request $request, OverForum $overForum) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function destroy(OverForum $overForum) + { + // + } +} diff --git a/app/Http/Controllers/OauthController.php b/app/Http/Controllers/OauthController.php index 8464b0d9..b44c560f 100644 --- a/app/Http/Controllers/OauthController.php +++ b/app/Http/Controllers/OauthController.php @@ -60,6 +60,6 @@ class OauthController extends Controller { $user = Auth::user(); $resource = new UserResource($user); - return $this->success($resource); + return $resource->response()->getData(true); } } diff --git a/app/Http/Controllers/OverForumController.php b/app/Http/Controllers/OverForumController.php new file mode 100644 index 00000000..ac81c04a --- /dev/null +++ b/app/Http/Controllers/OverForumController.php @@ -0,0 +1,88 @@ +orderBy("sort", "asc")->get(); + $resource = OverForumResource::collection($list); + return $this->success($resource); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + // + } + + /** + * Display the specified resource. + * + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function show(OverForum $overForum) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function edit(OverForum $overForum) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function update(Request $request, OverForum $overForum) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function destroy(OverForum $overForum) + { + // + } +} diff --git a/app/Http/Controllers/TopicController.php b/app/Http/Controllers/TopicController.php new file mode 100644 index 00000000..4a1a3bbc --- /dev/null +++ b/app/Http/Controllers/TopicController.php @@ -0,0 +1,98 @@ +forum_id; + $query = Topic::query() + ->orderBy("sticky", "desc") + ->with("user", "firstPost", "lastPost") + ; + if ($forumId) { + $query->where("forumid", $forumId); + } + $list = $query->get(); + $resource = TopicResource::collection($list); + return $this->success($resource); + } + + /** + * Show the form for creating a new resource. + * + * @return \Illuminate\Http\Response + */ + public function create() + { + // + } + + /** + * Store a newly created resource in storage. + * + * @param \Illuminate\Http\Request $request + * @return \Illuminate\Http\Response + */ + public function store(Request $request) + { + // + } + + /** + * Display the specified resource. + * + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function show(OverForum $overForum) + { + // + } + + /** + * Show the form for editing the specified resource. + * + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function edit(OverForum $overForum) + { + // + } + + /** + * Update the specified resource in storage. + * + * @param \Illuminate\Http\Request $request + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function update(Request $request, OverForum $overForum) + { + // + } + + /** + * Remove the specified resource from storage. + * + * @param \App\Models\OverForum $overForum + * @return \Illuminate\Http\Response + */ + public function destroy(OverForum $overForum) + { + // + } +} diff --git a/app/Http/Resources/ForumResource.php b/app/Http/Resources/ForumResource.php new file mode 100644 index 00000000..705454b3 --- /dev/null +++ b/app/Http/Resources/ForumResource.php @@ -0,0 +1,26 @@ + $this->id, + 'name' => $this->name, + 'description' => $this->description, + 'postcount' => $this->postcount, + 'topiccount' => $this->topiccount, + 'moderators' => UserResource::collection($this->whenLoaded("moderators")), + ]; + } +} diff --git a/app/Http/Resources/OverForumResource.php b/app/Http/Resources/OverForumResource.php new file mode 100644 index 00000000..3bf3dee8 --- /dev/null +++ b/app/Http/Resources/OverForumResource.php @@ -0,0 +1,23 @@ + $this->id, + 'name' => $this->name, + 'description' => $this->description, + ]; + } +} diff --git a/app/Http/Resources/PostResource.php b/app/Http/Resources/PostResource.php new file mode 100644 index 00000000..40b58113 --- /dev/null +++ b/app/Http/Resources/PostResource.php @@ -0,0 +1,24 @@ + $this->id, + 'added' => format_datetime($this->added), + 'body' => $this->body, + 'user' => new UserResource($this->whenLoaded('user')), + ]; + } +} diff --git a/app/Http/Resources/TopicResource.php b/app/Http/Resources/TopicResource.php new file mode 100644 index 00000000..4219d3b6 --- /dev/null +++ b/app/Http/Resources/TopicResource.php @@ -0,0 +1,30 @@ + $this->id, + 'subject' => $this->subject, + 'locked' => $this->locked, + 'forumid' => $this->forumid, + 'sticky' => $this->sticky, + 'hlcolor' => $this->hlcolor, + 'views' => $this->views, + 'user' => new UserResource($this->whenLoaded('user')), + 'lastPost' => new PostResource($this->whenLoaded('lastPost')), + 'firstPost' => new PostResource($this->whenLoaded('firstPost')), + ]; + } +} diff --git a/app/Http/Resources/UserResource.php b/app/Http/Resources/UserResource.php index 012741f5..f5b1ad87 100644 --- a/app/Http/Resources/UserResource.php +++ b/app/Http/Resources/UserResource.php @@ -54,6 +54,9 @@ class UserResource extends JsonResource $out['completed_torrents_count'] = $this->completed_torrents_count; $out['incomplete_torrents_count'] = $this->incomplete_torrents_count; } + if ($request->routeIs("oauth.user_info")) { + $out['name'] = $this->username; + } if (nexus()->isPlatformAdmin() && $request->routeIs('users.show')) { $out['two_step_secret'] = $this->two_step_secret; diff --git a/app/Models/Forum.php b/app/Models/Forum.php index 057fb8ba..50473d25 100644 --- a/app/Models/Forum.php +++ b/app/Models/Forum.php @@ -7,4 +7,8 @@ class Forum extends NexusModel { protected $fillable = ['sort', 'name', 'description', 'minclassread', 'minclasswrite', 'postcount', 'topiccount', 'minclasscreate', 'forid']; + public function moderators() + { + return $this->belongsToMany(User::class, "forummods", "forumid", "userid"); + } } diff --git a/app/Models/OverForum.php b/app/Models/OverForum.php new file mode 100644 index 00000000..7f662fcd --- /dev/null +++ b/app/Models/OverForum.php @@ -0,0 +1,13 @@ +belongsTo(Forum::class. 'forumid'); } + + public function firstPost() + { + return $this->belongsTo(Post::class, "firstpost"); + } + + public function lastPost() + { + return $this->belongsTo(Post::class, "lastpost"); + } } diff --git a/include/constants.php b/include/constants.php index fa62b6d0..6d307ccd 100644 --- a/include/constants.php +++ b/include/constants.php @@ -1,6 +1,6 @@ ['auth:sanctum', 'locale']], function () { Route::post('polls-vote', [\App\Http\Controllers\PollController::class, 'vote']); Route::resource('rewards', \App\Http\Controllers\RewardController::class); Route::get('notifications', [\App\Http\Controllers\ToolController::class, 'notifications']); + Route::resource('over-forums', \App\Http\Controllers\OverForumController::class); + Route::resource('forums', \App\Http\Controllers\ForumController::class); + Route::resource('topics', \App\Http\Controllers\TopicController::class); }); Route::group(['middleware' => ['admin']], function () {