handle($id); $owned = $chapter['me']['owned'] ?? false; if (!$owned) { $this->response->redirect([ 'for' => 'web.course.show', 'id' => $chapter['course']['id'], ]); } $service = new CourseChapterListService(); $chapters = $service->handle($chapter['course']['id']); $this->siteSeo->prependTitle([$chapter['title'], $chapter['course']['title']]); $this->siteSeo->setKeywords($chapter['title']); $this->siteSeo->setDescription($chapter['summary']); if ($chapter['model'] == 'vod') { $this->view->pick('chapter/show_vod'); } elseif ($chapter['model'] == 'live') { $this->view->pick('chapter/show_live'); } elseif ($chapter['model'] == 'read') { $this->view->pick('chapter/show_read'); } $this->view->setVar('chapter', $chapter); $this->view->setVar('chapters', $chapters); } /** * @Get("/{id:[0-9]+}/danmu", name="web.chapter.danmu") */ public function danmuAction($id) { $service = new ChapterDanmuListService(); $items = $service->handle($id); return $this->jsonSuccess(['items' => $items]); } /** * @Get("/{id:[0-9]+}/comments", name="web.chapter.comments") */ public function commentsAction($id) { $service = new ChapterCommentListService(); $comments = $service->handle($id); return $this->jsonSuccess(['comments' => $comments]); } /** * @Post("/{id:[0-9]+}/agree", name="web.chapter.agree") */ public function agreeAction($id) { $service = new ChapterAgreeVoteService(); $service->handle($id); return $this->jsonSuccess(); } /** * @Post("/{id:[0-9]+}/oppose", name="web.chapter.oppose") */ public function opposeAction($id) { $service = new ChapterOpposeVoteService(); $service->handle($id); return $this->jsonSuccess(); } /** * @Post("/{id:[0-9]+}/learning", name="web.chapter.learning") */ public function learningAction($id) { $service = new ChapterLearningService(); $service->handle($id); return $this->jsonSuccess(); } }