protected function handle() { $session = $this->getSession(); $thread_id = $this->threadId; $thread = ThreadModel::getThread($thread_id); if (!$thread) { $session->addFlash('error', '帖子不存在'); return new RedirectResponse($this->generateUrl('admin_forum_thread_manage')); } $request = $this->getRequest(); $page = $request->query->get('page'); if (!$page) { $page = 1; } $size = 10; $posts_pager = PostModel::listForumPosts($page, $size, function (QueryBuilder $qb) use($thread) { /** @var ThreadModel $thread */ $qb->andWhere($qb->expr()->eq('forum_id', ':forum_id'))->setParameter(':forum_id', $thread->forumId); $qb->andWhere($qb->expr()->eq('thread_id', ':thread_id'))->setParameter(':thread_id', $thread->threadId); $qb->addOrderBy('create_timestamp'); }); $data = $posts_pager->getData(); foreach ($data as $key => $post) { if ($post['reply_post_id']) { $reply_post = PostModel::getPost($post['reply_post_id']); if ($reply_post) { $data[$key]['reply_post'] = $reply_post->toArray(); } } } $posts_pager->setData($data); return $this->render('thread/thread-view.html.twig', array('thread' => $thread, 'posts_pager' => $posts_pager)); }
public function __invoke($thread_id) { // 主题 $thread = ThreadModel::getThread($thread_id); if (!$thread) { $session = $this->getSession(); $session->addFlash('error', '帖子主题不存在'); return new RedirectResponse($this->getRequest()->server->get('HTTP_REFERER')); } $forum = ForumModel::getForum($thread->forumId); if (!$forum) { $session = $this->getSession(); $session->addFlash('error', '论坛版块不存在'); return new RedirectResponse($this->getRequest()->server->get('HTTP_REFERER')); } // 增加浏览数 $thread->views += 1; $thread = ThreadModel::saveThread($thread); $request = $this->getRequest(); $page = $request->query->get('page'); if (!$page) { $page = 1; } $size = 10; $posts_pager = PostModel::listForumPosts($page, $size, function (QueryBuilder $qb) use($thread) { /** @var ThreadModel $thread */ $qb->andWhere($qb->expr()->eq('forum_id', ':forum_id'))->setParameter(':forum_id', $thread->forumId); $qb->andWhere($qb->expr()->eq('thread_id', ':thread_id'))->setParameter(':thread_id', $thread->threadId); $qb->addOrderBy('create_timestamp'); }); $data = $posts_pager->getData(); foreach ($data as $key => $post) { if ($post['reply_post_id']) { $reply_post = PostModel::getPost($post['reply_post_id']); if ($reply_post) { $data[$key]['reply_post'] = $reply_post->toArray(); } } } $posts_pager->setData($data); return $this->render('thread/view.html.twig', array('forum' => $forum, 'thread' => $thread, 'posts_pager' => $posts_pager)); }